(57)【特許請求の範囲】
【請求項１】
少なくとも１以上のプログラムモジュールにより構成されるプログラムをプログラム管理装置により管理すると共に、プログラムモジュールの更新が行われる際に、オペレータによりプログラムのバージョン及び更新対象とされるプログラムモジュールが指定されるプログラム管理方法であって、
前記プログラム管理装置が、
前記プログラムモジュールを管理するための、プログラムの各バージョン毎の管理情報として、
当該バージョンのプログラムで使用されるプログラムモジュールのバージョン番号と、前記プログラムの各バージョン間における前記プログラムモジュールの共用関係であって、
各バージョンのプログラムで使用する各プログラムモジュール毎に、
各バージョンのプログラムが当該プログラムモジュールの共用元であるのか、共用先であるのかを示すと共に、
共用元である場合は、共用先のプログラムのバージョンの番号を含み、
共用先である場合は、共用元のプログラムのバージョンの番号を含む共用関係とを含む管理情報を格納する管理情報格納手段と、
前記プログラムモジュールのプログラムファイルのうち、各バージョンのプログラムにおいて共通に使用される同一のプログラムファイルを前記管理情報のプログラムモジュールのバージョン番号と共用関係とに基づき格納するファイル格納手段と、
前記オペレータにより指定されたプログラムモジュールに関する、前記管理情報格納手段に格納されているバージョン番号に基づいて、前記ファイル格納手段に格納されている当該プログラムモジュールのプログラムファイルを指定する指定手段と、
前記共用関係に基づいて、前記指定手段により指定された更新対象とされるプログラムモジュールが、前記オペレータが指定したバージョンのプログラムが共用元としているプログラムモジュールであるのか共用先としているプログラムモジュールであるのかを決定する決定手段とを備え、
前記プログラム管理装置が備える管理情報処理手段が、
前記プログラムモジュールが更新された場合に、
前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用元であると決定された場合は、
更新対象とされたプログラムモジュールを共用していた各バージョンのプログラムで、該更新対象とされたプログラムモジュールの代わりに更新後のプログラムモジュールを共用するために、
前記更新対象とされたプログラムモジュールのバージョン番号の系列に属し、かつ、当該バージョン系列で使用されておらず当該バージョン番号と異なるように決定されたプログラムモジュールのバージョン番号を作成して、各バージョンのプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納する第１の管理情報処理ステップと、
前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用先であると決定された場合は、
更新後のプログラムモジュールを、更新対象とされたプログラムモジュールの代わりに共用先のプログラムにおいて使用するために、未だ使用されていない新たな系列のバージョン番号を作成して、該共用先のプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納し、
前記共用元のプログラムのバージョンの、当該更新対象とされたプログラムモジュールの共用関係から、共用先とされるプログラムのバージョンの番号を削除し、
前記共用先のプログラムのバージョンの、更新後のプログラムモジュールの共用関係の共用元をなしとする第２の管理情報処理ステップと、
前記プログラム管理装置が備える格納処理手段が、
前記第１の管理情報処理ステップにおける、前記プログラムモジュールのバージョン番号の作成処理の後、又は、
前記第２の管理情報処理ステップにおける、前記未だ使用されていない新たな系列のバージョン番号の作成処理の後に、前記更新後のプログラムモジュールのプログラムファイルを各バージョン毎に前記ファイル格納手段に格納する格納処理ステップとを備えることを特徴とするプログラム管理方法。
【請求項２】
前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルであることを特徴とする請求項１記載のプログラム管理方法。
【請求項３】
前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルであることを特徴とする請求項１記載のプログラム管理方法。
【請求項４】
前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルと、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルとが混在したファイルであることを特徴とする請求項１記載のプログラム管理方法。
【請求項５】
前記プログラム管理装置が備えるファイル編集手段が、
プログラムモジュールの更新に先立ち、オブジェクトプログラムをソースプログラムに逆変換する逆変換ステップと、
更新後のソースプログラムをオブジェクトプログラムに変換する変換ステップとを備えることを特徴とする請求項３又は４に記載のプログラム管理方法。
【請求項６】
少なくとも１以上のプログラムモジュールにより構成されるプログラムを管理すると共に、プログラムモジュールの更新が行われる際に、オペレータによりプログラムのバージョン及び更新対象とされるプログラムモジュールが指定されるプログラム管理装置であって、
前記プログラムモジュールを管理するための、プログラムの各バージョン毎の管理情報として、
当該バージョンのプログラムで使用されるプログラムモジュールのバージョン番号と、
前記プログラムの各バージョン間における前記プログラムモジュールの共用関係であって、
各バージョンのプログラムで使用する各プログラムモジュール毎に、
各バージョンのプログラムが当該プログラムモジュールの共用元であるのか、共用先であるのかを示すと共に、
共用元である場合は、共用先のプログラムのバージョンの番号を含み、
共用先である場合は、共用元のプログラムのバージョンの番号を含む共用関係とを含む管理情報を格納する管理情報格納手段と、
前記プログラムモジュールのプログラムファイルのうち、各バージョンのプログラムにおいて共通に使用される同一のプログラムファイルを前記管理情報のプログラムモジュールのバージョン番号と共用関係とに基づき格納するファイル格納手段と、
前記オペレータにより指定されたプログラムモジュールに関する、前記管理情報格納手段に格納されているバージョン番号に基づいて、前記ファイル格納手段に格納されている当該プログラムモジュールのプログラムファイルを指定する指定手段と、
前記共用関係に基づいて、前記指定手段により指定された更新対象とされるプログラムモジュールが、前記オペレータが指定したバージョンのプログラムが共用元としているプログラムモジュールであるのか共用先としているプログラムモジュールであるのかを決定する決定手段と、
前記プログラムモジュールが更新された場合に、
前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用元であると決定された場合は、
更新対象とされたプログラムモジュールを共用していた各バージョンのプログラムで、該更新対象とされたプログラムモジュールの代わりに更新後のプログラムモジュールを共用するために、
前記更新対象とされたプログラムモジュールのバージョン番号の系列に属し、かつ、当該バージョン系列で使用されておらず当該バージョン番号と異なるように決定されたプログラムモジュールのバージョン番号を作成して、各バージョンのプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納し、
前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用先であると決定された場合は、
更新後のプログラムモジュールを、更新対象とされたプログラムモジュールの代わりに共用先のプログラムにおいて使用するために、未だ使用されていない新たな系列のバージョン番号を作成して、該共用先のプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納し、
前記共用元のプログラムのバージョンの、当該更新対象とされたプログラムモジュールの共用関係から、共用先とされるプログラムのバージョンの番号を削除し、
前記共用先のプログラムのバージョンの、更新後のプログラムモジュールの共用関係の共用元をなしとする管理情報処理手段と、
前記管理情報処理手段による、前記プログラムモジュールのバージョン番号の作成処理の後、又は、前記未だ使用されていない新たな系列のバージョン番号の作成処理の後に、前記更新後のプログラムモジュールのプログラムファイルを各バージョン毎に前記ファイル格納手段に格納する格納処理手段とを備えることを特徴とするプログラム管理装置。
【請求項７】
前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルであることを特徴とする請求項６記載のプログラム管理装置。
【請求項８】
前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルであることを特徴とする請求項６記載のプログラム管理装置。
【請求項９】
前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルと、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルとが混在したファイルであることを特徴とする請求項６記載のプログラム管理装置。
【請求項１０】
プログラムモジュールの更新に先立ち、オブジェクトプログラムをソースプログラムに逆変換し、
更新後のソースプログラムをオブジェクトプログラムに変換するファイル編集手段を備えることを特徴とする請求項８又は９に記載のプログラム管理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、開発および保守が並行して行われる複数のバージョンを構成するプログラムの管理に係り、特に各バージョンのプログラムがそれぞれ複数のプログラムモジュールで構成される場合の該プログラムモジュールのプログラムファイルを管理するためのプログラム管理方法および装置に関する。
【０００２】
【従来の技術】
プログラムが複数のプログラムモジュールで構成され、このようなプログラムに複数のバージョンが存在する場合、各バージョンのプログラムは、そのプログラムを構成するプログラムモジュールの一部または全部が相違することになる。なお、ここでバージョンという表現は、一般に、プログラムの改訂または変更に係る世代を意味する表現、例えばバージョン、レベル、リビジョンおよびリリース等の全てを代表する表現として用いるものとする。通常、バージョン間におけるプログラムモジュールの相違は、そのプログラムを構成するプログラムモジュールの一部であり、そのようなプログラムモジュールの相違点は、プログラムモジュールのバージョンが相違することが多い。もちろん、プログラムのエンハンスの仕方によっては、バージョンによって、使用するプログラムモジュールの少なくとも一部を入れ替えたり、バージョンによって、使用するプログラムモジュールを追加または削除したりすることもある。
【０００３】
このような複数のプログラムモジュールで構成されるプログラムにおいて、例えば一方では旧バージョンの保守を行いながら他方では当該プログラムのエンハンス作業を行う場合のように、開発および保守作業を並行して行う必要のある複数のバージョンが存在することがある。
【０００４】
このような場合には、前記複数のバージョンのプログラムを構成する全てのプログラムモジュールに対応するソースプログラムのプログラムファイル、つまりソースファイル、を保存しておいて、必要に応じて、それらのプログラムファイルから所要のバージョンのプログラムのオブジェクトファイルを生成し、所要のバージョンのプログラムの保守およびエンハンス作業を行うことになる。
【０００５】
【発明が解決しようとする課題】
このように開発および保守作業を並行して行う必要のあるバージョンが複数存在する場合、従来のシステムにおけるプログラムの構成管理ツールでは、各バージョン毎に、そのプログラムを構成する全てのソースファイル群を格納するための保管部を用意する必要がある。このような保管部には、複数のレベルのソースファイルを管理するための履歴管理ファイルを用いる。このような履歴管理ファイルの典型としては、例えばＵＮＩＸシステムで標準的に使用されるｓｃｃｓ（source code control system）がある。したがって、複数のバージョンが存在する場合には、前述の保管部を複数個用意することになり、複数のバージョンに共通のプログラムモジュールがあっても、そのようなプログラムモジュールのソースファイルは各バージョン毎に重複して格納されることになる。
【０００６】
この場合、仮に複数のバージョン間で全く中身の変わらない共通のプログラムモジュールのソースファイルがある場合には、次のような問題を生じる。
(a) プログラムモジュールが共通であっても、そのようなプログラムモジュールの変更作業を行う場合には、各バージョンのプログラムモジュールのソースファイル毎に変更作業が必要となる。
【０００７】
(b) 共通のプログラムモジュールの変更作業を行う場合には、共通のプログラムモジュールを使用する全てのバージョンのソースファイルに対して、確実に変更作業を行ったかどうかの管理が必要となる。
【０００８】
(c) 複数のバージョン間で大部分のプログラムモジュールが共通である場合には、全てのソースファイルを収納するために必要な記憶媒体のスペース、例えばディスクスペースが、そのバージョン数ぶん、つまりほぼ２倍以上必要となる。
【０００９】
なお、複数世代にわたるソースプログラムを効率よく管理する手法として、例えば特開昭６３−３７４２７号公報に示された手法がある。特開昭６３−３７４２７号公報には、個々のソースプログラムに、ソースプログラムの作成／更新によって発生する各世代毎の情報を管理するための世代制御レコードと、ソースプログラムの中の各レコード毎にどの世代に属するかを管理するための世代管理フィールドとを設定して、前記ソースプログラムを格納することが示されている。この特開昭６３−３７４２７号公報に示された手法では、同一のソースプログラムについて、複数世代のソースプログラムを格納する場合、世代間で変更のないレコードは共有し、後続の世代については、世代間で変更されたレコードのみを格納することにより、記憶媒体の格納スペースを低減することができる。
【００１０】
しかしながら、この特開昭６３−３７４２７号公報に示された手法は、同一のソースプログラムについて、複数世代のソースプログラムを格納する場合の記憶媒体の格納スペースの低減するものであり、複数のプログラムモジュールからなるプログラムの複数バージョンについてのプログラムモジュールの管理を改善するものではない。
【００１１】
本発明は、上述した事情に鑑みてなされたもので、複数バージョン間で共通のプログラムモジュールが含まれるプログラムに対し、プログラムのバージョンとプログラムモジュールとの対応関係の管理を行って、前記共通のプログラムモジュールの物理的な実体を単一化し、複数のバージョンで同一のプログラムモジュールを共有させるとともに、プログラムモジュールの変更時には、そのプログラムモジュールのバージョンおよび前記対応関係の管理情報を適切に修正することにより、プログラムを構成するプログラムモジュールを格納する記憶媒体の格納スペースを低減し、プログラムモジュールの変更時の作業を簡略化することを可能とするプログラム管理方法および装置を提供することを目的としている。
【００１２】
【課題を解決するための手段】
本発明のプログラム管理方法および装置は、次のような構成により上述の目的を達成する。
【００１３】
本発明に係るプログラム管理方法は、少なくとも１以上のプログラムモジュールにより構成されるプログラムをプログラム管理装置により管理すると共に、プログラムモジュールの更新が行われる際に、オペレータによりプログラムのバージョン及び更新対象とされるプログラムモジュールが指定されるプログラム管理方法であって、前記プログラム管理装置が、前記プログラムモジュールを管理するための、プログラムの各バージョン毎の管理情報として、当該バージョンのプログラムで使用されるプログラムモジュールのバージョン番号と、前記プログラムの各バージョン間における前記プログラムモジュールの共用関係であって、各バージョンのプログラムで使用する各プログラムモジュール毎に、各バージョンのプログラムが当該プログラムモジュールの共用元であるのか、共用先であるのかを示すと共に、共用元である場合は、共用先のプログラムのバージョンの番号を含み、共用先である場合は、共用元のプログラムのバージョンの番号を含む共用関係とを含む管理情報を格納する管理情報格納手段と、前記プログラムモジュールのプログラムファイルのうち、各バージョンのプログラムにおいて共通に使用される同一のプログラムファイルを前記管理情報のプログラムモジュールのバージョン番号と共用関係とに基づき格納するファイル格納手段と、前記オペレータにより指定されたプログラムモジュールに関する、前記管理情報格納手段に格納されているバージョン番号に基づいて、前記ファイル格納手段に格納されている当該プログラムモジュールのプログラムファイルを指定する指定手段と、前記共用関係に基づいて、前記指定手段により指定された更新対象とされるプログラムモジュールが、前記オペレータが指定したバージョンのプログラムが共用元としているプログラムモジュールであるのか共用先としているプログラムモジュールであるのかを決定する決定手段とを備え、前記プログラム管理装置が備える管理情報処理手段が、前記プログラムモジュールが更新された場合に、前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用元であると決定された場合は、更新対象とされたプログラムモジュールを共用していた各バージョンのプログラムで、該更新対象とされたプログラムモジュールの代わりに更新後のプログラムモジュールを共用するために、前記更新対象とされたプログラムモジュールのバージョン番号の系列に属し、かつ、当該バージョン系列で使用されておらず当該バージョン番号と異なるように決定されたプログラムモジュールのバージョン番号を作成して、各バージョンのプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納する第１の管理情報処理ステップと、前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用先であると決定された場合は、更新後のプログラムモジュールを、更新対象とされたプログラムモジュールの代わりに共用先のプログラムにおいて使用するために、未だ使用されていない新たな系列のバージョン番号を作成して、該共用先のプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納し、前記共用元のプログラムのバージョンの、当該更新対象とされたプログラムモジュールの共用関係から、共用先とされるプログラムのバージョンの番号を削除し、前記共用先のプログラムのバージョンの、更新後のプログラムモジュールの共用関係の共用元をなしとする第２の管理情報処理ステップと、前記プログラム管理装置が備える格納処理手段が、前記第１の管理情報処理ステップにおける、前記プログラムモジュールのバージョン番号の作成処理の後、又は、前記第２の管理情報処理ステップにおける、前記未だ使用されていない新たな系列のバージョン番号の作成処理の後に、前記更新後のプログラムモジュールのプログラムファイルを各バージョン毎に前記ファイル格納手段に格納する格納処理ステップとを備えることを特徴とする。
【００１５】
また、本発明に係るプログラム管理方法は、前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルであることを特徴とする。
【００１６】
また、本発明に係るプログラム管理方法は、前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルであることを特徴とする。
【００１７】
また、本発明に係るプログラム管理方法は、前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルと、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルとが混在したファイルであることを特徴とする。
【００１８】
また、本発明に係るプログラム管理方法は、前記プログラム管理装置が備えるファイル編集手段が、プログラムモジュールの更新に先立ち、オブジェクトプログラムをソースプログラムに逆変換する逆変換ステップと、更新後のソースプログラムをオブジェクトプログラムに変換する変換ステップとを備えることを特徴とする。
【００１９】
また、本発明に係るプログラム管理装置は、少なくとも１以上のプログラムモジュールにより構成されるプログラムを管理すると共に、プログラムモジュールの更新が行われる際に、オペレータによりプログラムのバージョン及び更新対象とされるプログラムモジュールが指定されるプログラム管理装置であって、前記プログラムモジュールを管理するための、プログラムの各バージョン毎の管理情報として、当該バージョンのプログラムで使用されるプログラムモジュールのバージョン番号と、前記プログラムの各バージョン間における前記プログラムモジュールの共用関係であって、各バージョンのプログラムで使用する各プログラムモジュール毎に、各バージョンのプログラムが当該プログラムモジュールの共用元であるのか、共用先であるのかを示すと共に、共用元である場合は、共用先のプログラムのバージョンの番号を含み、共用先である場合は、共用元のプログラムのバージョンの番号を含む共用関係とを含む管理情報を格納する管理情報格納手段と、前記プログラムモジュールのプログラムファイルのうち、各バージョンのプログラムにおいて共通に使用される同一のプログラムファイルを前記管理情報のプログラムモジュールのバージョン番号と共用関係とに基づき格納するファイル格納手段と、前記オペレータにより指定されたプログラムモジュールに関する、前記管理情報格納手段に格納されているバージョン番号に基づいて、前記ファイル格納手段に格納されている当該プログラムモジュールのプログラムファイルを指定する指定手段と、前記共用関係に基づいて、前記指定手段により指定された更新対象とされるプログラムモジュールが、前記オペレータが指定したバージョンのプログラムが共用元としているプログラムモジュールであるのか共用先としているプログラムモジュールであるのかを決定する決定手段と、前記プログラムモジュールが更新された場合に、前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用元であると決定された場合は、更新対象とされたプログラムモジュールを共用していた各バージョンのプログラムで、該更新対象とされたプログラムモジュールの代わりに更新後のプログラムモジュールを共用するために、前記更新対象とされたプログラムモジュールのバージョン番号の系列に属し、かつ、当該バージョン系列で使用されておらず当該バージョン番号と異なるように決定されたプログラムモジュールのバージョン番号を作成して、各バージョンのプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納し、前記決定手段により、前記オペレータにより指定されたバージョンのプログラムが、更新対象のプログラムモジュールの共用先であると決定された場合は、更新後のプログラムモジュールを、更新対象とされたプログラムモジュールの代わりに共用先のプログラムにおいて使用するために、未だ使用されていない新たな系列のバージョン番号を作成して、該共用先のプログラムにおける当該更新後のプログラムモジュールに関する管理情報として前記管理情報格納手段に格納し、前記共用元のプログラムのバージョンの、当該更新対象とされたプログラムモジュールの共用関係から、共用先とされるプログラムのバージョンの番号を削除し、前記共用先のプログラムのバージョンの、更新後のプログラムモジュールの共用関係の共用元をなしとする管理情報処理手段と、前記管理情報処理手段による、前記プログラムモジュールのバージョン番号の作成処理の後、又は、前記未だ使用されていない新たな系列のバージョン番号の作成処理の後に、前記更新後のプログラムモジュールのプログラムファイルを各バージョン毎に前記ファイル格納手段に格納する格納処理手段とを備えることを特徴とする。
【００２１】
また、本発明に係るプログラム管理装置は、前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルであることを特徴とする。
【００２２】
また、本発明に係るプログラム管理装置は、前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルであることを特徴とする。
【００２３】
また、本発明に係るプログラム管理装置は、前記ファイル格納手段に格納されるプログラムファイルは、プログラムモジュールのソースプログラムからなるソースファイルと、プログラムモジュールのオブジェクトプログラムからなるオブジェクトファイルとが混在したファイルであることを特徴とする。
【００２４】
また、本発明に係るプログラム管理装置は、前記プログラムモジュールの更新に先立ち、オブジェクトプログラムをソースプログラムに逆変換し、更新後のソースプログラムをオブジェクトプログラムに変換するファイル編集手段を備えることを特徴とする。
【００２５】
【作用】
本発明によるプログラム管理方法および装置では、ファイル格納部に同一のプログラムモジュールを重複することなく格納し、プログラムのバージョン毎に、そのバージョンとそのバージョンで使用する前記プログラムファイルとの間連、および該プログラムファイルの他のバージョンとの共用関係とを管理する管理情報を管理情報格納部に格納し、前記プログラムファイルを前記ファイル格納部から読出し、編集して格納する際に、当該プログラムファイルのバージョン系列を分離すべきであるか否かを決定して、前記プログラムファイルがバージョン系列を分離すべきでない場合には、元のプログラムファイルのバージョンと同一バージョン系列の更新バージョンとして、前記ファイル格納部に前記編集されたプログラムファイルを格納するとともに、前記プログラムファイルがバージョン系列を分離すべきである場合には、プログラムファイルのバージョン系列を分離し、元のプログラムファイルのバージョン系列とは異なる新たなバージョン系列として、前記ファイル格納部に前記プログラムファイルを格納し、且つこのファイルを格納する際に前記管理情報格納部の管理情報を更新する。このようにすることにより、複数バージョン間で共通のプログラムモジュールが含まれるプログラムに対し、プログラムのバージョンとプログラムモジュールとの対応関係の管理を行って、前記共通のプログラムモジュールの物理的な実体を単一化し、複数のバージョンで同一のプログラムモジュールを共有させるとともに、プログラムモジュールの変更時には、そのプログラムモジュールのバージョンおよび前記対応関係の管理情報を適切に修正する。したがって、プログラムを構成するプログラムモジュールを格納する記憶媒体の格納スペースが低減され、プログラムモジュールの変更時の作業が簡略化される。
【００２６】
すなわち、本発明によるプログラム管理方法および装置は、具体的には、例えば、次のような構成を有することになる。
(i) 複数バージョンのプログラムを構成する複数のプログラムモジュールのプログラムファイル、例えばソースファイルをすべて一つの保管部で管理し、保管部内の物理的な実体（すなわち、ある時点でのソースファイル）とその実体を使用するプログラムのバージョンとの間の関連を管理するための仕組みを用意する。
【００２７】
(ii) 複数のバージョン間で中身が変わらない共通のソースファイルの場合には、保管部だけでなく、そのソースファイルの実体についても複数のバージョンのプログラムから共通に利用可能とするための仕組みを用意する。
【００２８】
(iii) 複数バージョン間で中身が変わらない共通のソースファイルであっても、プログラムのエンハンス等の作業によって共通に用いることができなくなる場合がある。このような場合には、即座にその特定バージョンのプログラムを構成するソースファイルの実体を、同じ保管部の中で共通ソースの実体から分離する仕組みを用意する。
【００２９】
(iv) ソースファイルの利用者、すなわちソースファイルの編集更新あるいは参照を行う人が、プログラムのバージョンを指定するだけで、実体を特定し、アクセスすることができるようにするための仕組みを用意する。
【００３０】
これらの仕組みによって、複数バージョン間で共通のソースファイルは、物理的な実体は１個で済むので、保管のために必要な記憶媒体のスペース、例えばディスクスペースが増加せず、ソースファイルの変更作業は１回だけで済み、すべてのバージョンに対して変更を行ったか否かの管理も不要となる。
【００３１】
【実施例】
《実施例１》
次に、本発明に係るプログラム管理方法および装置の実施例を図面を参照して説明する。
【００３２】
図１は、本発明の第１の実施例に係るプログラム管理システムの原理的な構成を示している。
図１のプログラム管理システムは、操作表示部１２、中央処理部（ＣＰＵ）１４および記憶装置１６を備えている。
【００３３】
操作表示部１２は、例えばキーボード、ポインティングデバイスおよびディスプレイ装置等を含み、プログラムの保守またはエンハンス担当者等のオペレータがプログラムの編集作業のための情報入力操作および情報表示を行う。
【００３４】
記憶装置１６は、ファイル格納部３２および管理情報格納部３４を有する。
ファイル格納部３２は、複数のプログラムモジュールからなるプログラムの１以上のバージョン、この場合複数のバージョンを構成するプログラムモジュールのプログラムファイル、例えばソースファイルを格納する。
【００３５】
管理情報格納部３４は、ファイル格納部３２に同一のプログラムモジュールのソースファイルを重複することなく格納させるべく、前記プログラムのバージョン毎に、そのバージョンとそのバージョンで使用する前記ソースファイルとの間連、および該ソースファイルの他のバージョンとの共用関係とを管理する管理情報を格納する。
【００３６】
中央処理部１４は、ファイル指定部２０、ファイル編集部２２、格納方法決定部２４、格納処理部２６および管理情報処理部２８を有する。
ファイル指定部２０は、オペレータの操作により、操作表示部１２から与えられるプログラムのバージョンおよびソースファイル名に基づき、管理情報格納部３４に格納されている前記管理情報を参照してファイル格納部３２に格納されている前記ソースファイルを指定する。
【００３７】
ファイル編集部２２は、ファイル指定部２０で指定されたソースファイルをファイル格納部３２から読出し、オペレータが操作表示部１２を操作することにより編集する。
【００３８】
格納方法決定部２４は、ファイル編集部２２で編集されたソースファイルが、格納時にバージョン系列を分離すべきであるか否かを決定する。格納方法決定部２４で格納時にバージョン系列を分離するか否かは、例えばオペレータの操作により操作表示部１２を介して予め設定される。
【００３９】
格納処理部２６は、格納方法決定部２４に応動し、バージョン系列を分離しない場合には、元のソースファイルのバージョンと同一バージョン系列の更新バージョンとして、ファイル格納部３２に前記編集されたソースファイルを格納するとともに、バージョン系列を分離する場合には、ソースファイルのバージョン系列を分離し、元のソースファイルのバージョン系列とは異なる新たなバージョン系列として、ファイル格納部３２に前記ソースファイルを格納させる。
【００４０】
管理情報処理部２８は、格納処理部２６でファイルを格納する際に管理情報格納部３４の管理情報を更新する。このような構成では、プログラムを構成する複数のソースファイルは、記憶装置１６の管理情報格納部３４に格納された管理情報により、プログラムのバージョン毎に管理され、プログラムの複数のバージョンについて共通のソースファイルは、重複することなく記憶装置１６のファイル格納部３２に格納される。また、ソースファイルの編集による変更時にも、前記管理情報により、ソースファイル毎のバージョン番号の更新、共通使用先のプログラムのバージョンについての前記管理情報の更新、およびソースファイルのバージョン系列の分離などを行うことができる。
【００４１】
したがって、オペレータによるプログラムの保守およびエンハンス作業が、簡略化されて、誤作業の危険も低減するとともに、記憶装置１６におけるファイル格納部３２の格納効率が向上して、記憶装置１６における占有スペースを削減することができる。
【００４２】
なお、ファイル格納部３２に格納されるプログラムモジュールのプログラムファイル（すなわち、ファイル指定部２０で指定され、ファイル編集部２２で編集され、格納処理部２６により格納されるプログラムファイル）は、ソースプログラムのファイル（ソースファイル）に限らず、プログラムモジュールのオブジェクトプログラムのファイル（オブジェクトファイル）であっても、上述と同様に管理することができる。この場合、ファイル編集部２２は、オブジェクトファイルを直接編集してもよいが、通常オブジェクトファイルの直接編集は容易ではないので、ディスアセンブラ、逆コンパイラ等によりオブジェクトファイルをソースレベルに逆変換して、編集し、再度アセンブラ、コンパイラ等によりオブジェクトファイルに変換して、格納するようにしてもよい。もちろん、プログラムモジュールのプログラムファイルとして、このようなオブジェクトファイルとソースファイルとが混在していてもよい。
【００４３】
《実施例２》
図２は、本発明の第２の実施例に係るプログラム管理システムの構成を示している。
【００４４】
図２のプログラム管理システムは、図１のシステムにおける中央処理部１４および記憶装置１６に相当する部分をさらに具体的に構成したものである。図２のプログラム管理システムは、編集処理部４２、ファイル管理部４４、管理情報管理部４６、分離処理部４８、ファイル格納部５０および管理情報格納部５２を備えている。
【００４５】
編集処理部４２は、オペレータによりプログラムファイル、例えばソースファイルの編集を行うための処理を行う。
ファイル格納部５０は、複数のプログラムモジュールからなるプログラムの複数のバージョンを構成する複数の前記プログラムモジュールのプログラムファイル、この場合ソースファイルを格納する。
【００４６】
管理情報格納部５２は、ファイル格納部５０に同一の前記プログラムモジュールを重複せずに格納させるべく、前記プログラムのバージョン毎に、そのバージョンとそのバージョンで使用する前記プログラムファイルであるソースファイルとの間連、および該ソースファイルの他のバージョンのプログラムとの共用関係とを管理する管理情報を格納する。
【００４７】
ファイル管理部４４は、ソースファイルのアクセス管理を行う。すなわち、ファイル管理部４４は、ファイル格納部５０に格納された前記ソースファイルを読出し、且つ編集処理部４２により変更されたソースファイルを同一バージョン系列の更新バージョンとしてファイル格納部５０に格納する。
【００４８】
管理情報管理部４６は、ファイル管理部４４で読出され変更されたソースファイルをファイル格納部５０に格納する際に管理情報格納部５２に格納された前記管理情報を更新する。
【００４９】
分離処理部４８は、ファイル管理部４４で読出され変更されたソースファイルをファイル格納部５０に格納する際に、ソースファイルのバージョン系列を分離し、ファイル管理部４４および管理情報管理部４６を介して、元のソースファイルのバージョン系列とは異なる新たなバージョン系列として、該変更されたソースファイルを格納させる。
【００５０】
すなわち、図２に示されたプログラム管理システムは、同時に複数のバージョンを持つプログラムを管理するための構成管理ツールであり、ファイル格納部５０はソースファイルを管理するための入れ物、管理情報格納部５２は、ファイル格納部５０内の各実体（つまりある時点でのソースファイルの中身）とその実体を利用しているバージョンとの間の関係情報である管理情報を格納するもの、管理情報管理部４６は、複数のバージョンのプログラムが同一のソースファイルの実体を利用することを可能とするために管理情報を適切に管理利用する機構、分離処理部４８は、複数のバージョンのプログラムで利用されているソースファイルの実体に基づいて、編集処理部４２による編集処理を行うだけで、特定のバージョンのプログラムに固有のソースファイルの実体を生成し、ソースファイル自体のバージョン系列を分離して、新たなバージョン系列のソースファイルとして格納させるための機構、ファイル管理部４４は、利用者すなわちオペレータが利用したいプログラムのバージョンおよびソースファイルのファイル名を編集処理部４２を介して指定するだけで、対応するソースファイルにアクセスすることを可能とするための機構であるということができる。
【００５１】
ソースファイルを管理するためのファイル格納部４４には、複数のバージョンレベルのソースファイルを管理することの可能な履歴管理ファイルを使用する（例えば、先に述べたＳＣＣＳファイルを利用することができる）。
【００５２】
次に、図３に示すフローチャートを参照して、複数バージョンを持つプログラムのソースファイルを管理する具体的な例について、図２のシステムの動作を説明する。
【００５３】
プログラムの保守またはエンハンス担当者である利用者、つまりオペレータは、どのバージョンのプログラムのどのソースファイル（ソースファイル名）に、どのような方法でアクセスするのかを、編集処理部４２を介して宣言する（ステップＳ１１）。この場合のアクセスの方法には、参照および更新がある。参照の場合は、単にソースファイルを参照するだけであり、更新の場合は、編集による変更を行った後に、変更されたソースファイルを格納する。ファイル管理部４４が、宣言された内容に対応するソースファイルのバージョン番号の獲得を管理情報管理部４６に依頼する（ステップＳ１２）。管理情報管理部４６が、要求されたバージョンに該当するソースファイルのバージョンをファイル管理部４４に通知する（ステップＳ１３）。
【００５４】
ファイル管理部４４が、通知された番号に従ってファイル格納部５０内のソースファイルにアクセスする（ステップＳ１４）。そして、先に宣言されたアクセス方法が調べられ（ステップＳ１５）、更新でない場合は、対応するバージョン番号のソースファイルをファイル格納部５０から取り出して（ステップＳ１６）、処理を終了する。
【００５５】
ステップＳ１５で、アクセス方法が更新であると判定された場合には、アクセスを要求しているバージョンがファイルの所有者であるか否か、すなわち管理情報の共用元情報が「共用元：なし」であるか否かが判定され（ステップＳ１７）、ファイルの所有者である場合、つまり「共用元：なし」である場合には、バージョン番号を１段階増加させて、変更後のソースファイルをファイル格納部５０に格納する（ステップＳ１８）。次に、新たに作成したバージョン番号の情報を所有者、つまり該当バージョンの管理情報に追加する（ステップＳ１９）。さらに、管理情報管理部４６を介して、当該ソースファイルを共用しているバージョンの情報を、管理情報格納部５２の管理情報から獲得し、共用しているバージョンがあるならば、その全てのバージョンの管理情報に、新たなバージョンの情報を追加して（ステップＳ２０）、処理を終了する。
【００５６】
ステップＳ１７で、ファイルの所有者でないと判定された場合、分離処理部４８により、指定されたバージョン用にソースファイルの新たなバージョン系列を作成する（ステップＳ２１）。そして、編集後のソースファイルを、新たな系列のバージョンとして、ファイル格納部５０に格納し（ステップＳ２２）、管理情報管理部４６を介して当該ソースファイルの元の所有者、つまりもとの共用元における管理情報の共用先情報を削除し、「共用先：なし」とする（ステップＳ２３）。次に、やはり管理情報管理部４６を介して当該バージョンの管理情報の当該ソースファイルの共用元情報を削除し、「共用元：なし」として（ステップＳ２４）、処理を終了する。
【００５７】
次に、具体的ないくつかの例について動作を説明する。
例えば、あるプログラムがＶ１０およびＶ２０の２つのバージョン番号で示される保守対象バージョンを有しているとする。また、このプログラムを構成するソースファイルのうちの“common.c”という名称のソースファイルは、Ｖ１０およびＶ２０の両方のバージョンで共通に使用される。一方、“main.c”という名称のソースファイルは、Ｖ１０とＶ２０とで中身が異なると仮定する。このような状況における各ソースファイルの管理の方法、アクセス制御の方法を、概略について説明する。
【００５８】
種々の動作形態を示す次の各項目について、参照の便宜を図るため、図２に各項目の項目番号と同様の符号を付して示している。
(1) Ｖ１０用の“main.c”へのアクセス：
この場合のアクセス方法がすべての処理の基本である。まず、ファイル管理部４４は、Ｖ１０利用の宣言に対応して、管理情報管理部４６を経由してＶ１０用の管理情報にアクセスし、対応するソースファイルの実体のレベルすなわちバージョン番号が1.2 であることを知り、ファイル格納部５０の“main.c”のバージョン1.2 へのアクセスを行う。
【００５９】
このアクセスが更新処理である場合には、ファイル管理部４４は、新しいバージョン1.3 を作成し、Ｖ１０用の管理情報に1.3 のバージョンに対する情報を追加する。
【００６０】
(2) Ｖ１０用の“common.c”へのアクセス：
Ｖ１０は“common.c”の所有者であるので、アクセスの方法は、項目(1) の場合と全く同様である。更新処理の場合には、項目(1) の場合と相違し、新しいバージョン1.3 を作成した後に、このバージョン1.3 についての情報をＶ１０用の管理情報へ追加すると同時に、共用先のＶ２０の情報をもとにしてＶ２０用の管理情報にも新しいバージョン1.3 の情報の追加を行う。
【００６１】
(3) Ｖ２０用の“main.c”へのアクセス：
項目(1) のケースと全く同様の手順である。
(4) Ｖ２０用の“common.c”へのアクセス：
参照用のアクセスについては、他の項目の場合のアクセスと全く同様の手順で実現することができる。
【００６２】
(5) Ｖ２０用に“common.c”に独自の修正を加える場合：
資源の実体、すなわちソースファイルを各バージョン用に分離する必要がある。ファイル管理部４４は、管理情報管理部４６を介してＶ２０においてもＶ１０用の“common.c”を共用していることを知り、分離処理部４８に依頼して“common.c”のバージョン1.2 のソースファイルから、この修正作業後に作成されるべき新しいバージョン2.1 を作成する準備を行う。
【００６３】
更新時には、図４に示すように、新バージョン2.1 を作成し、Ｖ１０およびＶ２０用の管理情報を図示のように更新する。図４では、管理情報の変更された個所に該当する文字部分を枠で囲んで示している。
【００６４】
このようにして、“main.c”と同様に、以後それぞれのバージョンのプログラムからのアクセスが可能となる。
したがって、従来のシステムでは、各バージョンに対してバージョン数ぶんのソースファイルの変更作業が必要であり、このソースファイルの変更作業を全てのバージョンに対して実施したかどうかを管理する必要があり、さらには、ソースファイルを格納するためのファイル格納部５０等のスペース、例えばディスクスペースがそのバージョン数倍だけ必要としていたのに対し、上述した本発明に係るプログラム管理システムによれば、これらの全てが不要となる。なお、通常のエンハンス作業を考えた場合、実際にそのバージョン独自の修正を加えるファイルは、（もちろんエンハンスの規模に応じて変化はするが）全ファイルの１〜２割程度以下であることが多いのに対し、従来のシステムは著しく効率が悪かった。
【００６５】
ちなみに、２つのバージョン間での作業を想定した場合であっても、上述のようなプログラム管理システムとすることにより、従来のシステムに比して、開発者のソース変更作業は変更行数で１〜２割に、実際の作業工数で考えた場合でも半分程度またはそれ以下に削減することができる。必要とするディスクスペースについては、２つのバージョン全体での必要量を考えた場合、約５５％に削減される。また、共用されているバージョンの全て変更作業が確実に行われるため、変更の反映ミスの発生も防止される。
【００６６】
また、この場合もファイル格納部５０に格納されるプログラムモジュールのプログラムファイルは、ソースファイルに限らず、プログラムモジュールのオブジェクトファイルであっても、上述と同様に管理することができる。この場合、編集処理部４２は、オブジェクトファイルを直接編集してもよいが、オブジェクトファイルをソースレベルに逆変換して編集し、再度オブジェクトファイルに変換して、格納するようにしてもよい。もちろん、プログラムモジュールのプログラムファイルとして、このようなオブジェクトファイルとソースファイルとが混在していてもよい。
【００６７】
【発明の効果】
以上説明したように、本発明によれば、複数バージョン間で共通のプログラムモジュールが含まれるプログラムに対し、プログラムのバージョンとプログラムモジュールとの対応関係の管理を行って、前記共通のプログラムモジュールの物理的な実体を単一化し、複数のバージョンで同一のプログラムモジュールを共有させるとともに、プログラムモジュールの変更時には、そのプログラムモジュールのバージョンおよび前記対応関係の管理情報を適切に修正することにより、プログラムを構成するプログラムモジュールを格納する記憶媒体の格納スペースを低減し、プログラムモジュールの変更時の作業を簡略化することを可能とするプログラム管理方法および装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例に係る原理的なプログラム管理システムの構成を示すブロック図である。
【図２】本発明の第２の実施例に係るプログラム管理システムの構成を示すブロック図である。
【図３】図２に示すプログラム管理システムの処理動作を説明するためのフローチャートである。
【図４】図２に示すプログラム管理システムの処理動作を説明するため、分離後のプログラムファイルおよび管理情報を示す模式図である。
【符号の説明】
１２…操作表示部
１４…中央処理部
１６…記憶装置
２０…ファイル指定部
２２…ファイル編集部
２４…格納方法決定部
２６…格納処理部
２８…管理情報処理部
３２，５０…ファイル格納部
３４，５２…管理情報格納部
４２…編集処理部
４４…ファイル管理部
４６…管理情報管理部
４８…分離処理部
【図１】
0003727076.tif 000002
【図２】
0003727076.tif 000003
【図３】
0003727076.tif 000004
【図４】
0003727076.tif 000005