(57)【要約】【課題】  ソフトウェア部品のソースコードを自動的にテンプレート化して保存し、かつ、保存されているテンプレートをもとに、ユーザから要求されたソフトウェア部品のソースコードを自動生成してユーザに提供し、かつ、テンプレート間の整合性を維持することができるソフトウェア部品テンプレート管理システムを提供すること。【解決手段】  ソフトウェア部品のテンプレートを保持するサーバと、ソフトウェア部品の登録、取得を指示するクライアント端末とから構成し、サーバでは、クライアント端末から送信されたソフトウェア部品のソースコードをテンプレート化してリポジトリに保存するとともに、テンプレート中の各可変項目にＩＤを付与して管理し、また、クライアント端末からの要求に応じて、リポジトリ内のテンプレートとユーザが入力したカスタマイズ情報とから、目的のソフトウェア部品のソースコードを生成してユーザに提供する。【選択図】      図１
2008217292.tif 000002
【特許請求の範囲】
【請求項１】
テストが完了したソフトウェア部品をテンプレートの形態で記憶手段内に保持するサーバと、ユーザが前記サーバに対してソフトウェア部品の登録、取得を指示するクライアント端末とから成るソフトウェア部品テンプレート管理システムであって、
前記サーバが、
前記クライアント端末より送信されたソフトウェア部品のソースコードの構文木を生成した後、当該構文木中に出現する可変項目を抽出し、当該可変項目を一意に識別するための可変項目ＩＤに置き換えたテンプレートを生成し、前記記憶手段内に登録する部品登録手段と、
前記記憶手段内に登録済みのテンプレートからソフトウェア部品のソースコードを生成してクライアント端末に送信する部品取得手段とを備えることを特徴とするソフトウェア部品テンプレート管理システム。
【請求項２】
前記部品登録手段は、登録対象のソフトウェア部品のテンプレートについて依存関係がある既存のテンプレートとの比較により可変項目ＩＤを既存テンプレートの可変項目ＩＤに整合するように補正する手段を備えることを特徴とする請求項１に記載のソフトウェア部品テンプレート管理システム。
【請求項３】
前記部品取得手段は、クライアント端末より送信されたカスタマイズ情報を、登録済みのテンプレートの可変項目に埋め込むことによってソースコードを生成するソースコード生成手段を備えることを特徴とする請求項１または２に記載のソフトウェア部品テンプレート管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト済みのソフトウェア部品をテンプレートの形態で保持するソフトウェア部品テンプレート管理システムに関するものである。
【背景技術】
【０００２】
ソフトウェアの開発を行う上で、再利用可能な機能を予め部品化して使い回すことにより、同じ機能を何度も作る工数を削減できる。これは開発効率の向上に有効である。
ソフトウェア部品のソースコードを再利用するプロジェクトの多くでは、プロジェクトごとの規約に合うようにソフトウェア部品のソースコードのカスタマイズを行った上で再利用する。例えば、ソースコード中で宣言するパッケージ、クラス、関数、属性などの各項目の名称については、プロジェクトごとに定められた命名規約に従って変更が入る項目である。しかし、これらの変更を開発者自身が手作業で行うのは手間がかかる上、ミスが混入しやすく非効率である。
【０００３】
そこで、後から別の値を埋め込めるように、予めソースコード中の可変項目を特殊なシンボル等で置換したテンプレートを作成しておく方法がある。そして、このテンプレートに、開発者が別途指定したカスタマイズ情報を自動的に埋め込んで目的のソースコードを自動生成する技術が知られている。
ソフトウェア部品のソースコードを、テンプレートとカスタマイズ情報をもとに生成する手段に関連する公知技術文献としては、下記の特許文献がある。
【０００４】
【特許文献１】特開２００１−２５６０４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ソフトウェア部品のテンプレートを用意するための方法としては、実行可能なソフトウェアを作成してテストを行った後、部品化が可能な箇所のソースコードについて、ソースコード中の可変項目を編集してテンプレート化するのが一般的である。
しかし、ソースコードを編集してテンプレート化する作業は人手で行うと手間がかかる。ソフトウェアを開発するプロジェクトでは、ソースコードは作成しても、それを編集してテンプレート化する作業まではコスト低減等のため実施しないことが多く、これがテンプレートの蓄積を阻害する要因となることもある。
また、ソフトウェア部品同士を組み合わせて利用する際、一方が他方で定義された項目を参照したり継承したりといった依存関係があると、一方をカスタマイズした際には、他方もそれに合わせたカスタマイズを行って整合性を維持しなければならないという問題がある。自動生成されたソースコード同士を組み合わせる際にも前記の整合性の問題が発生し得るが、自動生成の元であるテンプレートを作成する段階で、依存関係のあるソフトウェア部品同士のテンプレートの整合性を保持しておけば、自動生成後のソースコード間では整合性の問題の発生を防ぐことができる。
【０００６】
本発明の目的は、ソフトウェア部品のソースコードを自動的にテンプレート化して保存し、かつ、保存されているテンプレートをもとに、ユーザから要求されたソフトウェア部品のソースコードを自動生成してユーザに提供し、かつ、自動生成されたソースコード間の整合性を維持することができるソフトウェア部品テンプレート管理システムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のソフトウェア部品テンプレート管理システムは、テストが完了したソフトウェア部品をテンプレートの形態で記憶手段内に保持するサーバと、ユーザが前記サーバに対してソフトウェア部品の登録、取得を指示するクライアント端末とから成るソフトウェア部品テンプレート管理システムであって、
前記サーバが、
前記クライアント端末より送信されたソフトウェア部品のソースコードの構文木を生成した後、当該構文木中に出現する可変項目を抽出し、当該可変項目を一意に識別するための可変項目ＩＤに置き換えたテンプレートを生成し、前記記憶手段内に登録する部品登録手段と、前記記憶手段内に登録済みのテンプレートからソフトウェア部品のソースコードを生成してクライアント端末に送信する部品取得手段とを備えることを特徴とする。
また、前記部品登録手段は、登録対象のソフトウェア部品のテンプレートについて依存関係がある既存のテンプレートとの比較により可変項目ＩＤを既存テンプレートの可変項目ＩＤに整合するように補正する手段を備えることを特徴とする。
また、前記部品取得手段は、クライアント端末より送信されたカスタマイズ情報を、登録済みのテンプレートの可変項目に埋め込むことによってソースコードを生成するソースコード生成手段を備えることを特徴とする。
【発明の効果】
【０００８】
本発明のソフトウェア部品テンプレート管理システムによれば、次のような効果がある。
（１）ソフトウェア部品のソースコード中の可変項目を自動的に抽出してテンプレート化するため、可変項目の抽出の漏れがなくなるとともに、ソフトウェア部品提供者の負担を軽減できる。
（２）本システムから取得したソフトウェア部品のソースコードは、ソフトウェア部品間の整合性を維持するため、開発者による修正を経なくてもそのまま正常にコンパイル・実行を行える。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を適用したソフトウェア部品テンプレート管理システムの一実施の形態について説明する。
図１は、本発明の実施の形態の一例を示すシステム構成図である。
本実施形態のソフトウェア部品テンプレート管理システムは、ソフトウェア部品のテンプレートを保持するサーバ１０１と、ユーザが要求を出す複数のクライアント端末１０２とからなり、サーバ１０１とクライアント端末１０２の間はネットワークで接続されている。
サーバ１０１は、リポジトリ１０３、部品登録手段１０４、部品取得手段１０５を備えている。
部品登録手段１０４は、ソフトウェア部品をテンプレート化して登録するための手段として、ソースコード解析手段１０６、テンプレート生成手段１０７、可変項目ＩＤ発行手段１０８とを備えている。
前記部品取得手段１０５は、ユーザから要求されたソフトウェア部品を提供するための手段として、ソースコード生成手段１０９を備えている。
また前記リポジトリ１０３は、登録済みのソフトウェア部品のテンプレート１１０と、登録済みのソフトウェア部品を管理する部品管理表１１１、ソフトウェア部品間の依存関係を管理する部品依存関係管理表１１２、テンプレート１１０内に出現する可変項目を管理する可変項目管理表１１３を格納している。
【００１０】
図２は、部品管理表１１１の一例を示す図である。
部品ＩＤ２０１は、各部品を一意に特定するために割り振られるキーである。
部品名称２０２は、部品の登録時にユーザが入力する部品の名称である。
部品機能説明２０３は、部品の登録時にユーザが入力する、部品の機能についての説明文である。
例えば、部品ＩＤ＝Ｐ０００００１の部品には、部品名称として「文字列コンバータ」が登録され、その部品機能説明として「変換ルールに従い・・・・・必要があります」といた機能説明文が登録される。
部品管理表１１１は、本システムに部品が１件登録されるたびに、当該部品に関する１行が追加される。
【００１１】
図３は、部品依存関係管理表１１２の一例を示す図である。
この部品依存関係管理表１１２には、部品ＩＤ３０１と依存部品ＩＤ３０２が登録される。
部品ＩＤ３０１と依存部品ＩＤ３０２は、いずれも部品管理表１１１上に記録されている部品ＩＤ２０１を指し、部品ＩＤ３０１で示される部品が、依存部品ＩＤ３０２で示される部品に依存していることを表す。即ち、依存部品ＩＤは、親となる部品のＩＤである。例えば、部品ＩＤ＝Ｐ０００４のように、親となる部品が複数存在する場合には、これらの親部品のＩＤが全て依存部品ＩＤとして登録される。
この部品依存関係管理表１１２は、本システムにユーザが部品を登録する際に依存部品情報の指定を行った場合にのみ、行が追加される。
【００１２】
図４は、可変項目管理表１１３の一例を示す図である。
この可変項目管理表１１３には、可変項目ＩＤ４０１、デフォルト値４０２、項目種別４０３、上位項目４０４、発行日時４０５が登録される。
可変項目ＩＤ４０１は、テンプレート１１０中の可変項目を一意に特定するためのキーであり、テンプレート中に埋め込んだ際に他の語句との識別を容易にするため、常に先頭と末尾に「$」を付加するものとする。
デフォルト値４０２は、当該可変項目に埋め込まれるカスタマイズ情報のデフォルト値である。ユーザが本システムにソフトウェア部品を登録する際に送信したソースコードにおいて、可変項目に元々割り当てられていた値がソースコード解析手段１０６によって取得され、これがデフォルト値４０２として登録されるものとする。
項目種別４０３は、当該可変項目の種別を示す。
上位項目４０４は、ソースコード解析手段１０６によるソースコード解析の結果、当該可変項目が他の可変項目に属していると判明した場合に、その上位可変項目の可変項目ＩＤを示す。
発行日時４０５は、当該可変項目の発行日時を示す。
【００１３】
図５は、本システムにおけるソフトウェア部品の登録手順を示すフローチャートである。
まず、クライアント端末１０２がサーバ１０１の部品登録手段１０４にアクセスすると、部品登録手段１０４は、部品登録画面をクライアント端末１０２に表示する（ステップ５０１）。
クライアント端末１０２のユーザは、表示された部品登録画面にて、登録部品情報および依存部品情報を入力し、部品登録手段１０４に送信する（ステップ５０２）。
部品登録手段１０４は、ステップ５０２で入力された情報の中に依存部品情報が含まれるか否かによって以後の処理を分岐する。
ステップ５０２で依存部品情報が入力されず登録部品情報のみが入力された場合、ソースコード解析手段１０６が、受信した登録部品のソースコードの解析を実行し、登録部品の構文木を生成する（ステップ５０３）。
なお、この構文木を生成する技術は、コンパイラ等において従来から使用されている周知技術であるので、その詳細な説明は省略する。
可変項目ＩＤ発行手段１０８は、ステップ５０３の構文木の解析結果を受け取り、解析結果中のパッケージ名、クラス名、メソッド名、フィールド名、変数名を可変項目とし、各可変項目を一意に識別できる可変項目ＩＤを発行する（ステップ５０４）。そしてステップ５１１に進む。
【００１４】
一方、ステップ５０２にて、登録部品情報と依存部品情報の両方が入力されていた場合、ソースコード解析手段１０６は、登録部品のソースコードおよび依存部品のソースコードを一括で解析する（ステップ５０５）。
可変項目ＩＤ発行手段１０８は、ステップ５０５の解析結果を受け取り、解析結果中のパッケージ名、クラス名、メソッド名、フィールド名、変数名を可変項目とし、各可変項目を一意に識別できる仮の可変項目ＩＤを発行する（ステップ５０６）。
次に、テンプレート生成手段１０７は、依存部品ソースコードとステップ５０６で発行された仮可変項目ＩＤ一覧を受け取り、登録対象部品のソースコード中の各可変項目を仮可変項目ＩＤで置換した仮テンプレートを生成する（ステップ５０７）。
【００１５】
次に、可変項目ＩＤ発行手段１０８は、依存部品のテンプレートをリポジトリ１０３から取得して、ステップ５０７で生成された登録対象部品のテンプレートとの比較を行い、テンプレート内部に記述された可変項目ＩＤ同士を照合して対応表を作成する（ステップ５０８）。
さらに可変項目ＩＤ発行手段１０８は、ステップ５０８で作成した可変項目ＩＤ対応表における既存可変項目ＩＤの競合を解消し、仮可変項目ＩＤと既存可変項目ＩＤが１対１の関係になるようにする（ステップ５０９）。
ステップ５０９における既存可変項目ＩＤの競合解消に伴い、既存可変項目ＩＤの一部が変更となった場合、部品登録手段１０４は、リポジトリ１０３に格納されている既存テンプレートおよび可変項目管理表１１３の更新を行い、既存可変項目ＩＤの変更を反映する。（ステップ５１０）
そしてステップ５１１に進む。
【００１６】
テンプレート生成手段１０７は、ステップ５０４またはステップ５０９で作成された可変項目ＩＤ一覧を用い、ステップ５０２でユーザが入力した登録対象部品のソースコード中の各可変項目を可変項目ＩＤで置換してテンプレートを生成する（ステップ５１１）。
そして部品登録手段１０４は、ステップ５１１で生成したテンプレートをリポジトリ１０３に格納する（ステップ５１２）。さらに部品登録手段１０４は、ステップ５０２でユーザが入力した部品名称、部品機能説明を部品管理表１１１に登録し、ステップ５０２でユーザが入力した依存部品情報をもとに部品依存関係管理表１１２にデータを登録し、ステップ５０３またはステップ５０５におけるソースコード解析結果と、ステップ５０４またはステップ５０９で作成された可変項目ＩＤ一覧をもとに可変項目管理表１１３にデータを登録する（ステップ５１３）。
最後に、部品登録手段１０４は、登録完了通知をクライアント端末１０２に返却する（ステップ５１４）。
【００１７】
図６は、ステップ５０８で作成される可変項目ＩＤ対応表の例を示す図であり、仮可変項目ＩＤ＝＄Ｖ００１２００００２＄のという１つの可変項目に対し、２つの親部品で２つの可変項目ＩＤ＝＄Ｖ０００５００００２＄と＄Ｖ０００８００００１＄が発行されている場合を示している。
そこで、ステップ５０９の競合解消処理により、発行日時が最も古い可変項目ＩＤに統一する処理を行う。これにより、親部分と子部品の可変項目ＩＤは１対１の関係に整合される。
【００１８】
図７は、可変項目ＩＤの競合解消処理を示すフローチャートである。
まず、図６の可変項目ＩＤ対応表において既存部品の可変項目ＩＤが２つ以上指定されている箇所について、可変項目管理表１１３を参照して発行日時を取得し、発行日時が最も古い可変項目ＩＤを特定する（ステップ７０１，７０２）。
次に、更新対象の可変項目ＩＤの全てについて、発行日時が最も古い可変項目ＩＤに置き換え、可変項目管理表１１３を更新する（ステップ７０３〜７０５）。
次に、発行日時が最も古い可変項目ＩＤを除く全ての可変項目ＩＤを削除し、可変項目ＩＤ対応表を更新する（ステップ７０６〜７０８）。
【００１９】
図８は、本システムに登録されたソフトウェア部品をクライアント１０２が取得する手順を示すフローチャートである。
クライアント端末１０２がソフトウェア部品を取得すべくサーバ１０１の部品取得手段１０５にアクセスすると、部品取得手段１０５は、部品管理表１１１および部品依存関係管理表１１２からデータを取得して部品一覧画面を作成し、クライアント端末１０２上に表示する（ステップ８０１）。
ユーザは、クライアント端末１０２に表示された部品一覧画面にて、取得したい部品を全て選択する（ステップ８０２）。
【００２０】
次に、部品取得手段１０５は、ステップ８０２で選択された全ての部品のテンプレート１１０を全文検索して、テンプレート内に出現する可変項目の一覧を作成し、その可変項目に該当するデータを可変項目管理表１１３から取得して、カスタマイズ情報入力画面を作成し、クライアント端末１０２上に表示する（ステップ８０３）。
ユーザは、カスタマイズ情報入力画面にて、各可変項目に対応するカスタマイズ値を入力する（ステップ８０４）。
部品取得手段１０５は、ステップ８０２で選択された全ての部品について、リポジトリ１０３から該当するテンプレート１１０を取得し、ステップ８０４で入力されたカスタマイズ値をテンプレート１１０内の可変項目に埋め込むことによってソースコードを生成する（ステップ８０５）。
最後に部品取得手段１０５は、ステップ８０５で生成したソースコードをクライアント端末１０２に送信する（ステップ８０６）。
【００２１】
図９は、クライアント端末１０２上に表示される部品登録画面の一例である。
部品登録画面は、登録部品情報９０１の入力欄、依存部品情報９０２の入力欄、部品登録実行ボタン９０３によって構成される。
登録部品情報９０１は、登録部品の部品名称９０４、部品機能説明９０５、登録部品のソースコードファイルパス９０６から成り、いずれも入力必須とする。
依存部品情報９０２は、登録しようとしているソフトウェア部品が本システムに既に登録済みのいくつかのソフトウェア部品に依存している場合のみ入力必須とし、依存部品の部品ＩＤ９０７、依存部品のソースコードファイルパス９０８から成る。
登録部品ソースコードファイルパス９０６と依存部品ソースコードファイルパス９０８については、予め当該部品のソースコードファイルをクライアント端末１０２のローカルディスク等に格納しておき、そのファイルのパスを指定するものとする。
【００２２】
ファイルが複数個ある場合は、それらを圧縮して１ファイルにアーカイブしたファイルのパスを指定するものとする。また、登録部品ソースコードファイルパス９０６と依存部品ソースコードファイルパス９０８で指定するソースコードファイルは、開発環境で互いを結合した上でコンパイルおよびテストが正常に実行できるのを確認済みであるものとする。また、依存部品ソースコードファイルパス９０８は、本システムに既に登録されている部品のソースコード、すなわち、部品取得手段１０５を通じて取得されるソースコードファイルしか指定できないものとする。
ユーザが登録実行ボタン９０３を押すと、ユーザが入力した登録部品情報９０１、依存部品情報９０２、登録部品ソースコードファイルパス９０６で指定したファイル本体、および依存部品ソースコードファイルパス９０８で指定したファイル本体が、部品登録手段１０４に送信される。
【００２３】
図１０は、クライアント端末１０２上に表示される部品一覧画面の一例である。
部品ＩＤ１００１、部品名称１００２、部品機能説明１００３は、部品管理表１１１から取得したデータを表示する。
依存部品１００４は、当該部品が依存している他部品の部品ＩＤを部品依存関係管理表１１２から取得して表示する。
取得チェック欄１００５には、ユーザが、取得したい部品にチェックをつけるためのチェックボックスを表示する。なお、ユーザがチェックをつけた部品が他の部品に依存している場合は、依存部品のチェックボックスにも自動でチェックが入り、依存部品を強制的に同時取得させる仕組みとする。
ユーザがカスタマイズ情報入力ボタン１００６を押すと、カスタマイズ情報入力画面へ遷移する。
【００２４】
図１１は、クライアント端末１０２上に表示されるカスタマイズ情報入力画面の一例である。
カスタマイズ情報１１０１の入力欄では、部品一覧画面にてチェックした部品のテンプレート内に出現する全ての可変項目について、ユーザがカスタマイズ値を指定することが出来る。
カスタマイズ情報１１０１の入力欄は、可変項目管理表１１３からデータを取得して、上位項目４０４のデータをもとに各項目を階層的に表示するとともに、テキストボックス内に各項目のデフォルト値４０２を表示し、テキストボックスの上に項目種別４０３を表示する。
ユーザは、テキストボックス内の値を編集することによって、各項目のカスタマイズ値を入力できる。
ユーザが部品登録実行ボタン１１０２を押すと、カスタマイズ情報１１０１が部品取得手段１０５に送信される。
【００２５】
図１２は、テンプレート生成手段１０７におけるテンプレート生成例、およびソースコード生成手段１０９におけるソースコード生成例である。
登録部品ソースコード１２０１は、部品を登録しようとするユーザが、部品登録画面を通じて送信するソースコードの例である。
テンプレート１２０２は、テンプレート生成手段１０７によってソースコード１２０１が編集され、可変項目が可変項目ＩＤ４０１によって置き換えられて生成されたテンプレートの例である。
生成ソースコード１２０３は、ソースコード生成手段１０９によって、テンプレート１２０２をもとに生成されるソースコードの例であり、テンプレート１２０２中の可変項目ＩＤが、ユーザによって入力されたカスタマイズ情報で置き換えられたものである。
【００２６】
なお、ソフトウェア部品のソースコードおよびテンプレートは一般に複数個のファイルによって構成されるが、本実施例では、複数個のファイルは圧縮して一個のファイルにまとめた上で管理するものとする。圧縮されているファイルを処理する際はその都度解凍して１ファイルずつ処理し、処理後は再度圧縮して返却するものとする。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施の形態例を示すシステム構成図である。
【図２】リポジトリに格納される部品管理表の一例を示す図である。
【図３】リポジトリに格納される部品依存関係管理表の一例を示す図である。
【図４】リポジトリに格納される可変項目管理表の一例を示す図である。
【図５】部品の登録手順を示すフローチャートである。
【図６】可変項目ＩＤの競合関係を解消する処理の説明図である。
【図７】可変項目ＩＤの競合関係を解消する処理のフローチャートである。
【図８】部品の取得手順のフローチャートである。
【図９】クライアント端末に表示される部品登録画面の一例である。
【図１０】クライアント端末に表示される部品一覧画面の一例である。
【図１１】クライアント端末に表示されるカスタマイズ情報入力画面の一例である。
【図１２】テンプレート生成例およびソースコード生成例を示す図である。
【符号の説明】
【００２８】
１０１    サーバ
１０２    クライアント端末
１０３    リポジトリ
１０４    部品登録手段
１０５    部品取得手段
１０６    ソースコード解析手段
１０７    テンプレート生成手段
１０８    可変項目ＩＤ発行手段
１０９    ソースコード生成手段
１１０    テンプレート
【図１】
2008217292.tif 000003
【図２】
2008217292.tif 000004
【図３】
2008217292.tif 000005
【図４】
2008217292.tif 000006
【図５】
2008217292.tif 000007
【図６】
2008217292.tif 000008
【図７】
2008217292.tif 000009
【図８】
2008217292.tif 000010
【図９】
2008217292.tif 000011
【図１０】
2008217292.tif 000012
【図１１】
2008217292.tif 000013
【図１２】
2008217292.tif 000014