(57)【要約】【課題】ソフト部品に加えられた修正をソフト部品データベースおよびソフトウェア製品群に確実に反映することを可能にするとともに、同データベースから新規ソフトウェア製品を生成可能にする。【解決手段】ソフトウェア構成管理システムは、ソフトウェア部品データベースと、ソフトウェア製品管理部を備え、ソフトウェア部品データベース管理クライアント及びソフトウェア製品操作クライアントからのデータ送受信を受付ける。ソフトウェア構成管理システムは、部品-製品対応表と、部品-ファイル対応情報と、ソフトウェア部品データベースの変更とソフトウェア製品の変更を相互に反映させる同期部と、更新情報と、対応表更新部とを有する。【選択図】図１
2010033373.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア製品を構成するソースファイルの構成要素であるソフトウェア部品を木構造として記憶し該木構造を構成する構成情報要素に前記ソフトウェア部品を対応させて記憶するソフトウェア部品データベースと、前記ソフトウェア部品データベースに記憶されたソフトウェア部品を合成して生成した複数のソフトウェア製品を記憶するソフトウェア製品管理部を備え、前記ソフトウェア部品データベースを外部から管理するソフトウェア部品データベース管理クライアントおよび前記ソフトウェア製品管理部を外部から操作するソフトウェア製品操作クライアントからのデータ送受信を受付けるソフトウェア構成管理システムであって、
前記ソフトウェア部品データベースに記憶された全てのソフトウェア部品についてソフトウェア部品と該ソフトウェア部品を含むソフトウェア製品との関係を記録した部品-製品対応表と、
前記ソフトウェア製品管理部に記憶されたソフトウェア製品の各々について、ソフトウェア製品に含まれるソフトウェア部品とソースファイルの関係を特定するための情報を記録した部品-ファイル対応情報と、
前記ソフトウェア部品データベース管理クライアント又は前記ソフトウェア製品操作クライアントからの命令に従って、前記部品-製品対応表と前記部品-ファイル対応情報に基づいて、前記ソフトウェア部品データベースの変更を前記ソフトウェア製品管理部に記憶されたソフトウェア製品に反映させ、又は、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更を前記ソフトウェア部品データベースに反映させる同期部と、
前記同期部によって、ソフトウェア部品の変更を相互に反映させた履歴を記録する更新情報と、
前記ソフトウェア部品データベース管理クライアントからの命令に応答して、前記ソフトウェア部品データベースに記憶されたソフトウェア部品と前記部品-製品対応表と前記更新情報と前記部品-ファイル対応情報を更新する対応表更新部と
を有するソフトウェア構成管理システム。
【請求項２】
請求項１に記載のソフトウェア構成管理システムにおいて、
前記対応表更新部は、前記ソフトウェア部品データベース管理クライアントから、前記ソフトウェア部品データベースに記憶されたソフトウェア製品のうち、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更からの反映に起因して変更されたソフトウェア部品を、新規ソフトウェア部品として前記ソフトウェア部品データベースに追加する指令を受けた場合、
新規構成情報要素名を受け付け、前記ソフトウェア部品データベースの前記木構造上において、前記要素名を持つ新規構成情報要素を、前記ソフトウェア部品と対応している構成情報要素と兄弟関係となる位置に追加し、前記ソフトウェア部品を第一の構成情報要素に対応させ、前記ソフトウェア部品が変更される前のソフトウェア部品を第二の構成情報要素に対応させることを特徴とするソフトウェア構成管理システム。
【請求項３】
請求項１に記載のソフトウェア構成管理システムにおいて、
前記対応表更新部は、前記ソフトウェア部品データベース管理クライアントから、前記ソフトウェア部品データベースに記憶されたソフトウェア製品のうち、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更からの反映に起因して変更された第一のソフトウェア部品を、第二の新規ソフトウェア部品として前記ソフトウェア部品データベースに追加する指令を受けた場合、
前記更新情報を基に前記ソフトウェア製品を特定し、第二のソフトウェア部品と前記ソフトウェア製品との対応関係を前記部品-製品対応表に記録し、第一のソフトウェア部品と前記ソフトウェア製品との対応関係を前記部品-製品対応表から削除し、前記ソフトウェア製品に対応する部品-ファイル対応情報について、第二のソフトウェア部品が合成されているソースファイルから第二のソフトウェア部品を特定できるよう更新することを特徴とするソフトウェア構成管理システム。
【請求項４】
請求項１に記載のソフトウェア構成管理システムにおいて、
前記対応表更新部は、前記ソフトウェア部品データベース管理クライアントから、前記ソフトウェア部品データベースに記憶されたソフトウェア製品のうち、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更からの反映に起因して変更されたソフトウェア部品について変更部分のみを新規ソフトウェア部品として前記ソフトウェア部品データベースに追加する指令を受けた場合、
第一および第二および第三の新規構成情報要素名を受け付け、前記ソフトウェア部品データベースの前記木構造上において、前記ソフトウェア部品と対応している構成情報要素の子の関係となる位置に、第一の前記要素名を持つ第一の新規構成情報要素を追加し、第一の新規構成情報要素の子の関係となる位置に、第二の前記要素名を持つ第二の新規構成情報要素を追加し、第一の新規構成情報要素の子の関係となる位置に、第三の前記要素名を持つ第三の新規構成情報要素を追加し、前記変更部分とは異なる共通部分をテンプレートにした新規ソフトウェア部品を第一の新規構成情報要素に対応させて追加し、前記変更部分のうち変更前に相当する部分を前記テンプレートに挿入可能な変数にした新規ソフトウェア部品を第二の新規構成情報要素に対応させて追加し、前記変更部分のうち変更後に相当する部分を前記テンプレートに挿入可能な変数にした新規ソフトウェア部品を第三の新規構成情報要素に対応させて追加し、前記ソフトウェア部品を前記ソフトウェア部品データベースの前記木構造上から削除することを特徴とするソフトウェア構成管理システム。
【請求項５】
請求項１に記載のソフトウェア構成管理システムにおいて、
前記対応表更新部は、前記ソフトウェア部品データベースに記憶されたソフトウェア製品のうち、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更からの反映に起因して変更されたソフトウェア部品について、変更前および変更後で共通部分を第一の新規ソフトウェア部品として前記ソフトウェア部品データベースに追加し、変更前および変更後の変更部分をそれぞれ第二および第三の新規ソフトウェア部品として前記ソフトウェア部品データベースに追加された場合、
前記更新情報を基に前記ソフトウェア製品を特定し、第一および第二および第三の新規ソフトウェア部品と前記ソフトウェア製品との対応関係を前記部品-製品対応表に記録し、前記ソフトウェア部品と前記ソフトウェア製品との対応関係を前記部品-製品対応表から削除し、前記ソフトウェア製品に対応する部品-ファイル対応情報について、第一および第三のソフトウェア部品が合成されているソースファイルから第一および第三のソフトウェア部品を特定できるよう更新することを特徴とするソフトウェア構成管理システム。
【請求項６】
請求項１に記載のソフトウェア構成管理システムにおいて、
前記対応表更新部は、前記ソフトウェア部品データベース管理クライアントから、前記ソフトウェア部品データベースに記憶されたソフトウェア製品のうち、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更からの反映に起因して変更されたソフトウェア部品について、該ソフトウェア部品の変更部分のみを新規ソフトウェア部品として前記ソフトウェア部品データベースに追加する指令を受けた場合、
前記ソフトウェア部品データベースの前記木構造上において、前記変更部分とは異なる共通部分をテンプレートとし、前記変更部分の一部分を上記テンプレートに挿入可能な変数にした新規ソフトウェア部品を追加するために、上記変数の箇所をユーザから受け付けることを特徴とするソフトウェア構成管理システム。
【請求項７】
ソフトウェア製品を構成するソースファイルの構成要素であるソフトウェア部品を木構造として記憶し該木構造を構成する構成情報要素に前記ソフトウェア部品を対応させて記憶するソフトウェア部品データベースと、前記ソフトウェア部品データベースに記憶されたソフトウェア部品を合成して生成した複数のソフトウェア製品を記憶するソフトウェア製品管理部と、前記ソフトウェア部品データベースに記憶された全てのソフトウェア部品についてソフトウェア部品と該ソフトウェア部品を含むソフトウェア製品との関係を記録した部品-製品対応表と、を備えたコンピュータによって構成されたソフトウェア構成管理システムの管理方法において、
外部のコンピュータであるソフトウェア部品データベース管理クライアントを経由して、前記ソフトウェア部品データベースの変更がなされたとき、該変更を前記ソフトウェア製品管理部に記憶されたソフトウェア製品に反映させることと、
外部のコンピュータであるソフトウェア製品操作クライアントを経由して、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更がなされたとき、該変更を前記ソフトウェア部品データベースに反映させることと、
を有するソフトウェア構成管理システムの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既存のソフトウェア部品を格納するソフトウェア部品データベースから複数のソフトウェア部品を抽出し、それらを組合わせて新規製品プログラムのソースコードを自動生成するプログラム自動構成装置に関し、特に上記ソフトウェア部品データベースおよび製品群の構成管理に関する。
【背景技術】
【０００２】
通常、新たなソフトウェアを開発する場合、過去に開発したソースファイルのコピーを利用する。コピーしたファイルをそのまま使用する場合もあれば、コピーしたファイルを修正したものを使用する場合もある。
【０００３】
このように、ソフトウェアは、他のソフトウェアを利用するが、同時に、自身も他のソフトウェアの開発の際に利用されることがある。即ち、ソフトウェアは、他のソフトウェアを派生元ファイルとして利用するたが、他のソフトウェアによって派生元ファイルとして利用され得る。
【０００４】
ソフトウェアは、開発した後に、修正することがある。このとき、修正内容を、派生先ファイルに反映すべき内容である場合には、それを派生先ファイルに確実に反映させる必要がある。また、修正内容が派生元ファイルにも反映すべき内容である場合には、それを派生元ファイルに確実に反映させる必要がある。例えば、修正内容がバグの修正の場合には、修正内容を、他の全ての派生ファイルに反映させる必要がある。即ち、ソフトウェアの保守管理が必要となる。
【０００５】
特開2007-279883号公報には、派生元ファイルと派生先ファイルとの対応関係を保持し、同対応関係にあるファイル間で修正の反映漏れを防止するファイル構成管理装置が記載されている。
【０００６】
しかしながら、特開2007-279883号公報に記載されたファイル構成管理装置は、ファイル単位でのみ構成管理を行い、ファイルを構成するソフトウェア部品単位では構成管理することができない。ここで、ソフトウェア部品（以下、ソフト部品と省略する）とは、ソースファイルに含まれる関数や手続き、命令文等、任意の文字列の集合を表す。
【０００７】
近年、新たなソフトウェアを開発する場合、既存のソフト部品を格納するソフト部品データベースから複数のソフト部品を抽出し、それらを組み合わせて新規プログラムのソースファイルを自動的に生成する。
【０００８】
しかしながら、この場合、ソフト部品データベースの保守作業が必要となる。例えば、ソフト部品データベースに格納されたソフト部品においてバグが発見された場合には、バグを修正し、修正したソフト部品に交換する必要がある。また、ソフト部品データベースに新規ソフト部品を追加する場合もある。特にソフト部品データベースに格納されたソフト部品数が大規模化した場合、その保守作業が煩雑となる。
【０００９】
特開2007-102380には、ソフト部品データベースに格納された複数のソフト部品を、マクロ記述を用いて管理することが記載されている。それによって、修正されたソフト部品との交換を自動化することができる。
【００１０】
【特許文献１】特開2007-279883号公報
【特許文献２】特開2007-102380号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特開2007-102380では、ソフト部品データベースおよび同データベースから生成したソフトウェア製品の構成管理方法は示されていない。すなわち、ソフト部品データベースに含まれるソフト部品が修正された場合、そのソフト部品を使用しているソフトウェア製品にも同様な修正を確実に反映する方法は示されていない。また、ソフト部品データベースに新規ソフト部品を追加する方法も示されていない。
【００１２】
ソフト部品データベースと同データベースから生成したソフトウェア製品群との間でソフト部品の修正を相互に反映させるためには、特開2007-279883と同様に、ソフト部品の対応関係を保持することが考えられる。
【００１３】
しかし、ソフト部品データベースに新規ソフト部品を追加したり、ソフト部品を分割した場合、ソフト部品の対応関係を更新する必要がある。また、ソフトウェア製品を構成するソースファイルは複数のソフト部品から構成され、各ソフト部品はソースファイル内の任意の場所に挿入される。したがって、各ソフトウェア製品において、ソフト部品とソースファイルとの対応関係も保持する必要がある。そして、新規ソフト部品の追加等に応じてその対応関係も更新する必要がある。更に、ソフト部品データベースから新規ソフトウェア製品を生成するには、必要なソフト部品をソフト部品データベースから選択・抽出するためのソフト部品構成情報が必要となる。従って、ソフト部品データベースに対する新規ソフト部品の追加等に応じて、ソフト部品構成情報も更新する必要がある。
【００１４】
本発明の目的は、ソフト部品データベースおよびソフトウェア製品群の構成管理システムにおいて、ソフト部品データベースに新規ソフト部品を追加したり、ソフト部品を分割した後でも、ソフト部品に加えられた修正をソフト部品データベースおよびソフトウェア製品群に確実に反映することを可能にするとともに、ソフト部品データベースから新規ソフトウェア製品を生成可能にすることである。
【課題を解決するための手段】
【００１５】
本発明によると、ソフトウェア構成管理システムは、ソフトウェア製品を構成するソースファイルの構成要素であるソフトウェア部品を木構造として記憶し該木構造を構成する構成情報要素に前記ソフトウェア部品を対応させて記憶するソフトウェア部品データベースと、前記ソフトウェア部品データベースに記憶されたソフトウェア部品を合成して生成した複数のソフトウェア製品を記憶するソフトウェア製品管理部を備え、前記ソフトウェア部品データベースを外部から管理するソフトウェア部品データベース操作クライアントおよび前記ソフトウェア製品管理部を外部から管理するソフトウェア製品操作クライアントからのデータ送受信を受付ける。
【００１６】
本発明のソフトウェア構成管理システムは、
前記ソフトウェア部品データベースに記憶された全てのソフトウェア部品についてソフトウェア部品と該ソフトウェア部品を含むソフトウェア製品との関係を記録した部品-製品対応表と、
前記ソフトウェア製品管理部に記憶されたソフトウェア製品の各々について、ソフトウェア製品に含まれるソフトウェア部品とソースファイルの関係を特定するための情報を記録した部品-ファイル対応情報と、
前記ソフトウェア部品データベース操作クライアント又は前記ソフトウェア製品操作クライアントからの命令に従って、前記部品-製品対応表と前記部品-ファイル対応情報に基づいて、前記ソフトウェア部品データベースの変更を前記ソフトウェア製品管理部に記憶されたソフトウェア製品に反映させ、又は、前記ソフトウェア製品管理部に記憶されたソフトウェア製品の変更を前記ソフトウェア部品データベースに反映させる同期部と、
前記同期部によって、ソフトウェア部品の変更を相互に反映させた履歴を記録する更新情報と、
前記ソフトウェア部品データベース管理クライアントからの命令に応答して、前記ソフトウェア部品データベースに記憶されたソフトウェア部品と前記部品-製品対応表と前記更新情報と前記部品-ファイル対応情報を更新する対応表更新部と、を有する
【発明の効果】
【００１７】
本発明によると、ソフト部品データベースに新規ソフト部品を追加したり、ソフト部品を分割した場合でも、ソフト部品に加えられた修正をソフト部品データベースおよび同データベースから生成したソフトウェア製品群に確実に反映することができるとともに、同データベースから新規ソフトウェア製品を生成することができる。
【発明を実施するための最良の形態】
【００１８】
図１を参照して本発明によるソフトウェア構成管理システムの例を説明する。本例のソフトウェア構成管理システムは、ソフトウェア構成管理サーバ100、ソフト部品データベース操作クライアント150、およびソフトウェア製品操作クライアント160および164を有する。ソフト部品データベース操作クライアント150およびソフトウェア製品操作クライアント160および164は、それぞれ複数個であってもよい。
【００１９】
ソフトウェア構成管理サーバ100は、構成管理部110、ソフト部品データベース管理部120、およびソフトウェア製品管理部130を有する。構成管理部110は、データベース操作IF111、同期部112、対応表更新部113、および製品操作IF114を有する。ソフト部品データベース管理部120は、ソフト部品データベース121、ソフト部品-製品対応表122、および更新情報123を有する。ソフト部品データベース121には、複数のソフト部品が格納される。ソフト部品とは、ソフトウェア製品を構成するソースファイルの構成要素であり、ソースファイルに含まれる関数や手続き、命令文等、任意の文字列の集合を表す。
【００２０】
ソフトウェア製品管理部130は、ソフト部品データベース121に格納されたソフト部品から生成した複数のソフトウェア製品を管理する。より詳細には、各ソフトウェア製品と、それを構成するソースファイル群を対にして管理する。図１に示す例では、ソフトウェア製品131にはソフト部品-ファイル対応情報132が対応し、ソフトウェア製品133にはソフト部品-ファイル対応情報134が対応している。
【００２１】
ソフト部品データベース管理者150Aは、ソフト部品データベース管理クライアント150を用いてソフト部品データベース121を管理する。ソフト部品データベース121の変更には、Outgoingな変更とIncomingな変更の２つの変更がある。
【００２２】
Outgoingな変更は、ソフト部品データベース管理者150Aが、ソフト部品データベース管理クライアント150を介して、ソフト部品を編集処理することによって生成された変更である。Incomingな変更は、ソフトウェア製品管理部130に格納されたソフトウェア製品131、133の変更に起因した変更である。即ち、ソフトウェア製品管理部130に格納されたソフトウェア製品131又は133が変更されると、その変更は、ソフト部品データベース管理部120のソフト部品データベース121に格納されたソフト部品に自動的に反映される。ソフト部品データベース121には、同期部112による同期処理によって、最新の内容が格納される。これが、Incomingな変更である。
【００２３】
ソフト部品データベース121のOutgoingな変更を生成する方法を説明する。ソフト部品データベース管理者150Aは、ソフト部品データベース管理クライアント150のデータベース操作部151を介して、ソフト部品データベース121の最新の内容をコピーし、それを、クライアント150に格納する。これを、ローカルコピー152と称する。一方、ソフト部品データベース121の内容を、最初に、ソフト部品データベース管理クライアント150にコピーたものを、ベースコピー153と称する。Outgoingな変更を行なう場合には、ローカルコピー152を使用し、ベースコピー153を使用しない。ソフト部品データベース管理者150Aは、ローカルコピー152を編集し、編集内容を、データベース操作部151を介して、ソフト部品データベース121に反映させる。こうしてOutgoingな変更がなされる。
【００２４】
ローカルコピー152とベースコピー153を比較することによって、ソフト部品データベース121のOutgoingな変更を検出することができる。ソフト部品データベース121の最新の内容とベースコピー153と比較することによって、Incomingな変更を検出することができる。ソフト部品データベース121の最新の内容は、リモートコピーと称することもある。リモートコピーとベースコピー153と比較することによって、Incomingな変更を検出することができる。このような比較方法は3-Way比較と呼ばれる。ソフト部品データベース121のOutgoingな変更を検出した場合には、それをベースコピー153及びソフトウェア製品131、133に反映させる。ソフト部品データベース121のIncomingな変更を検出した場合には、それをベースコピー153とローカルコピー152の両者に反映させる。
【００２５】
ソフトウェア製品開発者160Aは、ソフトウェア製品操作クライアント160を用いてソフトウェア製品131、133を管理する。ソフトウェア製品管理部130に格納されたソフトウェア製品131、133の変更には、Outgoingな変更とIncomingな変更の２つの変更がある。
【００２６】
Outgoingな変更は、ソフトウェア製品開発者160Aが、ソフトウェア製品操作クライアント160を介して、ソフトウェア製品を編集処理することによって生成された変更である。Incomingな変更は、ソフト部品データベース管理部120のソフト部品データベース121に格納されたソフト部品の変更に起因した変更である。即ち、ソフト部品データベース121に格納されたソフト部品の変更があると、その変更は、ソフトウェア製品管理部130に格納されたソフトウェア製品131、133に自動的に反映される。ソフトウェア製品管理部130に格納された１つのソフトウェア製品131が変更されると、その変更は、ソフトウェア製品管理部130に格納された他のソフトウェア製品133に自動的に反映される。ソフトウェア製品管理部130に格納されたソフトウェア製品131、133には、同期部112による同期処理によって、最新の内容が格納される。これが、Incomingな変更である。
【００２７】
ソフトウェア製品131のOutgoingな変更を生成する方法を説明する。ソフトウェア製品開発者160Aは、ソフトウェア製品操作クライアント160の製品操作部161を介して、ソフトウェア製品131の最新の内容をコピーし、それを、ソフトウェア製品操作クライアント160に格納する。これを、ローカルコピー162と称する。一方、ソフトウェア製品131の内容を、最初に、ソフトウェア製品操作クライアント160にコピーたものを、ベースコピー163と称する。Outgoingな変更を行なう場合には、ローカルコピー162を使用し、ベースコピー163を使用しない。ソフトウェア製品開発者160Aは、ローカルコピー162を編集し、編集内容を、製品操作部161を介して、ソフトウェア製品131に反映させる。こうしてソフトウェア製品131のOutgoingな変更がなされる。
【００２８】
ローカルコピー162とベースコピー163を比較することによって、ソフトウェア製品131のOutgoingな変更を検出することができる。ソフトウェア製品131の最新の内容とベースコピー163と比較することによってソフトウェア製品131のIncomingな変更を検出することができる。ソフトウェア製品131の最新の内容は、リモートコピーと称することもある。リモートコピーとベースコピー163と比較することによって、Incomingな変更を検出することができる。このような比較方法は3-Way比較と呼ばれる。ソフトウェア製品131のOutgoingな変更を検出した場合には、ベースコピー163及びソフト部品データベース121に反映させる。ソフトウェア製品131のIncomingな変更を検出した場合には、それをベースコピー163とローカルコピー162の両者に反映させる。
【００２９】
本発明によると、ソフト部品データベース管理クライアント150によって生成されたソフト部品データベース121のOutgoingな変更は、自動的に、ソフトウェア製品管理部130に格納されたソフトウェア製品131、133のIncomingな変更となる。
【００３０】
ソフトウェア製品操作クライアント160によって生成されたソフトウェア製品131のOutgoingな変更は、自動的に、ソフト部品データベース121に格納されたソフト部品、及び、ソフトウェア製品管理部130に格納された他のソフトウェア製品133のIncomingな変更となる。
【００３１】
なお、ソフト部品データベース121、ソフト部品-製品対応表122、更新情報123、ソフトウェア製品ソースファイル群131、133、およびソフト部品-ファイル対応情報132および134をバージョン管理するために、ソフト部品データベース管理部120およびソフトウェア製品管理部130としてCVSやSubversionといった既存のバージョン管理システムを用いてもよい。この場合、ソフトウェア製品操作クライアント160および164として、バージョン管理システム向けクライアントプログラムをそのまま利用することができる。一方、ソフト部品データベース管理クライアント150については、本発明に従ったものを利用することになる。 
【００３２】
図２は、本発明のソフトウェア構成管理システムのハードウェア構成の一例を示す。この例では、図１におけるソフトウェア構成管理サーバ100をサーバ201に配置し、ソフト部品データベース管理クライアント150をコンピュータ202に配置し、ソフトウェア製品操作クライアント160および164をそれぞれコンピュータ203および204に配置している例を示している。しかしながら、ソフト部品データベース管理クライアント150およびソフトウェア製品操作クライアント160を同一のコンピュータに配置してもよい。また、構成管理サーバ100を構成する構成管理部110、ソフト部品データベース管理部120、およびソフトウェア製品管理部130をそれぞれ異なるサーバに配置してもかまわない。
【００３３】
図３は、図１のソフトウェア構成管理サーバ100のソフト部品データベース121のデータ構造の例を示す。本例によると、ソフト部品データベース121に含まれる全てのソフト部品は単一のツリーで管理される。ツリーは、ノード300、302、304、306、308からなり、各ノードを表すボックスには、「ノードID」、及び、「型」が示され、更に、「濃度cardinality」が示されている。例えば、ノード306のノードIDは、「BooleanWeight」であるが、ノード304のノードIDは、「WeightSensor」である。ノード306の型は「Feature」であるが、ノード304の型は「Group」である。「Group」型ノードは、下位のノードをまとめるグループを表す。
【００３４】
ノードは選択肢を表している。ノードを選択すると、ソフト部品データベース121から、そのノードに対応するソフト部品が抽出される。従って、このツリー構造は、ソフト部品の構成情報として利用される。例えば、新たにソフトウェア製品を生成する場合には所望のノードを選択する。ノード306が選択された場合にはソフト部品307がソフト部品データベース121から抽出され、ノード308が選択された場合にはソフト部品309がソフト部品データベース121から抽出される。抽出されたソフト部品307、309は、新たなソフトウェア製品を構成するソースファイルに統合される。
【００３５】
ノード306および308は、「Group」型ノード304に含まれる。ノード306および308のいずれかが選択された場合でも、ノード304に対応するソフト部品305がソフト部品データベース121から抽出される。抽出されたソフト部品305は、共通部品として、新たなソフトウェア製品を構成するソースファイルに統合される。
【００３６】
以上のように、ソフト部品データベース121は、ソフト部品を管理するツリー構造を有する。そのため、ソフトウェア製品を生成する場合に、それを構成するソフト部品の情報を提供する重要な役割がある。
【００３７】
図４は、 図３に示すソフト部品データベース121のデータ構造をXMLを用いて記述した例を示す。XMLは、ユーザが独自にタグを定義することができるマークアップ言語である。尚、本例のソフト部品データベース121を記述するマークアップ言語として、XMLの他に、SGML等を用いてもよい。
【００３８】
図５は、図３に示すソフト部品データベース121を、リレーショナルデータベースを用いて表現した例を示す。図５Ａの表は、ノードID、型、濃度、親ノードIDの関係を示す。図５Ｂの表は、ソフト部品ID、パス、コンテンツ、親ノードIDの関係を示す。親ノードIDは、図３のツリー構造において、上位の階層のノードを示す。
【００３９】
図６は、図１のソフトウェア構成管理サーバ100のソフト部品-製品対応表122の例を示す。ソフト部品-製品対応表122は、ソフト部品IDと、そのソフト部品を使用するソフトウェア製品の関係を示す。この例では、図３に示すソフト部品データベース121を利用して、ソフトウェア製品A、B、およびCが生成されたことを示す。例えば、ソフト部品ID「Light/initLight」に対応するソフト部品は、ソフトウェア製品AおよびCにおいて使用されていることを示す。
【００４０】
ソフト部品IDを検索キーとして、ソフト部品-製品対応表122を検索すると、そのソフト部品が含まれているソフトウェア製品群を特定することができる。従って、ソフト部品-製品対応表122を利用すると、ソフト部品データベース121に格納されたソフト部品を利用して生成されたソフトウェア製品の履歴を管理することができる。
【００４１】
図７は、図１のソフトウェア構成管理サーバ100の更新情報123の例を示す。更新情報123は、ソフト部品IDと、ソフトウェア製品と、そのソフト部品の更新日時の関係を示す。この例では、ソフト部品データベース121に格納されたソフト部品ID「AnalogWeight/initWeight」に対応するソフト部品の内容が2008年3月19日11時19分47秒に、ソフトウェア製品Aから反映されたことを示す。更新情報123は、ソフトウェア製品の変更に基づいてなされたソフト部品データベース121に格納されたソフト部品の更新履歴を管理する。
【００４２】
図８は、図１のソフトウェア構成管理サーバ100のソフト部品-ファイル対応情報132および134の例を示す。ソフト部品-ファイル対応情報は、ソフト部品IDと、そのソフト部品を含むソースファイルと、そのソースファイルの開始行及び終了行の関係を示す。この例では、ソフト部品ID「AnalogWeight/initWeight」に対応するソフト部品は、ソースファイル「/src/Sensors/Weight/Weight.c」の4行目から36行目までであることを示す。
【００４３】
図９は、ソフト部品-ファイル対応情報をソースファイルに埋め込んだ例を示す。この例では、各ソフト部品の先頭と末尾に、注釈901〜904が挿入されている。これらの注釈にはソフト部品IDが含まれている。そのため、これらの注釈を解釈することにより、ソフト部品とソースファイルとの対応関係を特定することができる。
【００４４】
次に、ソフトウェア製品開発者160Aが、ソフトウェア製品の管理を行なう場合を説明する。ソフトウェア製品開発者160Aが、図１のソフトウェア製品管理部130に格納されたソフトウェア製品131のソースファイルを変更すると、変更内容は、ソフト部品データベース121のソフト部品に反映され、更に、ソフトウェア製品管理部130に格納された他のソフトウェア製品133に反映される。以下に、処理の説明と同時に、本発明のソフトウェア構成管理システムを構成する各部の動作について詳細に説明する。
【００４５】
図１０は、ソフトウェア製品管理部130に格納されたソフトウェア製品131のOutgoingな変更とIncomingな変更を検出し、それを表示する処理の例を示す。ソフトウェア製品開発者160Aは、ソフトウェア製品操作クライアント160にて、ソフトウェア製品131のOutgoingな変更とIncomingな変更を検出する処理を実行する命令入力する。それによって、ソフトウェア製品操作クライアント160の製品操作部161は、以下の処理を行なう。ステップ1001において、製品操作部161は、ローカルコピー162とベースコピー163とを比較し、両者の差分からOutgoingな変更を検出する。次にステップ1002において、製品操作部161は、ソフトウェア製品管理部130に格納されたソフトウェア製品131（リモートコピー）とベースコピー163とを比較し、両者の差分からIncomingな変更を検出する。最後にステップ1003において、製品操作部161は、図１１に示すような画面を表示する。
【００４６】
図１１は、ソフトウェア製品のOutgoingな変更とIncomingな変更の検出結果を示す画面の例を示す。図１１の画面は、図１０のステップ1003において製品操作部161によって生成される。この例では、ローカルコピー162のうち、ソースファイル”src/Actuators/Beeper/Beeper.c”に対応するソフト部品ID”initBeep”および”beep”においてOutgoingな変更が検出されたことを示す。図示のように右向きの矢印は、Outgoingな変更を示す。また、ソフトウェア製品131のうち、ソースファイル”src/Sensors/Weight/Weight.c”に対応するソフト部品ID”initWeight”においてIncomingな変更が検出されたことを示す。図示のように左向きの矢印は、Incomingな変更を示す。また、図１１に示す画面上にて、ソフトウェア製品開発者160Aが、マウスポインタ1101によってソフト部品ID”initWeight”を指定し、詳細表示を指示すると、図１２に示す画面が表示される。
【００４７】
図１１において、ソフトウェア製品開発者160Aが、マウスポインタ1101を用いてIncomingな変更があったソフト部品を指定し、ローカルコピー162とベースコピー163への反映を指示すると、製品操作部161は、ソフトウェア製品管理部130よりソフトウェア製品を抽出し、それをローカルコピー162とベースコピー163に反映する。図１１において、ソフトウェア製品開発者160Aが、マウスポインタ1101を用いてOutgoingな変更があったソフト部品を指定し、ベースコピー163、ソフト部品データベース121及びソフトウェア製品管理部130に格納された他のソフトウェア製品への反映を指示すると、製品操作部161は、図１３及び図１４に示す処理を実行する。
【００４８】
図１２は、Incomingな変更が検出されたソフト部品ID”initWeight”の詳細を示す画面の例を示す。図１２の画面は、図１１に示す画面において、ソフトウェア製品開発者160Aが、マウスポインタ1101によってソフト部品ID”initWeight”を指定し、詳細表示を指示したときに、表示される。
【００４９】
図１３は、ソフトウェア製品のOutgoingな変更を、ベースコピー163、ソフト部品データベース121及びソフトウェア製品管理部130に格納された他のソフトウェア製品へ反映させるときの製品操作部161における処理の例を示す。図１３の処理は、図１１において、ソフトウェア製品開発者160Aが、マウスポインタ1101を用いてOutgoingな変更があったソフト部品を指定し、ソフト部品データベース121及びベースコピー163への反映を指示した場合に実行される。ステップ1301において、製品操作部161は、指定されたソフト部品に含まれるOutgoingな変更を、ベースコピー163に反映する。即ち、ローカルコピー162に含まれるOutgoingな変更をベースコピー163に反映する。次にステップ1302において、ソフトウェア製品ID、ソフト部品ID、ソフト部品の内容をソフトウェア構成管理サーバ100の製品操作IF114に送信する。ソフトウェア構成管理サーバ100の製品操作IF114は、ソフトウェア製品操作クライアント160によって指定されたソフトウェア製品ID、ソフト部品ID、ソフト部品の内容を受信する。次に、ソフトウェア構成管理サーバ100の同期部112は、図１４に示す処理に従って、ソフト部品データベース121にソフト部品の修正内容を反映する。
【００５０】
図１４は、ソフトウェア製品のOutgoingな変更を、ソフト部品データベース121及びソフトウェア製品管理部130に格納された他のソフトウェア製品に反映する処理の例を示す。この処理は、ソフトウェア構成管理サーバ100の同期部112が実行する。ステップ1401において、同期部112は、指定されたソフトウェア製品IDとソフト部品IDを検索キーとして、ソフト部品-製品対応表122を検索する。即ち、ソフトウェア製品管理部130に格納されたソフトウェア製品より、指定されたソフト部品IDを含む全てのソフトウェア製品を検出し、更に、そのソフトウェア製品に含まれるソフト部品”X”を検出する。次にステップ1402において、同期部112は、ソフトウェア製品管理部130に格納されたソフト部品”X”に、指定されたソフト部品の内容を反映する。
【００５１】
次にステップ1403において、同期部112は、指定されたソフト部品IDを検索キーとして、ソフト部品-製品対応表122を検索する。即ち、ソフト部品データベース121に格納されたソフト部品より、指定されたソフト部品IDを含む全てのソフトウェア製品を検出し、そのソフトウェア製品に含まれるソフト部品”Y”を検出する。ステップ1404において、同期部112は、ソフト部品データベース121に格納されたソフト部品”Y”に、指定されたソフト部品の内容を反映する。
【００５２】
最後に、受信したソフトウェア製品IDとソフト部品IDを現在時刻とともに更新情報123に記録する。
【００５３】
例えば、ソフトウェア製品開発者160Aが、図１１に示す画面上にて、ソフト部品ID”beep”を指定したとする。ステップＳ1402にてソフトウェア製品管理部130に格納されたソフトウェア製品のうち、ソフト部品ID”beep”を含む全てのソフトウェア製品が抽出され、Outgoingな変更が反映される。また、ステップＳ1404にてソフト部品データベース121に格納されたソフト部品のうち、ソフト部品ID”beep”を含む全てのソフト部品が抽出され、Outgoingな変更が反映される。
【００５４】
次に、ソフト部品データベース管理者150Aがソフト部品データベース121の管理を行なう場合を説明する。ソフト部品データベース管理者150Aが、ソフトウェア製品管理部130に格納されたソフトウェア製品131の変更を検出すると、変更内容は、ソフトウェア製品管理部130に格納された他のソフトウェア製品133に反映される。
【００５５】
図１５は、ソフト部品データベース121のOutgoingな変更とIncomingな変更を検出し、それを表示する処理の例を示す。ソフト部品データベース管理者150Aは、ソフト部品データベース管理クライアント150にて、ソフト部品データベース121のOutgoingな変更とIncomingな変更を検出する処理を実行する命令入力する。それによって、ソフト部品データベース管理クライアント150のデータベース操作部151は、以下の処理を行なう。ステップ1501において、データベース操作部151は、ローカルコピー152とベースコピー153とを比較し、両者の差分からOutgoingな変更を検出する。次にステップ1502において、データベース操作部151は、ソフト部品データベース121とベースコピー163とを比較し、両者の差分からIncomingな変更を検出する。最後にステップ1503において、データベース操作部151は、図１６に示すような画面を表示する。
いる。
【００５６】
図１６は、ソフト部品データベース121のOutgoingな変更とIncomingな変更の検出結果を示す画面の例を示す。図１６の画面は、図１５のステップ1503においてデータベース操作部151によって生成される。この例では、ローカルコピー152のうち、パス”MicrowaveOven/Sensors/WeightSensor/AnalogWeight”が示すノードに付加されているソフト部品ID”initWeight”においてOutgoingな変更が検出されたことを示す。図示のように右向きの矢印は、Outgoingな変更を示す。また、図３に示すソフト部品データベース121のうち、パス”MicrowaveOven/Actuators/Beeper”が示すノードに付加されているソフト部品ID”initBeep”および”beep”においてIncomingな変更が検出されたことを示す。図示のように左向きの矢印は、Incomingな変更を示す。
【００５７】
図１６に示す画面上にて、ソフト部品データベース管理者150Aが、マウスポインタ1601によってソフト部品ID”initWeight”を指定し、詳細表示を指示すると、例えば図１２に示すような画面が表示される。
【００５８】
図１６に示す画面上にて、ソフト部品データベース管理者150Aが、マウスポインタ1601を用いてIncomingな変更があったソフト部品を指定し、反映ボタン1610を押すと、データベース操作部151は、ソフトウェア構成管理システムに図１７に示す処理を実行するように指示する。
【００５９】
図１７は、ソフト部品データベース121のIncomingな変更を、ローカルコピー152、ベースコピー153、及び、ソフトウェア製品133へ反映させるときのデータベース操作部151における処理の例を示す。図１７の処理は、図１６の画面にてIncomingな変更があったソフト部品を指定し、反映ボタン1610を押すと、ソフト部品データベース管理クライアント150のデータベース操作部151が実行する。ステップ1701において、データベース操作部151は、指定されたソフト部品の最新の内容を、ソフト部品データベース121から抽出し、ベースコピー153に反映する。次にステップ1702において、データベース操作部151は、指定されたソフト部品の最新の内容を、ソフト部品データベース121から抽出し、ローカルコピー152に反映する。ステップ1703において、データベース操作部151は、指定されたソフト部品ID、及び、ソフト部品の内容を、ソフトウェア構成管理サーバ100に送信する。ソフトウェア構成管理サーバ100の製品操作IF114は、ソフト部品データベース管理クライアント150から送信されたソフト部品ID、及び、ソフト部品の内容を受信する。次に、ソフトウェア構成管理サーバ100の同期部112は、図１８に示す処理に従って、ソフトウェア製品管理部130に格納されたソフトウェア製品133にソフト部品の修正内容を反映する。
【００６０】
図１８は、ソフト部品データベース121のIncomingな変更を、ソフトウェア製品管理部130に格納されたソフトウェア製品133に反映する処理の例を示す。即ち、ソフトウェア製品管理部130に格納されたソフトウェア製品131の変更を他のソフトウェア製品133に反映させる処理を示す。この処理は、ソフトウェア構成管理サーバ100の同期部112が実行する。まずステップ1801において、同期部112は、ソフト部品データベース管理クライアント150から送信されたソフト部品IDを検索キーとして、ソフト部品-製品対応表122を検索する。それによって、受信したソフト部品IDを含む全てのソフトウェア製品を検出する。次に、各ソフトウェア製品について、ステップ1802〜1804を実行する。ステップ1802において、受信したソフト部品IDを検索キーとして、ソフト部品-ファイル対応情報132、134を検索する。それによって、各ソフトウェア製品に含まれるソフト部品”X”を特定する。
【００６１】
次にステップ1803において、受信したソフト部品IDを検索キーとして、ソフト部品データベース121を検索する。それによって、ソフト部品データベース121に格納されたソフト部品のうち、受信したソフト部品IDを有するソフト部品”Y”を特定する。ステップ1804において、ソフト部品”Y”の内容をソフト部品”X”に反映する。
【００６２】
本発明によると、ソフトウェア製品開発者164Aは、図１１に示すような画面を通じて、ソフト部品データベース121に加えられた修正をIncomingな変更として知ることができる。同期部112は、同期処理によって、ソフト部品データベース121のIncomingな変更を、ソフトウェア製品管理部130に格納された他のソフトウェア製品133に反映する処理を行なう。
【００６３】
図１６に示す画面上にて、ソフト部品データベース管理者150Aが、マウスポインタ1601を用いてIncomingな変更があったソフト部品を指定し、変更取消ボタン1611を押すと、データベース操作部151は、ソフトウェア構成管理システムに図１９に示す処理を実行するように指示する。
【００６４】
図１９は、ソフトウェア製品131の変更に起因したソフト部品データベース121のIncomingな変更を取り消し、Outgoingな変更を反映させる処理の例を示す。ステップ1901において、ソフト部品データベース管理クライアント150のデータベース操作部151は、ローカルコピー152内のソフト部品の内容と、そのソフト部品IDをソフトウェア構成管理サーバ100に送信する。ソフトウェア構成管理サーバ100のデータベース操作IF111は、ローカルコピー152内のソフト部品の内容と、そのソフト部品IDを受信する。
【００６５】
同期部112は、図２０に示す処理を実行し、変更の取り消しを行う。即ち、本発明のソフトウェア構成管理システムは、ローカルコピー152の内容によって、ソフト部品データベース121内のソフト部品を上書きする。従って、ソフトウェア製品131の変更に起因したソフト部品データベース121に格納されたソフト部品のIncomingな変更は、取り消される。また、ソフト部品データベース121は、ローカルコピー152の内容、即ち、ソフト部品のOutgoingな変更が反映される。
【００６６】
図２０は、ソフトウェア製品131の変更に起因したソフト部品データベース121のIncomingな変更を取り消し、Outgoingな変更を反映させる処理の例を示す。ステップ2001において、同期部112は、受信したソフト部品IDを検索キーとして、ソフト部品データベース121を検索する。それによって、ソフト部品IDに対応する全てのソフト部品を抽出する。次にステップ2002において、抽出したソフト部品に対して、受信したローカルコピー152内のソフト部品の内容を反映する。次にステップ2003において、受信したソフト部品IDを検索キーとして、更新情報123を検索する。それによって、受信したソフト部品IDに対して最後に変更を加えたソフトウェア製品を特定する。ステップ2004において、受信したソフト部品IDを検索キーとして、ソフト部品-ファイル対応情報を検索する。それによって、このソフトウェア製品に含まれている、対応するソフト部品”X”を特定する。最後にステップ2005において、受信したソフト部品の内容を、ソフト部品”X”に反映する。以上により、ソフトウェア製品開発者160Aは、図１１に示すような画面を通じて、ソフト部品データベース管理クライアント150によって生成されたソフト部品データベース121の変更の取消をIncomingな変更として知ることができる。
【００６７】
図１６に示す画面上にて、ソフト部品データベース管理者150Aが、マウスポインタ1601を用いてIncomingな変更があったソフト部品を指定し、「新規部品として追加」ボタン1612を押すと、データベース操作部151は、ソフトウェア構成管理システムに図２１に示す処理を実行するように指示する。
【００６８】
図２１は、Incomingな変更があったソフト部品を新規ソフト部品としてソフト部品データベース121に追加するときの処理を示す。即ち、ソフトウェア製品131の変更に起因した、Incomingな変更があったソフト部品を新規ソフト部品として追加する。
【００６９】
ステップ2101において、データベース操作部151は、ソフト部品データベース管理者150Aが指定したローカルコピー152内のソフト部品の内容と、そのソフト部品IDをソフトウェア構成管理サーバ100に送信する。ソフトウェア構成管理サーバ100の対応表更新部113は、図２２に示す処理を行なう。
【００７０】
図２２、図２３、図２４及び図２５を参照して、対応表更新部113が、ソフト部品を新規ソフト部品として複製しソフト部品データベース121に追加する処理の例を説明する。ここでは、図３に示すソフト部品データベース121に、新規ソフト部品を追加する場合を例に説明する。ステップ2200において、対応表更新部113は、受信したソフト部品IDを検索キーとして、ソフト部品データベース121における対応するソフト部品を検出する。次に、検出したソフト部品が付加されているノードが、兄弟ノードを有するか否か調べる。兄弟ノードを有しない場合は、ステップ2201に進み、兄弟ノードを有する場合ステップ2211に進む。ここでは、図３のノード306に付加されたソフト部品307、又は、ノード330に付加されたソフト部品331を検出した場合を説明する。図３のソフト部品307の場合には、兄弟ノードを有するから、ステップ2211に進む。その結果、図２４に示す結果となる。図３のソフト部品331の場合には、兄弟ノードを有しないから、ステップ2201に進む。その結果、図２５に示す結果となる。
【００７１】
ステップ2201において、ステップ2200で特定したノードが「Feature」型である場合には、同ノードを「Group」型に変更する。ステップ2200で特定したノードが「Group」型の場合には、そのまま次のステップに進む。図３のノード330は「Feature」型であるから、「Group」型に変更する。図３のノード330は、図２５では、ノード2500に変更されている。ステップ2202において、図23に示す画面を表示する。図２３に示す画面には、新規「Feature」型ノードの名前を入力する項目が表示される。ソフト部品データベース管理者150Aは、そこに、「Feature」型ノードの名前を入力する。こうして、対応表更新部113は、「Feature」型ノードの名前を受付ける。次にステップ2203において、新規「Feature」型ノードを、ステップ2201において生成した「Group」型ノードの子として追加する。図２５では、新規「Feature」型ノード2510が付加されている。ステップＳ2204において、「Group」型ノードに付加されているソフト部品を、ステップ2203において追加した「Feature」型ノードに移動する。図２５では、図３のソフト部品331が、ソフト部品2511として、追加した「Feature」型ノードに付加されている。
【００７２】
次にステップ2211において、図２３に示すような画面を表示する。ソフト部品データベース管理者150Aは、そこに、「Feature」型ノードの名前を入力する。対応表更新部113は、「Feature」型ノードの名前を受付ける。次にステップ2212において、この新規「Feature」型ノードを、ステップ2200において特定した兄弟ノードまたはステップ2203において追加した新規ノードの兄弟として追加する。図２４では、新規「Feature」型ノード2400が追加されている。図２５では、新規「Feature」型ノード2512が追加されている。
【００７３】
ステップ2213において、受信したソフト部品IDに対応するソフト部品が付加されているノードを検出する。このノードに付加されている他のソフト部品を全て、ステップ2212において追加した新規ノードにコピーし、それぞれ新規ソフト部品IDを割り当てる。
【００７４】
図２４では、ノード”AnalogWeight”308に付加されているソフト部品309の内容は、ソフト部品データベース管理クライアント150から送信された、ソフトウェア製品131の変更の反映前のものであるが、新規ノード”NewAnalogWeight”2400に付加されている新規ソフト部品2401の内容は、ソフト部品データベース管理クライアント150から送信された、ソフトウェア製品131の変更の反映後のものである。図２５では、新規ノード”OriginalStartButton”2510に付加されたソフト部品2511は、ソフト部品データベース管理クライアント150から送信された、ソフトウェア製品131の変更の反映前のものである。また、新規ノード”NewStartButton”2512に付加された新規ソフト部品2513の内容は、ソフトウェア製品131から送信されたソフトウェア製品131の変更の反映後のものである。
【００７５】
図２６、図２７及び図２８を参照して、対応表更新部113が、ソフトウェア製品131の変更に起因して、ソフト部品-製品対応表122およびソフト部品-ファイル対応情報132、134を更新する処理を説明する。図２７は、図６に示すソフト部品-製品対応表122を更新した結果を示す。
【００７６】
ステップ2601において、対応表更新部113はまず、受信したソフト部品IDを基に更新情報123を検索し、対応するソフト部品に対し最後に変更を加えたソフトウェア製品131のIDを特定する。このソフトウェア製品131には新規ソフト部品が含まれるはずである。
【００７７】
ステップ2602において、ソフト部品-製品対応表122に対して、図２２のステップ2213にて割り当てた新規ソフト部品IDの欄を追加し、ソフトウェア製品IDを割り当てる。図２７の例では、新規ソフト部品のIDとして”NewAnalogWeight/initWeight”2703および”NewAnalogWeight/getWeight”2704が追加されている。
【００７８】
次にステップ2603において、新規ソフト部品IDと対応する従来のソフト部品IDの欄から上記ソフトウェア製品IDを削除する。図２７の例では、従来のソフト部品のID”AnalowWeight/initWeight”2701および”AnalogWeight/getWeight”2702の欄からはソフトウェア製品131のID”製品A”は削除されている。
【００７９】
最後にステップ2604において、新規ソフト部品IDを基に、ソフトウェア製品131に対応するソフト部品-ファイル対応情報132を更新する。
【００８０】
図２８は、対応表更新部113が、図９に示すソフト部品-ファイル対応情報132を更新した例を示している。この例では、対応表更新部113が、ソフト部品の先頭に挿入されている注釈に含まれるソフト部品IDを新規ソフト部品IDによって更新している。
【００８１】
本発明によると、ソフト部品データベース管理者150Aは、ソフトウェア製品131におけるソフト部品の変更を、ソフト部品データベース121に反映するように、指示する。更に、ソフト部品データベース管理者150Aは、ソフトウェア製品131における変更されたソフト部品を、新規ソフト部品としてソフト部品データベース121に追加するよう指示する。
【００８２】
それによって、本発明のソフトウェア構成管理システムは、自動的にソフト部品データベース121のツリー構造を変更し、ソフト部品-製品対応表122およびソフトウェア製品131に対応するソフト部品-ファイル対応情報132を更新する。従って、ソフト部品とソフトウェア製品群との間にて、ソフト部品の変更が相互に確実に反映される。
【００８３】
本発明によると、ソフト部品データベース121とソフトウェア製品管理部130内の全てのソフトウェア製品群との間におけるソフト部品の変更の相互反映を維持することができる。
【００８４】
図２９及び図３０を参照して説明する。図１６において、ソフト部品データベース管理者150Aは、マウスポインタ1601を用いてIncomingな変更があったソフト部品を指定し、「差異部分のみを新規部品として追加」ボタン1613を押すと、本発明のソフトウェア構成管理システムは、図２９の処理を実行する。即ち、従来のソフト部品を削除し、指定された差異部分を変数とし共通部分をテンプレートとする新規ソフト部品群をソフト部品データベースに121追加する。
【００８５】
ステップ2901において、データベース操作部151は、図３０に示すテンプレート編集画面を表示する。データベース操作部151は、テンプレート編集画面を介して、ソフト部品データベース管理者150Aから、テンプレートおよび複数の変数情報を受付ける。
【００８６】
図３０を参照して説明する。テンプレート編集画面の差異部分表示領域3002の左側には、指定されたソフト部品に対応するローカルコピー内のソフト部品の内容が表示される。テンプレート編集画面の差異部分表示領域3002の右側には、ソフト部品データベース内のソフト部品が表示される。また、差異部分は、背景とは異なる色で表示される。マウスポインタ3001を用いて差異部分を選択し変数追加3010ボタンを押すと、変数一覧テーブル3020内に新規変数が追加され、変数名の入力を受付ける。この例では、変数名として”initMode”が入力されている。複数の変数を受付けることができる。更に、テンプレートプレビュー領域3030に、変数部分3031を強調表示したテンプレートの内容が表示される。この例では変数部分3031が”${initMode}”と表現されている。これは、テンプレートエンジンであるVelocity(http://jakarta.apache.org/velocity/)のテンプレート文法に基づいている。
【００８７】
尚、各変数情報には変数名および差異部分に対応するローカルコピー152内の文字列とソフト部品データベース121内の文字列の両方を含む。以下では、変数情報に含まれる、ローカルコピー152内の文字列を従来変数、ソフト部品データベース121内の文字列を新規変数と呼ぶことにする。
【００８８】
ステップ2902において、データベース操作部151は、受付けた変数およびテンプレートを指定されたソフト部品に対応するソフト部品IDとともにソフトウェア構成管理サーバ100に送信する。ソフトウェア構成管理サーバ100の対応表更新部113は、図３１に示す処理を行なう。
【００８９】
図３１及び図３２を参照して、対応表更新部113が、新規ソフト部品として変数およびテンプレートをソフト部品データベース121に追加する処理を説明する。ここでは、図３に示すソフト部品データベース121に、新規ソフト部品として変数およびテンプレートを追加する場合を例に説明する。ソフトウェア構成管理サーバ100は、データベース操作IF111を介して、ソフト部品データベース管理クライアント150から変数およびテンプレートを受信する。
【００９０】
まずステップ3101において、対応表更新部113は、受信したソフト部品IDを基に、ソフト部品データベース121における対応するソフト部品を特定する。このソフト部品に付加されているノードに、受信したテンプレートを新規ソフト部品として追加し、新規ソフト部品IDを割り当てる。図３の例では、ノード”AnalogWeight”308に新規ソフト部品3200がテンプレートとして追加されている。
【００９１】
次に受信した変数情報毎にステップ3102〜3109を実行する。まずステップ3102において、図２３に示す画面を表示し、新規「Group」型ノード名を受付ける。次にステップ3103において、テンプレートが付加されているノードに、受付けたノード名を持つ新規「Group」型ノードを子として追加する。図３２の例では、ノード308に新規ノードConversionMode”3201が付加されている。次にステップ3104において、図２３に示す画面を表示し、新規「Feature」型ノード名を受付ける。次にステップ3105において、ステップ3102において追加したノードに対し、受付けたノード名を持つ新規「Feature」型ノードを子として追加する。図３２の例では、”Continuous”ノード3202が追加されている。次にステップ3106において、このノードに、受信した従来変数を新規ソフト部品として追加し、新規ソフト部品IDをそれぞれ割り当てる。図３２の例では、新規ソフト部品3203が追加されている。次にステップ3107において、図２３に示す画面を表示し、新規「Feature」型ノード名を受付ける。次にステップ3108において、ステップ3102において追加したノードに対し、受付けたノード名を持つ新規「Feature」型ノードを子として追加する。図３２の例では、”OneShot”ノード3204が追加されている。次にステップ3109において、このノードに、受信した新規変数を新規ソフト部品として追加し、新規ソフト部品IDをそれぞれ割り当てる。図３の例では、新規ソフト部品3205が追加されている。最後に、ステップ3110において、受信したソフト部品IDに対応するソフト部品をソフト部品データベース121から削除する。図３２の例では、ノード”AnalogWeight”308に付加されていたソフト部品309は削除されている。
【００９２】
図３２は、対応表更新部113が新規ソフト部品として、変数およびテンプレートをソフト部品データベース121に追加した結果を示す。この例では、図３のノード”AnalogWeight”308に付加されているソフト部品309の代わりに、テンプレートとして新規ソフト部品3200が付加されている。変数として、新規ソフト部品3203、3205が付加されている。従って、ソフト部品3200をテンプレートとし、ソフト部品3203を変更部分とする新規ソフトウェア製品と、ソフト部品3200をテンプレートとし、ソフト部品3205を変更部分とする新規ソフトウェア製品の２つのソフトウェア製品を表す。
【００９３】
図３３、図３４及び図３５を参照して、対応表更新部113が、ソフト部品-製品対応表122およびソフト部品-ファイル対応情報132、134を更新する処理を説明する。図３４は、図６に示すソフト部品-製品対応表122を更新した結果を示す。
【００９４】
ステップ3301において、対応表更新部113はまず、受信したソフト部品IDを基に更新情報123を検索し、対応するソフト部品に対し最後に変更を加えたソフトウェア製品131のIDを特定する。このソフトウェア製品131には、新規変数とテンプレートを組合わせたソースファイルが含まれるはずである。そこでステップ3302において、ソフト製品-製品対応表122に対し、図３１に示すステップ3103および3109において追加した新規ソフト部品IDの欄を追加し、上記ソフトウェア製品IDを割り当てる。図３４の例では、新規ソフト部品IDの欄3410、3411、3412が追加されている。次にステップ3303において、ソフト製品-製品対応表122における受信したソフト部品IDの欄から上記ソフトウェア製品IDを削除する。図３４の例では、これらに対応する従来のソフト部品のID”AnalogWeight/initWeight”の欄3401からはソフトウェア製品AおよびBのID”製品A”および”製品B”が削除されている。
【００９５】
次にステップ3304において、追加したテンプレートおよび新規変数の内容およびそれらの新規ソフト部品IDを基に、上記ソフトウェア製品131に対応するソフト部品-ファイル対応情報132を更新する。次にステップ3305において、受信したソフト部品IDをキーにソフト部品-製品対応表122を検索し、対応するソフト部品を使用しているソフトウェア製品群のIDを特定する。同ソフトウェア製品群には従来変数とテンプレートを組合わせたソースファイルを含んでいることになる。そこでステップ3306において、ソフト製品-製品対応表122に対し、図３１に示すステップ3106において追加した新規ソフト部品IDの欄を追加し、上記ソフトウェア製品群のIDを割り当てる。
【００９６】
そしてステップ3307において、ソフト製品-製品対応表122における受信したソフト部品IDの欄から上記ソフトウェア製品群のIDを削除する。図３４の例では、テンプレートに対応する新規ソフト部品IDとして”AnalogWeight/ConversionMode/initWeightCommon”3410、従来変数に対応する新規ソフト部品IDとして
”AnalogWeight/ConversionMode/Continuous/initWeight”3411、
新規変数に対応する新規ソフト部品IDとして
”AnalogWeight/ConversionMode/OneShot/initWeight”3412が追加されている。
【００９７】
最後にステップ3308において、追加したテンプレートおよび従来変数の内容およびそれらの新規ソフト部品IDを基に、上記ソフトウェア製品群に対応するソフト部品-ファイル対応情報を更新する。
【００９８】
図３５は、対応表更新部113が、図９に示すソフト部品-ファイル対応情報132を更新した例を示す。この例では、対応表更新部113が、ソフト部品の先頭に挿入されている注釈に含まれるソフト部品IDを、テンプレートに対応する新規ソフト部品IDで更新している。また、変数部分の先頭および末尾に新たな注釈が挿入され、先頭に挿入される注釈には、新規変数または従来変数に対応する新規ソフト部品IDが含まれる。
【００９９】
本発明によると、ソフト部品データベース管理者150Aは、ソフト部品の変更部分のみを新規ソフト部品としてソフト部品データベース121に追加するように指示する。
【０１００】
それによって、本発明のソフトウェア構成管理システムは、自動的にソフト部品データベース121のツリー構造を変更し、ソフト部品-製品対応表122およびソフトウェア製品131に対応するソフト部品-ファイル対応情報132を更新する。従って、ソフト部品とソフトウェア製品群との間にて、ソフト部品の変更が相互に確実に反映される。
【０１０１】
本発明によると、ソフト部品データベース121とソフトウェア製品管理部130内の全てのソフトウェア製品群との間におけるソフト部品の変更の相互反映を維持することができる。
【０１０２】
本発明によると、ソフト部品データベースに新規ソフト部品を追加したり、ソフト部品を分割した場合でも、ソフト部品に加えられた修正をソフト部品データベースおよび同データベースから生成したソフトウェア製品群に確実に反映することができる。更に、ソフト部品データベースから新規ソフトウェア製品を生成することができる。その結果、ソフト部品数およびソフトウェア製品数が大規模化した場合でも、ソフト部品データベースおよびソフトウェア製品群を構成管理可能となり、ソフトウェア製品の開発の効率を向上が可能となる。
【産業上の利用可能性】
【０１０３】
本発明によると、ソフトウェアだけでなく、モジュール構造化されたあらゆるテキスト文書をソフト部品データベースに格納し、それを基に新規文書のテキストファイルを自動構成することができる。更に、このようなソフト部品データベースを保守管理することが可能である。
【図面の簡単な説明】
【０１０４】
【図１】本発明によるソフトウェア構成管理システムの機能ブロックの例を示す図である。
【図２】本発明によるソフトウェア構成管理システムのハードウェア構成例を示す図である。
【図３】本発明によるソフトウェア構成管理サーバのソフト部品データベースを論理的なツリー構造で表した例を示す図である。
【図４】本発明によるソフトウェア構成管理サーバのソフト部品データベースの内容をXMLで記述した例を示す図である。
【図５】本発明によるソフトウェア構成管理サーバのソフト部品データベースの内容をリレーショナルデータベースのテープルで表示した例を示す図である。
【図６】本発明によるソフトウェア構成管理サーバのソフト部品-製品対応表の例を示す図である。
【図７】本発明によるソフトウェア構成管理サーバの更新情報の例を示す図である。
【図８】本発明によるソフトウェア構成管理サーバのソフト部品-ファイル対応情報の例を示す図である。
【図９】本発明によるソフトウェア構成管理サーバのソフト部品-ファイル対応情報をソースファイルに埋め込んだ例を示す図である。
【図１０】本発明によるソフトウェア製品操作クライアントの製品操作部において、ソフトウェア製品操作クライアント内にあるソフトウェア製品のローカルコピーと、ソフトウェア製品管理部内にあるソフトウェア製品との差分を抽出する処理の例を示す図である。
【図１１】本発明によるソフトウェア製品操作クライアントの製品操作部において、ソフトウェア製品操作クライアント内にあるソフトウェア製品のローカルコピーと、ソフトウェア製品管理部内にあるソフトウェア製品との差分を抽出した結果を表示する画面例を示す図である。
【図１２】本発明によるソフトウェア製品操作クライアントの製品操作部、又は、ソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品の差異部分の詳細を表示する画面の例を示す図である。
【図１３】本発明によるソフトウェア製品操作クライアントの製品操作部において、ソフトウェア製品における修正内容をソフト部品データベースに反映する処理の例を示す図である。
【図１４】本発明によるソフトウェア構成管理サーバの同期部において、ソフトウェア製品における修正内容をソフト部品データベースに反映する処理の例を示す図である。
【図１５】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品データベース管理クライアント内にあるソフト部品データベースのローカルコピーと、ソフト部品データベースとの差分を抽出する処理の例を示す図である。
【図１６】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品データベース管理クライアント内にあるソフト部品データベースのローカルコピーと、ソフト部品データベースとの差分を抽出した結果を表示する画面例を示す図である。
【図１７】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品データベースにおける修正内容をソフト部品データベースのローカルコピーに反映する処理の例を示す図である。
【図１８】本発明によるソフトウェア構成管理サーバの同期部において、ソフト部品データベースにおける修正内容をソフト部品データベースに反映する処理の例を示す図である。
【図１９】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品データベースにおける修正を取り消す処理の例を示す図である。
【図２０】本発明によるソフトウェア構成管理サーバの同期部において、ソフト部品データベースにおける修正を取り消す処理の例を示す図である。
【図２１】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品データベースにおいて変更されたソフト部品を新規ソフト部品としてソフト部品データベースに追加する処理の例を示す図である。
【図２２】本発明によるソフトウェア構成管理サーバの対応表更新部において、ソフト部品データベースにおいて変更されたソフト部品を新規ソフト部品としてソフト部品データベースに追加する処理の例を示す図である。
【図２３】本発明によるソフトウェア構成管理サーバの対応表更新部において、ソフト部品データベースを構成する論理的なツリーにおいて新規ノードを追加するとき、ノード名を受付ける画面例を示す図である。
【図２４】本発明によるソフトウェア構成管理サーバのソフト部品データベースにおいて、新規ソフト部品を追加した例を示す図である。
【図２５】本発明によるソフトウェア構成管理サーバのソフト部品データベースにおいて、新規ソフト部品を追加した例を示す図である。
【図２６】本発明によるソフトウェア構成管理サーバの対応表更新部において、ソフト部品データベースにおいて変更されたソフト部品を新規ソフト部品としてソフト部品データベースに追加する処理の例を示す図である。
【図２７】本発明によるソフトウェア構成管理サーバにおいて、対応表更新部によって更新されたソフト部品-製品対応表の例を示す図である。
【図２８】本発明によるソフトウェア構成管理サーバにおいて、対応表更新部によって更新されたソフト部品-ファイル対応情報の例を示す図である。
【図２９】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、ソフト部品データベースにおいて変更されたソフト部品について、差異部分のみを新規ソフト部品としてソフト部品データベースに追加する処理の例を示す図である。
【図３０】本発明によるソフト部品データベース管理クライアントのデータベース操作部において、テンプレート編集画面の例を示す図である。
【図３１】本発明によるソフトウェア構成管理サーバの対応表更新部において、ソフト部品データベースにおいて変更されたソフト部品について、差異部分のみを新規ソフト部品としてソフト部品データベースに追加する処理の例を示す図である。
【図３２】本発明によるソフトウェア構成管理サーバのソフト部品データベースにおいて、ソフト部品データベースにおいて変更されたソフト部品について、差異部分のみを新規ソフト部品としてソフト部品データベースに追加した例を示す図である。
【図３３】本発明によるソフトウェア構成管理サーバの対応表更新部において、ソフト部品データベースにおいて変更されたソフト部品について、差異部分のみを新規ソフト部品としてソフト部品データベースに追加する処理の例を示す図である。
【図３４】本発明によるソフトウェア構成管理サーバにおいて、対応表更新部によって更新されたソフト部品-製品対応表の例を示す図である。
【図３５】本発明によるソフトウェア構成管理サーバにおいて、対応表更新部によって更新されたソフト部品-ファイル対応情報の例を示す図である。
【符号の説明】
【０１０５】
１００…ソフトウェア構成管理サーバ
１１０…構成管理部
１１１…データベース操作IF
１１２…同期部
１１３…対応表更新部
１１４…製品操作IF
１２０…ソフト部品データベース管理部
１２１…ソフト部品データベース
１２２…ソフト部品-製品対応表
１２３…更新情報
１３０…ソフトウェア製品管理部
１３１…ソフトウェア製品Ａ
１３２…ソフトウェア製品Ａに対応するソフト部品-ファイル対応情報
１３３…ソフトウェア製品Ｂ
１３４…ソフトウェア製品Ｂに対応するソフト部品-ファイル対応情報
１５０…ソフト部品データベース管理クライアント
150A…ソフト部品データベース管理者
１５１…データベース操作部
１５２…ソフト部品データベースのローカルコピー
１５３…ソフト部品データベースのベースコピー
１６０…ソフトウェア製品操作クライアント
160A…ソフトウェア製品Ａの開発者
１６１…製品操作部
１６２…ソフトウェア製品Ａのローカルコピー
１６３…ソフトウエア製品Ａのベースコピー
【図１】
2010033373.tif 000003
【図２】
2010033373.tif 000004
【図３】
2010033373.tif 000005
【図４】
2010033373.tif 000006
【図５】
2010033373.tif 000007
【図６】
2010033373.tif 000008
【図７】
2010033373.tif 000009
【図８】
2010033373.tif 000010
【図９】
2010033373.tif 000011
【図１０】
2010033373.tif 000012
【図１１】
2010033373.tif 000013
【図１２】
2010033373.tif 000014
【図１３】
2010033373.tif 000015
【図１４】
2010033373.tif 000016
【図１５】
2010033373.tif 000017
【図１６】
2010033373.tif 000018
【図１７】
2010033373.tif 000019
【図１８】
2010033373.tif 000020
【図１９】
2010033373.tif 000021
【図２０】
2010033373.tif 000022
【図２１】
2010033373.tif 000023
【図２２】
2010033373.tif 000024
【図２３】
2010033373.tif 000025
【図２４】
2010033373.tif 000026
【図２５】
2010033373.tif 000027
【図２６】
2010033373.tif 000028
【図２７】
2010033373.tif 000029
【図２８】
2010033373.tif 000030
【図２９】
2010033373.tif 000031
【図３０】
2010033373.tif 000032
【図３１】
2010033373.tif 000033
【図３２】
2010033373.tif 000034
【図３３】
2010033373.tif 000035
【図３４】
2010033373.tif 000036
【図３５】
2010033373.tif 000037