(57)【特許請求の範囲】
【請求項１】
ソースコードからなる複数のソフトウェア部品を記憶するデータベース記憶部から前記ソフトウェア部品を抽出しそれらを合成してソースファイルを生成する際に、前記データベース記憶部から抽出した各ソフトウェア部品の前記データベース記憶部における格納場所を示す注釈を前記各ソフトウェア部品に付与するプログラム自動構成装置において、
前記各ソフトウェア部品を合成して生成された前記ソースファイルが変更された場合に、
前記注釈を読み込み前記各ソフトウェア部品と前記データベース記憶部における前記各ソフトウェア部品の格納場所を特定する手段と、
前記各ソフトウェア部品と、前記注釈に基づいて特定された前記各ソフトウェア部品の格納場所に格納された比較対象ソフトウェア部品とを特定する手段と、
前記各ソフトウェア部品と前記比較対象ソフトウェア部品とを比較し内容の異なるソフトウェア部品を特定する手段と、
前記比較対象ソフトウェア部品を前記内容の異なるソフトウェア部品で置換えする手段と、
を備えたことを特徴とするプログラム自動構成装置。
【請求項２】
請求項１に記載のプログラム自動構成装置において、前記注釈は前記ソフトウェア部品の前後に付与されることを特徴とするプログラム自動構成装置。
【請求項３】
請求項１に記載のプログラム自動構成装置において、
前記比較対象ソフトウェア部品と前記内容の異なるソフトウェア部品との置換えは、外部からの要求に応じて行うことを特徴とするプログラム自動構成装置。
【請求項４】
請求項３に記載のプログラム自動構成装置において、
外部からの要求に応じて前記データベース記憶部の外部から指定された新規格納場所に前記内容の異なるソフトウェア部品を追加する手段を有することを特徴とするプログラム自動構成装置。
【請求項５】
請求項１に記載のプログラム自動構成装置において、
前記データベース記憶部は木構造に構造化して複数のソフトウェア部品を記憶し、
前記データベース記憶部におけるソフトウェア部品の格納場所を示す記法として前記木構造のパスを用いて前記注釈を付与し、
前記記法を用いて付与された前記注釈を読み込み同ソースファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を有することを特徴とするプログラム自動構成装置。
【請求項６】
請求項１に記載のプログラム自動構成装置において、
前記データベース記憶部は記憶する各ソフトウェア部品に対し一意に識別可能なＩＤを付与し、
前記データベース記憶部におけるソフトウェア部品の格納場所を示す情報として前記ＩＤを用いて前記注釈を付与し、
前記ＩＤを用いて付与された前記注釈を読み込み同ソースファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を有することを特徴とするプログラム自動構成装置。
【請求項７】
請求項５に記載のプログラム自動構成装置において、
前記木構造において一つ上の階層が同じノードから枝分かれしたソフトウェア部品を比較対象ソフトウェア部品に含めることを特徴とするプログラム自動構成装置。
【請求項８】
請求項１に記載のプログラム自動構成装置において、
読み込んだ前記注釈内に置換えを指示する情報が含まれていた場合、データベース記憶部における指定されたソフトウェア部品を前記注釈が付与された前記ソフトウェア部品で置換えする手段を備えることを特徴とするプログラム自動構成装置。
【請求項９】
請求項１に記載のプログラム自動構成装置において、
読み込んだ前記注釈内に新規追加を指示する情報が含まれていた場合、前記注釈を含むソースファイル内に合成された前記ソフトウェア部品を新規ソフトウェア部品としてデータベース記憶部における指定された新規格納場所に追加する手段を備えることを特徴とするプログラム自動構成装置。
【請求項１０】
請求項１に記載のプログラム自動構成装置において、
前記データベース記憶部は木構造に構造化して複数のソフトウェア部品を記憶し、
前記データベース記憶部におけるソフトウェア部品の格納場所を示す記法として前記木構造のパスを用いて前記注釈を付与し、
前記記法を用いて付与された前記注釈を読み込み同ソースファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を備えたことを特徴とするプログラム自動構成装置。
【請求項１１】
請求項１に記載のプログラム自動構成装置において、前記データベース記憶部は記憶する各ソフトウェア部品に対し一意に識別可能なＩＤを付与し、前記データベース記憶部におけるソフトウェア部品の格納場所を示す情報として前記ＩＤを用いて前記注釈を付与し、前記ＩＤを用いて付与された前記注釈を読み込み同ソースファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を備えたことを特徴とするプログラム自動構成装置。
【請求項１２】
請求項１に記載のプログラム自動構成装置において、木構造において一つ上の階層が同じノードから枝分かれしたソフトウェア部品を比較対象ソフトウェア部品に含めることを特徴とするプログラム自動構成装置。
【請求項１３】
請求項１１に記載のプログラム自動構成装置において、
読み込んだ前記注釈内に置換えを指示する情報が含まれていた場合、データベース記憶部における指定されたソフトウェア部品を前記注釈が付与された前記ソフトウェア部品で置換えする手段を備えることを特徴とするプログラム自動構成装置。
【請求項１４】
請求項１に記載のプログラム自動構成装置において、
読み込んだ前記注釈内に新規追加を指示する情報が含まれていた場合、前記注釈を含むソースファイル内に合成された前記ソフトウェア部品を新規ソフトウェア部品としてデータベース記憶部における指定された新規格納場所に追加する手段を備えることを特徴とするプログラム自動構成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既存のソフトウェア部品を格納するソフトウェア部品データベースから複数のソフトウェア部品を抽出し、それらを組合わせて新規プログラムのソースコードを自動生成するソフトウェア自動構成装置に関する。
【背景技術】
【０００２】
従来より、既存のソフトウェア部品（以下、ソフト部品と省略する）を組合わせて新たなソフトウェアを開発することにより、その開発コストの削減を図ることが考えられている。また、既存のソフト部品に実績のあるものを選択することにより、それらを組合わせて開発した新規ソフトウェアの品質を維持することも検討されている。そこで、既存のソフト部品を格納するソフト部品データベースから複数のソフト部品を抽出し、それらを組合わせて新規プログラムのソースコードを自動生成するプログラム自動構成装置として、〔特許文献１〕がある。
【０００３】
しかし、ソフト部品データベースに格納されたソフト部品においてバグが発見されたためバグ修正されたソフト部品に交換する場合や、新規ソフト部品をソフト部品データベースに追加する場合等、ソフト部品データベースを保守する必要がある。特にソフト部品データベースに格納されたソフト部品数が大規模化した場合、そのような保守作業を容易化することは重要である。この為〔特許文献２〕では、マクロ記述を用いて複数のソフト部品を管理するソフト部品データベースについて、修正されたソフト部品との交換を自動化する方法が示されている。
【０００４】
【特許文献１】特開２００６−１７１８９８号公報
【特許文献２】特開２００７−１０２３８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術は、マクロ記述を用いて複数のソフト部品を管理するソフト部品データベースのみに対して適用可能であり、その他の方法でソフト部品を管理するソフト部品データベースに対しては適用不可能である。また、従来技術では新規ソフト部品を追加する具体的な方法は検討されていない。
【０００６】
マクロ記述を用いた上記管理方法の場合、プログラム自動構成装置によって自動生成された新規プログラムのソースコード内に、同プログラムで使用しないものであってもソフト部品データベースに格納された全てのソフト部品が含まれてしまうため、同ソースコードの可読性が低いという問題がある。一方、自動生成した上記ソースコードに全てのソフト部品が含まれているため、同ソースコードに変更を加えた場合、ソフト部品データベースに格納されたソフト部品群のうちどのソフト部品に対応するソフト部品に変更が加えられたのか容易に特定できる。
【０００７】
上記のように、マクロ記述を用いた上記管理方法の場合、自動生成されたソースコードの可読性が低いため、必要なソフト部品のみを組合わせて新規プログラムのソースコードを自動生成するソフトウェア自動構成装置が用いられる場合が多い。しかし、マクロ記述を用いた上記管理方法の場合とは異なり、自動生成したソースコードに変更を加えた場合、変更を加えたソフト部品の特定と、対応するソフト部品のソフト部品データベースにおける格納場所を特定することが困難となる。特に格納されたソフト部品数が大規模化した場合、特に困難なものとなる。
【０００８】
本発明の目的は、ソフト部品データベースから必要なソフト部品のみを組合わせて新規プログラムのソースコードを自動生成するソフトウェア自動構成装置において、同ソフト部品データベースに格納されたソフト部品数が大規模化した場合でも、ソフト部品の交換や追加といった同ソフト部品データベースの保守作業を確実，容易にすることにある。
【課題を解決するための手段】
【０００９】
上記課題を実現するために本発明は、複数のソフトウェア部品を記憶するデータベース記憶部と、該データベース記憶部からソフトウェア部品を抽出しそれらを合成してファイルを生成する際に前記データベース記憶部から抽出した各ソフトウェア部品の前記データベース記憶部における格納場所を示す注釈を同ファイル内における前記ソフトウェア部品に付与するプログラム自動構成装置において、前記注釈を読み込み同ファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する格納場所特定手段と、前記格納場所を基に同ファイル内に合成された前記ソフトウェア部品と、比較すべき前記データベース記憶部に格納された比較対象ソフトウェア部品を特定するソフトウェア部品特定手段と、同ファイル内に合成された前記ソフトウェア部品と前記比較対象ソフトウェア部品とを比較し内容の異なるソフトウェア部品を特定する手段と、前記データベース記憶部における指定されたソフトウェア部品を同ファイル内に合成された前記ソフトウェア部品で置換えする手段とを備えたことを特徴とするものである。
【００１０】
また、本発明はプログラム自動構成装置において、前記ソフトウェア部品の前後に付与された前記注釈を読み込み、前記ファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を備えることを特徴とするものである。
【００１１】
また、本発明はプログラム自動構成装置において、外部からの要求に応じて前記データベース記憶部における指定されたソフトウェア部品を同ファイル内に合成された前記ソフトウェア部品で置換えする手段を備えることを特徴とするものである。
【００１２】
また、本発明はプログラム自動構成装置において、前記データベース記憶部の外部から指定された新規格納場所に前記ファイル内に合成された前記ソフトウェア部品を追加する手段を備えることを特徴とするものである。
【００１３】
更に、上記課題を実現するために本発明は、複数のソフトウェア部品を記憶するデータベース記憶部と、該データベース記憶部からソフトウェア部品を抽出しそれらを合成してファイルを生成する際に前記データベース記憶部から抽出した各ソフトウェア部品の前記データベース記憶部における格納場所を示す注釈を同ファイル内における前記ソフトウェア部品に付与するプログラム自動構成装置において、前記注釈を読み込み同ファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段と、前記格納場所を基に同ファイル内に合成された前記ソフトウェア部品と、比較すべき前記データベース記憶部に格納された比較対象ソフトウェア部品を特定する手段と、同ファイル内に合成された前記ソフトウェア部品と前記比較対象ソフトウェア部品とを比較し内容の異なるソフトウェア部品を特定する手段と、同ファイル内に合成された前記ソフトウェア部品を前記データベース記憶部における指定されたソフトウェア部品で置換えする手段とを備えたことを特徴とするものである。
【００１４】
また、本発明はプログラム自動構成装置において、前記データベース記憶部は木構造に構造化して複数のソフトウェア部品を記憶し、前記データベース記憶部におけるソフトウェア部品の格納場所を示す記法として前記木構造のパスを用いて前記注釈を付与し、前記記法を用いて付与された前記注釈を読み込み同ファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を有することを特徴とするものである。
【００１５】
また、本発明はプログラム自動構成装置において、前記データベース記憶部は記憶する各ソフトウェア部品に対し一意に識別可能なＩＤを付与し、前記データベース記憶部におけるソフトウェア部品の格納場所を示す情報として前記ＩＤを用いて前記注釈を付与し、前記ＩＤを用いて付与された前記注釈を読み込み同ファイル内に合成された各ソフトウェア部品と前記データベース記憶部における同ソフトウェア部品の格納場所を特定する手段を有することを特徴とするものである。
【００１６】
また、本発明はプログラム自動構成装置において、前記格納場所に格納されたソフトウェア部品と兄弟関係にあるソフトウェア部品を比較対象ソフトウェア部品に含めることを特徴とするものである。
【００１７】
また、本発明はプログラム自動構成装置において、読み込んだ前記注釈内に置換えを指示する情報が含まれていた場合、データベース記憶部における指定されたソフトウェア部品を前記注釈が付与された前記ソフトウェア部品で置換えする手段を備えることを特徴とするものである。
【００１８】
また、本発明はプログラム自動構成装置において、読み込んだ前記注釈内に新規追加を指示する情報が含まれていた場合、前記注釈を含むファイル内に合成された前記ソフトウェア部品を新規ソフトウェア部品としてデータベース記憶部における指定された新規格納場所に追加する手段を備えることを特徴とするものである。
【発明の効果】
【００１９】
上記本発明の構成により、ソフト部品データベースから必要なソフト部品のみを組合わせて新規プログラムのソースコードを自動生成する場合においても、自動生成したソースコードに加えられた変更の有無の特定，変更を加えたソフト部品の特定と、対応するソフト部品のデータベース記憶部における格納場所を容易に特定可能となる。
【００２０】
その結果、ソフト部品数が大規模化した場合でも、ソフト部品を記憶するデータベース記憶部に対する保守作業を容易にすることが実現出来る。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施例を図面を用いて説明する。
【実施例１】
【００２２】
以下では、ソフト部品データベースに格納されているソフト部品を「ＤＢソフト部品」、ソフトウェア自動構成装置が生成したソースファイルに含まれるソフト部品を「派生ソフト部品」と呼ぶことにする。
【００２３】
図１は、本発明のソフトウェア自動構成装置の機能ブロック図である。ソフトウェア自動構成装置は自動構成部１００およびソフト部品データベース１５０から構成される。自動構成部１００は、コード生成部１１０およびデータベース保守部１２０から構成される。図２は、本発明のソフトウェア自動構成装置のハードウェア構成の一例を示している。この例では、図１における自動構成部１００を中央演算装置を備えたコンピュータ２０１に配置し、データベース保守部もコンピュータ２０１に配置し、ソフト部品データベース１５０をインターネット等のネットワークで繋がれたサーバ２０３に配置している例を示している。しかしながら、自動構成部１００およびソフト部品データベース１５０を同一のコンピュータに配置したり、自動構成部１００におけるコード生成部１１０およびデータベース保守部１２０をそれぞれ異なるコンピュータに配置してもかまわない。
【００２４】
ソフト部品データベース１５０には、複数のソフト部品が格納される。ここで、ソフト部品とはソースファイルまたは部分的なソースコード文字列を示す。ソフト部品データベース１５０において、全てのソフト部品は単一のツリーで管理される。ソフト部品データベースが管理するツリーの例を図３に示す。図４は、ユーザが独自にタグを定義できるマークアップ言語であるＸＭＬを用いて、図３に示すツリーを記述した例を示している。上記の様なマークアップ言語として、ＸＭＬの他にもＳＧＭＬ等を用いて記述してもよい。また、リレーショナルデータベースを用いてソフト部品データベースを実現してもよい。図５は、リレーショナルデータベースを用いて、図３に示すツリーを管理した例を示している。
【００２５】
自動構成部１００はコード生成部１１０およびデータベース保守部１２０から構成される。コード生成部１１０は注釈付加部１１１を備える。コード生成部１１０は、自動生成する新規プログラムに必要なソフト部品をソフト部品データベース１５０から抽出する。そして図７に示すように、コード生成部１１０は、抽出した前記ソフト部品の前後に同ソフト部品のソフト部品データベース１５０における格納場所情報を、注釈付加部１１１を用いて注釈として付加した後、それらを適切に結合しコンパイル可能なソースファイルとして出力する。注釈付加部１１１が各ソフト部品の前後に付加する前記注釈において、図７に示すように、前記格納場所情報は前後何れか一方に含めてもよい。また、ソフト部品７０１および７０２のように、ソースファイル内において必ず派生ソフト部品が連続して合成される場合には、必ずしも派生ソフト部品の末端に注釈を付加する必要はない。例えば、注釈７１３および７２３が付加されていなくても、注釈７１１および７２１のみを用いて派生ソフト部品７１２および７２２を特定可能である。しかし、前記ソースファイル内において派生ソフト部品が連続して合成されない場合、ソフト部品の前記ソフト部品の前後に前記注釈を付加することにより、ソフト部品特定部１２１は前記ソースファイルに合成されたソフト部品の範囲を容易に特定可能となる。なお、コード生成部１１０がソフト部品データベース１５０から抽出すべきソフト部品の指定は、ＧＵＩを介してソフトウェア自動構成装置のユーザから受け付ける方法や、それらを指定する情報を含む何らかのファイルで受け付ける方法等が考えられる。
【００２６】
データベース保守部１２０はソフト部品特定部１２１，比較対象特定部１２３，ソフト部品比較部１２４、およびソフト部品操作部１２５から構成され、ソフト部品特定部１２１は注釈抽出部１２２を備える。ソフト部品特定部１２１は、入力されたソースファイル１３０に対し注釈抽出部１２２を用いて前記注釈を抽出することによって前記ソースファイル１３０に含まれる派生ソフト部品（の範囲）を特定し、同派生ソフト部品とそれに付加された注釈に含まれる前記格納場所情報を比較対象特定部１２３に出力する。比較対象特定部１２３は入力した前記格納場所情報を基にソフト部品データベース１５０に格納されたＤＢソフト部品群のうち、入力した前記派生ソフト部品と比較すべきＤＢソフト部品を特定し、前記派生ソフト部品および比較対象として特定した前記ＤＢソフト部品をソフト部品比較部１２４に出力する。ソフト部品比較部１２４は、入力した前記派生ソフト部品の内容と前記ＤＢソフト部品の内容を比較し、内容の異なる場合には前記派生ソフト部品，前記ＤＢソフト部品，前記格納場所情報と差異部分をソフト部品操作部１２５に出力する。ソフト部品操作部１２５は、ソフト部品比較部１２４から入力された内容の異なる前記ソフト部品について、指定された方針に従って、ソフト部品データベース１５０に格納された前記ＤＢソフト部品を前記派生ソフト部品と入れ替えるか、前記派生ソフト部品を新規ＤＢソフト部品としてソフト部品データベース１５０に追加する。なお、ソフト部品操作部１２５の上記のような動作方針を指定する方法としては、ＧＵＩを介してユーザ１６０から受け付ける方法や、派生ソフト部品を修正した際に、同派生ソフト部品に付加されている注釈内に、前記方針を指定する情報を追加しておき、注釈抽出部が同情報を抽出してソフト部品操作部１２５に出力する方法が考えられる。
【００２７】
以下では、本発明のソフトウェア自動構成装置を構成する各部について詳細に説明する。
【００２８】
図３はソフト部品データベース１５０に格納されるソフト部品群の例であり、論理的なツリー構造で示したものである。図４は、図３に示す論理的ツリーをＸＭＬで記述した例を示している。図４ではスペースの都合上、図３に示す論理的ツリーのうちノード３００〜３０９に対応するＸＭＬを示している。
【００２９】
図４において、＜Group＞および＜Feature＞タグがツリー構造を形成している。＜Group＞タグはソフト部品群を分類するためのものである。例えば図３において、ノード３００は図４における＜Group＞タグ４００に対応し、“Microwave Oven”というオーブンレンジシステムそのものを定義している。すなわち、図３のツリーにおいてノード３００の子孫ノードは全てオーブンレンジシステムに関するソフト部品であるという分類を示している。また、オーブンレンジシステムに関するソフト部品は“Sensors”および“Actuators”に分類されることを、ノード３０２および３４０が示している。図４に示すように＜sub Groups＞タグを導入することにより、このような＜Group＞タグの入れ子構造を表現可能にしている。そして、ノード３０４および３３０，３４１，３４２によって、分類“Sensors”には“Weight Sensor”および“Start Button”というソフト部品が属しており、分類“Actuators”には“Beeper”および“Light”というソフト部品が属していることが定義される。
【００３０】
＜Feature＞タグは、本データベースから自動生成する新規プログラムに必要なソフト部品の選択肢を定義する。例えば図３において、ノード３０４および３０６，３０８により、“Weight Sensor”という分類について“Boolean Weight”および“Analog Weight”がソフト部品の選択肢として定義される。これにより、前記新規プログラムに必要なソフト部品“Weight Sensor”として“Boolean Weight”または“Analog Weight”のいずれか一方のソフト部品が選択可能であると定義される。具体的にはノード３０６は、図４における＜Feature＞タグ４０５に対応し、“Boolean Weight”という重量センサに関するソフト部品を定義する。＜Feature＞タグにより、重量センサのうち“Boolean Weight”というソフト部品が選択肢の一つとして定義される。また、ノード３０８は、図４における＜Feature＞タグ４０８に対応し、“Analog Weight”という重量センサに関するソフト部品を定義する。＜Feature＞タグにより、重量センサのうち“Analog Weight”というソフト部品が選択肢の一つとして定義される。
【００３１】
なお、属性cardinalityを用いて、＜Feature＞タグで定義した複数の選択肢のうち、同時に何個選択可能か定義する。cardinality＝“1..1”の場合必ず１個選択する必要があり、cardinality＝“0..*”の場合０個以上何個でも選択可能であると定義する。例えば図３において、ノード３０４にはcardinality＝“1..1”と定義されている。したがって、ノード３０６“Boolean Weight”またはノード３０８“Analog Weight”の何れか一方を必ず選択する必要がある。
【００３２】
＜src＞タグと＜／src＞タグで挟んだ部分はソフト部品そのものを示している。＜src＞＜／src＞タグ内には＜File＞タグおよび＜Text＞タグを挿入可能である。＜File＞タグと＜／File＞タグで挟んだ部分はソースコードが記述されたファイルそのものをソフト部品として示し、＜Text＞タグと＜／Text＞タグで挟んだ部分は部分的なソースコードとなる文字列とそれを挿入すべきファイルパス名をソフト部品として示している。例えば図４において、＜Group＞タグ４０４の直下にある＜src＞タグ４０５内には、ソースコードが記述されたファイル“/src/Sensors/Weight/Weight.h”がソフト部品として示されている。また、＜Feature＞タグ４０６の直下にある＜src＞タグ４０７内には、ソースコード文字列を挿入すべきファイルパス名が“／src／Sensors／Weight／Weight.c”であり、挿入されるソースコード文字列が“void init Weight() { … }”であるソフト部品が示されている。以上のように＜File＞タグおよび＜Text＞タグを導入することにより、ファイルそのものをソフト部品として扱うものと、ソースコード文字列をソフト部品として扱うものとをコード生成部１１０は区別して処理することが可能となる。
【００３３】
なお、ソフト部品データベースが管理する前記ツリーは論理的に単一のものであればよく、部分的なツリーが物理的に複数のＸＭＬファイルに記述されていても構わない。
【００３４】
図５は、図３に示すツリー構造をリレーショナルデータベースのテーブルで実現した例である。ツリーを構成する各ノードおよび各ソフト部品に、一意に識別可能なＩＤが付与される。リレーショナルデータベースでは、各行を一意に特定するための主キーとして前記ＩＤが利用される。
【００３５】
コード生成部１１０は、ソフト部品データベース１５０から新規プログラムのソースファイルを生成するのに必要なソフト部品を抽出し、同ソースファイルとして合成する。その合成方法としては例えば、同ソースファイルの雛形をあらかじめ用意し、同雛形に上記ソフト部品を挿入することが挙げられる。図６は、テンプレートエンジンであるVelocity(http://jakarta.apache.org/velocity/)を用いた場合における、挿入すべきファイルの雛形の例として、“/src/Weight/Weight.c”ファイルの雛形を示している。Velocityでは、例えば図６に示すように、ソフト部品の挿入場所が“$init Weight”や“$get Weight”として定義される。
【００３６】
図７は、図４に示すＸＭＬを用いて実現したソフト部品データベース１５０を基に、コード生成部１１０が生成したソースファイル“/src/Weight/Weight.c”の内容を示している。この例では、図３においてソフト部品３０８が選択された場合を示している。コード生成部１１０は、選択されたソフト部品として図４に示す＜Text＞タグ４０９および４１０に含まれる部分的なソースコード４２０および４２１を抽出する。図７において、コード７１２および７２２がそれぞれ前記ソースコード４２０および４２１に相当する。次にコード生成部１１０が備える注釈付加部１１１が、抽出した同ソフト部品のソフト部品データベース１５０における格納場所を示す情報を含む注釈を前記ソースコード４２０および４２１の前後にそれぞれ追加する。図７において、注釈７１１，７１３および７２１，７２３が、それぞれコード４２０および４２１の前後に注釈付加部１１１が追加した前記注釈に相当する。この例では、ソフト部品データベース１５０におけるツリー構造をＸＭＬで記述しているため、注釈付加部１１１は、前記格納場所をXPathで表現しコメント文を用いて注釈を追加している。また、注釈付加部１１１は、ソフト部品の最初の部分に「＠begin」を、最後の部分に「＠end」を注釈として付加することによりソフト部品の範囲を示している。その結果、コード生成部１１０が雛形ファイルに挿入するソースコードは図７においてコード７０１および７０２のようになる。最後にコード生成部１１０は、上記＜Text＞タグに含まれるpath属性を基に雛形ファイルを特定し、前記ソースコード７０１および７０２をそれぞれ図５における挿入場所“$init Weight”および“$get Weight”に挿入しソースファイル“/src/Weight/Weight.c”として出力する。
【００３７】
一方、図８は、ソフト部品データベースとして図５に示すリレーショナルデータベースを用いた場合において、新規プログラムのソースファイルを生成するのに必要なソフト部品として、図７の場合と同様、図３におけるノード３０８が選択された場合における、コード生成部１１０が生成した“/src/Weight/Weight.c”ファイルの内容を示している。図７の場合と異なり、リレーショナルデータベースを用いた場合には、注釈８１１および８２１のように、注釈に含める前記格納場所を示す情報として、図５におけるソフト部品ＩＤを用いている。
【００３８】
以下では、ソフト部品データベース１５０として図４に示すＸＭＬを用いて実現した場合を例に、データベース保守部１２０について詳細に説明する。なお、図５に示すリレーショナルデータベースを用いたソフト部品データベースの場合においても、データベース保守部１２０は以下と同様に実現可能である。
【００３９】
データベース保守部１２０は、ソフト部品特定部１２１，比較対象特定部１２３，ソフト部品比較部１２４、およびソフト部品操作部１２５から構成され、ソフト部品特定部１２１は注釈抽出部１２２を備え、コード生成部１１０が過去に生成したソースファイル１３０を入力とする。ここでは、図９に示すソースファイルが入力された場合を例にとり、データベース保守部１２０の詳細を説明する。同ソースファイルは、図４に示す内容のソフト部品データベース１５０を基に、過去にコード生成部１１０が図７に示す内容で生成したものであり、例えばそれを基に製品を完成させる過程で、コード７１２がコード９１２のように修正されたものである。
【００４０】
図９に示すソースファイルが入力されると、データベース保守部１２０では、まずソフト部品特定部１２１が同ソースファイルに含まれる派生ソフト部品を特定する。そのために、注釈抽出部１２２が同ソースファイルに含まれる注釈９１１，９１３および９２１，９２３を抽出する。具体的には、注釈抽出部１２２は、ソースファイルに含まれるコメントに注目し、「＠begin」または「＠end」が含まれたコメントを注釈と判断し抽出する。そして、ソフト部品特定部１２１は、「＠begin」を含む注釈と「＠end」を含む注釈に挟まれた文字列を派生ソフト部品として抽出する。その結果、図９におけるコード９１２および９２２が派生ソフト部品として抽出される。次に、比較対象特定部１２３は、前記注釈に含まれるソフト部品格納場所情報を解釈することにより、ソフト部品特定部１２１が特定した前記派生ソフト部品に対応するＤＢソフト部品のソフト部品データベース１５０における格納場所を特定する。そして、比較対象特定部１２３は、前記格納場所に格納されたＤＢソフト部品を前記派生ソフト部品との比較対象と判断し、ソフト部品比較部１２４に出力する。この例では、比較対象特定部１２３は、注釈９１１および９２１に含まれるXPathを解析することにより、図４における、それぞれタグ４０９および４１０が前記格納場所として特定され、そのタグに挟まれた文字列４２０および４２１が比較対象ＤＢソフト部品として特定される。なお、比較対象特定部１２３が特定する、前記派生ソフト部品との比較対象とするＤＢソフト部品としては、上記のように前記格納場所に格納されたＤＢソフト部品だけでなく、ソフト部品データベース１５０のツリー構造における前記ＤＢソフト部品と兄弟関係にあるＤＢソフト部品も前記比較対象として特定することも可能である。例えば、図３において、前記格納場所に格納されたＤＢソフト部品３０９と兄弟関係にあるものは、ＤＢソフト部品３０７である。これを前記派生ソフト部品との比較対象に含めることも可能である。これにより、図９に示すような前記派生ソフト部品の修正内容が、結果的に対応するＤＢソフト部品とは異なるＤＢソフト部品の内容と一致した場合に、前記派生ソフト部品を誤って新規ＤＢソフト部品としてソフト部品データベース１５０に追加してしまい前記ＤＢソフト部品と重複することを防ぐことが可能となる。
【００４１】
次に、ソフト部品比較部１２４は、前記派生ソフト部品の内容と前記ＤＢソフト部品の内容を比較する。ソフト部品操作部１２５は、ソフト部品比較部１２４が比較した結果を図１０に示すような画面に表示し、ソフトウェア自動構成装置のユーザ１６０に派生ソフト部品と内容の異なるＤＢソフト部品の場所を示す。図１０に示す例では、選択肢「Analog Weight」に対応する矩形１００１を他と異なる色で表示することにより、同選択肢に属するＤＢソフト部品の内容が対応する派生ソフト部品の内容と異なっていることを示している。
【００４２】
データベース保守部１２０は、入力された全てのソースファイル１３０について上記のようにＤＢソフト部品群と内容を比較することにより、図１０に示すような画面を表示してユーザ１６０に内容の異なるＤＢソフト部品の格納場所を全て示すことができる。
【００４３】
図１０に示す画面において、ユーザ１６０はマウスポインタ１００２を用いて矩形１００１をクリックまたはダブルクリックすることにより、ソフト部品操作部１２５は図１１に示すような画面を表示し、上記比較結果の詳細を表示する。具体的には、図１１においてリストボックス１１０１に、矩形１００１に対応する選択肢に属するＤＢソフト部品群のうち、対応する派生ソフト部品の内容と異なるＤＢソフト部品の一覧を表示する。ユーザ１６０はマウスポインタ１１０２を用いて上記一覧の中からいずれかをクリックまたはダブルクリックすると、対応するソフト部品の具体的な差分が領域１１０３に表示される。領域１１０３では、選択されたＤＢソフト部品の内容が左側に表示されるとともに、対応する派生ソフト部品が右側に表示される。そして、内容の異なる部分が背景とは異なる色で表示される。ボタン１１１０を押すと、派生ソフト部品の内容が全てＤＢソフト部品の内容で上書きされる。一方、ボタン１１１１を押すと、ＤＢソフト部品の内容が全て派生部品の内容で上書きされる。ボタン１１１２を押すと、現在選択されている差異部分についてのみ、派生ソフト部品の内容がＤＢソフト部品の内容で上書きされる。一方、ボタン１１１３を押すと、現在選択されている差異部分についてのみ、ＤＢソフト部品の内容が派生ソフト部品の内容で上書きされる。以上より、ボタン１１１０および１１１２を利用することにより、コード生成部１１０が新規プログラムのソースファイルを生成後、ＤＢソフト部品の内容が更新された場合に、同更新内容を上記ソースファイル１３０に反映することができる。一方、ボタン１１１１および１１１３を利用することにより、コード生成部１１０が新規プログラムのソースファイルを生成後、派生ソフト部品を修正した場合に、同修正内容を対応するＤＢソフト部品に反映することができる。なお、ボタン１１１４および１１１５を押すことにより、別の差異部分を選択可能である。
【００４４】
前記差異部分をソフト部品データベース１５０に格納されたソフト部品に反映させるだけでなく、前記差異部分を含む派生ソフト部品を新規ＤＢソフト部品としてソフト部品データベース１５０に追加することも可能である。ソフト部品操作部１２５は、ボタン１１１６を用意することにより派生ソフト部品を新規ソフト部品として追加することを可能にする。ボタン１１１６が押されると、図１２に示すようなダイアログを表示し、新規ソフト部品が属する新規ノード（Feature）名の入力を受け付ける。Feature名が入力されＯＫボタンが押されると、派生ソフト部品に対応するＤＢソフト部品が属するノードの兄弟にあたる位置に上記ノードを追加し、同ノードに属するＤＢソフト部品として、上記派生ソフト部品が格納される。図１３は、図１２に示すダイアログにおいてFeature名が入力されＯＫボタンが押された場合における、ソフト部品操作部１２５の処理フローを示している。まずステップ１３００において、新規ソフト部品として追加する派生ソフト部品に対応するＤＢソフト部品の属するノードが、ソフト部品データベース１５０のツリー構造において葉に相当するか調べる。例えば、図１０において矩形１００１に対応するノード「Analog Weight」は葉に相当する。葉に相当する場合、ステップ１３０１において、入力されたFeature名を持つノードを、上記ＤＢソフト部品が属するノードの兄弟にあたる位置に新規ノードとして追加する。次に、ステップ１３０２において、追加した上記新規ノードに属するＤＢソフト部品として、上記派生ソフト部品を追加する。さらに、ステップ１３０３において、上記ＤＢソフト部品が属するノードに属するその他のＤＢソフト部品群を全て複製し、追加した新規ノードに属するＤＢソフト部品として追加する。次に、ステップ１３０４において、上記派生ソフト部品および複製した上記ＤＢソフト部品群に対応する派生ソフト部品群に付加された注釈に含まれる格納場所情報を、今回新規追加したＤＢソフト部品の場所を示すXPathに修正する。図１４は、図９に示す派生ソフト部品９１２を、Feature名に「Digital Weight」を指定して新規ソフト部品としてソフト部品データベース１５０に追加した場合における、派生ソフト部品を含むソースファイルの内容を示している。図１４において、派生ソフト部品１４１２が上記派生ソフト部品９１２に相当する。ステップ１３０４によって注釈９１１は注釈１４１１のように修正される。上記のように、従来のＤＢソフト部品の格納場所に対し、兄弟にあたる格納場所が新規格納場所になるため、図１４に示すように、＜Text＞タグの直接の親にあたる＜Feature＞タグのname属性を指定されたFeature名に変更すればよい。
【００４５】
なお、ステップ１３０４によって、新規ソフト部品として追加したもの以外の派生ソフト部品についても、新規ソフト部品として追加した派生ソフト部品と同じノードに属する派生ソフト部品に付加された注釈に含まれる格納場所情報が修正される。例えば、図１４において、派生ソフト部品１４２２の注釈１４２１も修正される。これにより、Feature名「Digital Weight」が選択された場合においてコード生成部１１０が生成したソースファイルと同じ内容となる。最後に、ステップ１３０５において、新規追加ＤＢソフト部品群と注釈を修正した上記派生ソフト部品群の内容を比較し、図１０と同様の画面を表示する。これにより、今回新規ＤＢソフト部品として追加した派生ソフト部品以外にもＤＢソフト部品と内容の異なる派生ソフト部品が存在した場合、再度差異を特定しそれを相互に反映可能となる。
【００４６】
なお、ステップ１３００において、新規ソフト部品として追加する派生ソフト部品に対応するＤＢソフト部品の属するノードが葉に相当しない場合、ステップ１３１０に分岐する。例えば、図１５は、図３とは異なるソフト部品データベースの内容を示しており、本データベースにおいてノード１５００は葉に相当しないノードである。この場合、ステップ１３１０において、上記ＤＢソフト部品に属するノードが「Group」である場合「Feature」に変更し、同ノードの親の属性cardinalityが設定されていない場合“1..1”に設定する。次に、ステップ１３１１において、上記ノードの兄弟にあたる位置に、入力されたFeature名を持つノードを新規Featureノードとして追加する。次に、ステップ１３１２において、新規ソフト部品として追加する派生ソフト部品に対応するＤＢソフト部品の属するノードの子供に対し、追加した上記新規ノードからリンクを張る。これにより、上記子供を複製することなく、上記新規選択肢の子供として扱うことができる。ステップ１３１２が終了すると、前記ステップ１３０３以降を実行する。図１５（ｂ）に示すソフト部品データベースのツリー構造は、図１５（ａ）に示すツリー構造においてノード１５０１に属するＤＢソフト部品に対応する派生ソフト部品を新規ソフト部品としてソフト部品データベースに追加した場合を示している。
【００４７】
図１５（ｂ）に示すように、ステップ１３１０においてノード１５０１が「Feature」に変更されるとともにその親ノード１５００の属性cardinalityに“1..1”が設定される。そして、ステップ１３１１において新規ソフト部品が属するノード１５１１が、図１５（ｂ）に示すように、ノード１５１０の兄弟にあたる位置に追加される。次に、ステップ１３１２において、ノード１５０１の子ノード１５０２および１５０３に対し、ノード１５１１からリンクが張られる。後は前述のようにステップ１３０３〜１３０５が実行され、その結果、図１５（ｂ）に示すようなツリー構造となる。
【００４８】
ソフト部品操作部１２５は、図１１に示すような画面を表示して、ユーザ１６０からの操作内容に従い、ＤＢソフト部品の内容と対応する派生ソフト部品の内容の差異部分を相互に反映したり、派生ソフト部品を新規ＤＢソフト部品としてソフト部品データベース１５０に追加するだけでなく、派生ソフト部品に付加されている注釈内に含まれる指示に従うことも可能である。図１６は、過去にコード生成部１１０が図７に示す内容で生成したソースファイルであり、コード７１２がコード１６１２のように修正されたものである。そして、注釈１６１１に「＠replace」というマーク１６２０が追加されている。図１６に示すソースファイルが入力されると、注釈１６１１を抽出する際に、注釈抽出部１２２がマーク１６２０が含まれていることを確認し、同注釈が付加されていた派生ソフト部品に対応付けてその旨をソフト部品操作部１２５に出力する。そしてソフト部品操作部１２５は、図１０や図１１のような画面を表示することなく、上記派生ソフト部品と対応するＤＢソフト部品との差異部分を同ＤＢソフト部品に反映する。なお、ソフト部品操作部１２５は、図１０のような画面を表示して対応する派生ソフト部品と内容の異なるＤＢソフト部品の場所を表示し、ユーザ１６０が矩形１００１をクリックまたはダブルクリックすることにより、上記派生ソフト部品と対応するＤＢソフト部品との差異部分を同ＤＢソフト部品に反映するか否かを確認するダイアログを表示することも可能である。
【００４９】
図１７は、過去にコード生成部１１０が図７に示す内容で生成したソースファイルであり、コード７１２がコード１７１２のように修正されたものである。そして、注釈１７１１に「＠add」というマーク１７２０が新規ＤＢソフト部品の格納場所を示すXPathとともに追加されている。図１７に示すソースファイルが入力されると、図１６の場合と同様に、注釈抽出部１２２がマーク１７２０を確認し、同マークを含む注釈が付加されていた派生ソフト部品に対応付けて同マークに含まれるXPathとともにその旨をソフト部品操作部１２５に出力する。そしてソフト部品操作部１２５は、図１０や図１１のような画面を表示することなく、図１３に示す処理フローに従い、上記派生ソフト部品を新規ＤＢソフト部品としてソフト部品データベース１５０に追加する。ただし、ステップ１３０１または１３１１において追加する新規Featureノードは、上記XPathに示される格納場所に追加する。図１６の場合と同様に、ソフト部品操作部１２５は、図１０のような画面を表示して対応する派生ソフト部品と内容の異なるＤＢソフト部品の場所を表示し、ユーザ１６０が矩形１００１をクリックまたはダブルクリックすることにより、上記派生ソフト部品を新規ＤＢソフト部品としてソフト部品データベース１５０に追加するか否かを確認するダイアログや、新規Featureノード追加場所を図１０のような形式で表示し、同追加場所が正しいか確認するダイアログを表示することも可能である。
【産業上の利用可能性】
【００５０】
ソフトウェアだけでなく、モジュール構造化されたあらゆるテキスト文書をソフト部品データベースに格納し、それを基に新規文書のテキストファイルを自動構成することも可能である。そして、このようなデータベースを保守管理する装置にも適用することが可能である。
【図面の簡単な説明】
【００５１】
【図１】ソフトウェア自動構成装置の機能ブロック図。
【図２】ソフトウェア自動構成装置のシステム構成例。
【図３】論理的なツリーで構造化したソフト部品データベースの例。
【図４】図３に示す内容をＸＭＬで記述した例。
【図５】図３に示す内容をリレーショナルデータベースのテープルで実現した例
【図６】Velocityを用いる場合における/src/Sensors/Weight/Weight.cの雛形ファイル。
【図７】図４に示す内容のソフト部品データベースからソフトウェア自動構成装置が生成したソースファイルの例。
【図８】図５に示す内容のソフト部品データベースからソフトウェア自動構成装置が生成したソースファイルの例。
【図９】図７に示すソースファイルに修正が加えられた例。
【図１０】ソフト部品データベースにおける生成したソースファイルとの相違箇所を示す、ソフトウェア自動構成装置のＧＵＩ画面の例。
【図１１】ソフト部品データベース内ソフト部品と、生成したソースファイル内ソフト部品の差分の詳細を表示し、同差分の相互反映を受け付ける、ソフトウェア自動構成装置のＧＵＩ画面の例。
【図１２】ソフト部品データベース内ソフト部品と内容の異なる、生成したソースファイル内ソフト部品を新規ソフト部品としてソフト部品データベースに追加する場合における、ソフトウェア自動構成装置のＧＵＩ画面の例。
【図１３】ソフト部品データベース内ソフト部品と内容の異なる、生成したソースファイル内ソフト部品を新規ソフト部品としてソフト部品データベースに追加する場合における、ソフトウェア自動構成装置の処理フロー。
【図１４】ソフト部品データベース内ソフト部品と内容の異なる、生成したソースファイル内ソフト部品を新規ソフト部品としてソフト部品データベースに追加する場合における、ソフトウェア自動構成装置によって修正された同ソースファイルの例。
【図１５】ソフト部品データベース内ソフト部品と内容の異なる、生成したソースファイル内ソフト部品を新規ソフト部品としてソフト部品データベースに追加する場合における、ソフト部品データベースにおける変更内容を示す図。
【図１６】ソフト部品データベース内ソフト部品と内容の異なる、生成したソースファイル内ソフト部品の内容をソフト部品データベース内ソフト部品に反映することをソフトウェア自動構成装置に指示する命令を、生成したソースファイル内注釈に追加した例。
【図１７】ソフト部品データベース内ソフト部品と内容の異なる、生成したソースファイル内ソフト部品を新規ソフト部品としてソフト部品データベースに追加することをソフトウェア自動構成装置に指示する命令を、生成したソースファイル内注釈に追加した例。
【符号の説明】
【００５２】
１００  自動構成部
１１０  コード生成部
１１１  注釈付加部
１２０  データベース保守部
１２１  ソフト部品特定部
１２２  注釈抽出部
１２３  比較対象特定部
１２４  ソフト部品比較部
１２５  ソフト部品操作部
１３０  ソフトウェア自動構成装置が生成したソースファイル
１５０  ソフト部品データベース
１６０  ソフトウェア自動構成装置のユーザ
【図１】
0004613214.tif 000002
【図２】
0004613214.tif 000003
【図３】
0004613214.tif 000004
【図４】
0004613214.tif 000005
【図５】
0004613214.tif 000006
【図６】
0004613214.tif 000007
【図７】
0004613214.tif 000008
【図８】
0004613214.tif 000009
【図９】
0004613214.tif 000010
【図１０】
0004613214.tif 000011
【図１１】
0004613214.tif 000012
【図１２】
0004613214.tif 000013
【図１３】
0004613214.tif 000014
【図１４】
0004613214.tif 000015
【図１５】
0004613214.tif 000016
【図１６】
0004613214.tif 000017
【図１７】
0004613214.tif 000018