(57)【要約】【課題】コンパイルエラー、及び、リンクエラーの発生を防止し、リソースを一元管理し、Makefileを自動作成することができる、コンパイルシステムとして機能するスタブ対応型ソフトウエア開発支援装置を提供する。【解決手段】スタブ対応型ソフトウエア開発支援システムは、スタブモジュールを格納するモジュール格納部と、上記スタブモジュールに関する情報を格納するスタブデータベースと、上記サブシステムソフトウエアのコンパイル及び結合を行うコンパイル部と、を有し、上記スタブデータベースは、公開されているスタブモジュールの情報を格納する第１のテーブルと、開発したスタブモジュールに関する情報を格納する第２のテーブルと、上記公開されているスタブモジュールを他のサブシステムソフトウエアが利用していることに関する情報を格納する第３のテーブルと、を有する。【選択図】図１
2007172514.tif 000002
【特許請求の範囲】
【請求項１】
スタブを利用して複数のサブシステムソフトウエアからなるソフトウエアを開発するスタブ対応型ソフトウエア開発支援システムにおいて、
スタブを含むプログラムであるスタブモジュールを格納するモジュール格納部と、上記スタブモジュールに関する情報を格納するスタブデータベースと、上記サブシステムソフトウエアのコンパイル及び結合を行うコンパイル部と、を有し、上記スタブデータベースは、サブシステムソフトウエア開発者に公開されているスタブモジュールの情報を格納する第１のテーブルと、サブシステムソフトウエア開発者が開発したスタブモジュールに関する情報を格納する第２のテーブルと、上記公開されているスタブモジュールを他のサブシステムソフトウエアが利用していることに関する情報を格納する第３のテーブルと、を有することを特徴とするスタブ対応型ソフトウエア開発支援システム。
【請求項２】
請求項１記載のスタブ対応型ソフトウエア開発支援システムにおいて、
上記スタブデータベースは１つのシステムソフトウエアの構成する全てのサブシステムソフトウエアに関するスタブモジュールの情報を格納していることを特徴とするソフトウエア開発支援システム。
【請求項３】
請求項１記載のスタブ対応型ソフトウエア開発支援システムにおいて、
上記第３のテーブルの記録は、上記公開されているスタブモジュールを他のサブシステムソフトウエアが利用したときに作成されることを特徴とするスタブ対応型ソフトウエア開発支援システム。
【請求項４】
請求項１記載のスタブ対応型ソフトウエア開発支援システムにおいて、
上記サブシステムソフトウエアのコンパイル及び結合に使用するMakefileを自動作成するMakefile作成部を有することを特徴とするスタブ対応型ソフトウエア開発支援システム。
【請求項５】
請求項１記載のスタブ対応型ソフトウエア開発支援システムにおいて、
上記Makefile作成部は、スタブモジュールを利用するサブシステムソフトウエアをスタブモジュールと一緒にコンパイルする場合のMakefileと、スタブモジュールのみをまとめてコンパイルしてモジュールライブラリを提供する場合のMakefileと、結合テストの環境でコンパイルする場合のMakefileを作成することを特徴とするスタブ対応型ソフトウエア開発支援システム。
【請求項６】
スタブを含むプログラムであるスタブモジュールを格納するモジュール格納部と、サブシステムソフトウエア開発者に公開されているスタブモジュールの情報を格納する第１のテーブルと、開発されたスタブモジュールに関する情報を格納する第２のテーブルと、公開されているスタブモジュールを他のサブシステムが利用していることに関する情報を格納する第３のテーブルと、を有するソフトウエア開発支援システムを利用するスタブ対応型ソフトウエア開発方法において、
端末装置から、上記第１のテーブルにアクセスして、上記公開されているスタブモジュールの一覧を表示することと、
上記表示された一覧より、上記端末装置によって利用するスタブモジュールを特定することと、
上記特定したスタブモジュールを検索キーにして上記第２のテーブルを検索し、上記モジュール格納部における上記特定したスタブモジュールの配置場所を検出することと、
上記配置場所に基づいて、上記モジュール格納部から上記特定したスタブモジュールを抽出し、上記端末装置にダウンロードすることと、
を有するスタブ対応型ソフトウエア開発方法。
【請求項７】
請求項６記載のスタブ対応型ソフトウエア開発方法において、
端末装置から、上記第３のテーブルに上記ダウンロードしたスタブモジュールに関する情報を記録することと、
を含むことを特徴とするスタブ対応型ソフトウエア開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータのソフトウエアの開発におけるソフトウエア開発支援システムに関し、特に、スタブ対応型ソフトウエア開発支援システムに関する。
【背景技術】
【０００２】
大規模のソフトウエアを開発する場合、開発対象のシステムを複数の部分に分割し、部分毎にソフトウエア、即ち、サブシステムを開発する。各サブシステムが完成すると、最後にそれらを組み合わせて１つのソフトウエアにする。
【０００３】
サブシステムの開発では、サブシステム間の連携が必要である。しかしながら、呼び出すサブシステムがブラックボックスの状態でサブシステムを開発しなければならない場合がある。このような場合に、ソフトウエアの開発者はスタブを開発する必要がある。
【０００４】
スタブを含むプログラム、即ち、スタブモジュールは、実際のサブシステムソフトウエアの代替であるダミーである。尚、スタブは上位ソフトウエアモジュールから渡された値を表示し、上位ソフトウエアモジュールに値を返すだけの単純な関数である。
【０００５】
ソフトウエアの規模が大きい場合、サブシステムの数が大きくなり、サブシステム間の連携が複雑になる。このような場合には、スタブの開発はプログラミングのなかで大きな比重を占める。
【０００６】
特開平５‐１３４８５４号公報には、一般にプログラムの作成、修正、デバックを支援するためのソフトウエア開発支援装置が提案されている。この装置は、コンパイルエラー及びリンクエラーを抽出する手段、エラー原因を推論しプログラムを修正する手段を備えている。
【特許文献１】特開平５‐１３４８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
スタブモジュールの開発における３つの課題について説明する。第一の課題は、各サブシステムの開発が終了した後に、全てのサブシステムを結合すると、コンパイルエラー、リンクエラーが発生することがある点である。エラーの原因がスタブにある場合、単体テストが既に終了しているプログラムに修正を加えなければならなくなる。
【０００８】
第二の課題は、サブシステム毎に同一リソースに該当するスタブが開発されることがある点である。これはリソースの一元管理の観点から問題である。
【０００９】
第三の課題は、コンパイル、リンクに使用するMakefileを自動作成することができればよいという点である。
【００１０】
特開平５−１３４８５４号公報に記載された装置では、スタブとサブシステムの間のモジュール接続チェックとモジュールの自動修正を行うだけであり、これらの課題の解決には不十分である。
【００１１】
本発明の目的は、コンパイルエラー、及び、リンクエラーの発生を防止し、リソースを一元管理し、Makefileを自動作成することができる、コンパイルシステムとして機能するスタブ対応型ソフトウエア開発支援装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明によると、スタブを利用して複数のサブシステムソフトウエアからなるソフトウエアを開発するスタブ対応型ソフトウエア開発支援システムにおいて、スタブを含むプログラムであるスタブモジュールを格納するモジュール格納部と、上記スタブモジュールに関する情報を格納するスタブデータベースと、上記サブシステムソフトウエアのコンパイル及び結合を行うコンパイル部と、を有し、上記スタブデータベースは、サブシステムソフトウエア開発者に公開されているスタブモジュールの情報を格納する第１のテーブルと、サブシステムソフトウエア開発者が開発したスタブモジュールに関する情報を格納する第２のテーブルと、上記公開されているスタブモジュールを他のサブシステムソフトウエアが利用していることに関する情報を格納する第３のテーブルと、を有する。
【００１３】
更に、上記サブシステムソフトウエアのコンパイル及び結合に使用するMakefileを自動作成するMakefile作成部を有する。
【発明の効果】
【００１４】
本発明によると、コンパイルエラー、及び、リンクエラーの発生を防止し、リソースを一元管理することができる。更に、Makefileを自動作成し、コンパイルシステムの機能を提供することができる。
【発明を実施するための最良の形態】
【００１５】
図１に本発明のスタブ対応型ソフトウエア開発支援システムの概略を示す。本例のスタブ対応型ソフトウエア開発支援システムは、端末１に接続されたコンピュータ２と、スタブを含むプログラムを格納するモジュール格納部３と、スタブに関する情報を登録するスタブデータベース４を有する。本例のスタブ対応型ソフトウエア開発支援システムは、スタブを利用して開発した複数のサブシステムソフトウエアを統合して１つのソフトウエアを作成するために使用される。スタブを含むプログラムをここではスタブモジュール、又は単に、モジュールと称する。スタブモジュールは、実際のサブシステムソフトウエアの代替であるダミーである。尚、スタブは上位ソフトウエアモジュールから渡された値を表示し、上位ソフトウエアモジュールに値を返すだけの単純な関数である。サブシステムソフトウエアを以下に単にサブシステムという。
【００１６】
端末１のユーザは、サブシステム及びスタブモジュールの開発者である。端末１は、典型的にはパーソナルコンピュータであってよい。従って、本例のスタブ対応型ソフトウエア開発支援システムには、複数の端末１が接続されている。各端末１は、コンピュータ２、モジュール格納部３、及び、スタブデータベース４に接続することができる。
【００１７】
コンピュータ２は複数のサブシステムのコンパイルと結合を行い、１つのシステムソフトウエアを作成する。
【００１８】
スタブデータベース４はテーブル４１、４２、４３を有する。ユーザは、テーブル４１、４２、４３のレコードを作成し、また、テーブル４１、４２、４３のレコードを参照し、利用する。以下に、テーブル４１、４２、４３を説明する。
【００１９】
図２は、スタブデータベース４の第１のテーブル４１のレコードの例を示す。第１のテーブル４１は、他のサブシステムに利用できるように公開されたスタブモジュールの情報を格納する。全てのユーザは、第１のテーブル４１を参照することによって、システム全体において、実際に公開されているスタブモジュールについて知ることができる。ここでは１つのレコードのみを示すが、実際には、公開されているスタブモジュールの数と同数のレコードが存在する
第１のテーブル４１のレコードは、サブシステム名４１１、スタブモジュール名４１２、モジュールインターフェース設計書のバージョン４１３、スタブモジュール開発者名４１４、入出力インターフェース情報４１５、ヘッダファイルのパス４１６、スタブモジュールのパス４１７を含む。
【００２０】
第１のテーブル４１から特定のスタブモジュールのレコードを検索する場合には、サブシステム名４１１又はスタブモジュール名４１２を検索キーとしてよい。
【００２１】
図３は、スタブデータベース４の第２のテーブル４２のレコードの例を示す。第２のテーブル４２は、開発したスタブモジュールに関する情報を格納する。第２のテーブル４２のレコードは、スタブモジュールを作成したときにユーザが作成する。全てのユーザは、第２のテーブル４２を参照することによって、システム全体において、実際に開発されたスタブモジュールについて知ることができる。ここでは１つのレコードのみを示すが、実際には、開発されたスタブモジュールの数と同数のレコードが存在する。
【００２２】
第２のテーブル４２のレコードは、サブシステム名４２１、スタブモジュール名４２２、スタブモジュール開発者名４２３、スタブモジュール開発時点でのモジュールインターフェース設計書のバージョン４２４、モジュール格納部３内のスタブモジュールの配置場所４２５を含む。
【００２３】
第２のテーブル４２から特定のスタブモジュールのレコードを検索する場合には、サブシステム名４２１又はスタブモジュール名４２２を検索キーとしてよい。
【００２４】
図４は、データベース４の第３のテーブル４３のレコードの例を示す。第３のテーブル４３は、公開されているスタブモジュールを他のサブシステムが利用することに関する情報を格納する。第３のテーブル４３のレコードは、ユーザがスタブモジュールを利用したときに作成する。全てのユーザは、第３のテーブル４３を参照することによって、システム全体において、公開されているスタブモジュールの実際の利用状況を知ることができる。ここでは１つのレコードのみを示すが、実際には、利用されたスタブモジュールの数と同数のレコードが存在する。
【００２５】
第３のテーブル４３は、利用される側のサブシステム名４３１、利用されるスタブモジュール名４３２、スタブモジュールを利用する側のサブシステム名４３３、スタブモジュールを利用する側のスタブモジュール開発者名４３４、利用した時点でのモジュールインターフェース設計書のバージョン４３５を含む。
【００２６】
第３のテーブル４３から特定のスタブモジュールのレコードを検索する場合には、利用される側のサブシステム名４３１、利用されるスタブモジュール名４３２、又は、スタブモジュールを利用する側のサブシステム名４３３を検索キーとしてよい。
【００２７】
図５を参照して、第１のテーブル４１の登録処理を説明する。ユーザは、端末１からコンピュータ２にログインし、ユーザが開発に携わっているサブシステムを特定する。また、端末１からデータベース４への接続は自動的におこなわれる。
【００２８】
（１）ユーザは、スタブモジュール、モジュールインターフェース設計書４１３を、端末１からモジュール格納部３へアップロードする。（２）コンピュータ２はモジュール格納部３に格納されたスタブモジュールを解析し、入出力インターフェース情報４１５、ヘッダファイルの情報４１６、スタブモジュールのパス４１７を抽出し、第１のテーブル４１のレコードを作成する。
【００２９】
図６を参照して、第２のテーブル４２の登録の処理を説明する。ユーザは、端末１からコンピュータ２にログインする。（１）ユーザは、スタブモジュールとモジュールインターフェース設計書のリンクを作成し、スタブモジュールをモジュール格納部３にアップロードする。（２）スタブモジュールから入出力インターフェース情報を抽出し、第２のテーブル４２にレコードを作成する。
【００３０】
本例のスタブ対応型ソフトウエア開発支援システムはシングルサインオンにもとづき、スタブモジュール、及び、利用する側のスタブモジュールの開発者は、ログインユーザで登録される。
【００３１】
上述の第一の課題では、各サブシステムの開発が終了した後に、全てのサブシステムを結合すると、コンパイルエラー、リンクエラーが発生することが問題であった。
【００３２】
結合テスト直前にコンパイルエラー、リンクエラーが起きるのは、途中で変更されたモジュールインターフェースの設計の内容がスタブモジュールに反映されずにサブシステムの開発が行われた場合が想定される。
【００３３】
本例のスタブ対応型ソフトウエア開発支援システムでは、まず、ユーザは、ログインすると、第３のテーブル４３から、利用される側のサブシステム名４３１にユーザが属するサブシステム名が設定されているレコードを抽出する。第３のテーブル４３の設計書のバージョン４３５をキーとして、第２のテーブル４２より該当するバージョンのスタブモジュールの入出力インターフェース情報を抽出する。この情報と、第１のテーブル４１から取得した最新のスタブモジュールの入出力インターフェース情報４１５を突き合わせる。２つの情報が一致しない場合、ログインしたユーザに対し端末１は警告文を出力する。
【００３４】
図７を参照して、第３のテーブル４３の登録の処理、及び、コンパイルエラー、リンクエラーの発生を防止する方法を説明する。（１）端末１に外部に公開されているスタブモジュールの一覧を表示し、ユーザは利用するスタブモジュールにチェックを入れる。（２）第３のテーブル４３にレコードを作成する。（３）第３のテーブル４３のスタブモジュール名とバージョンを検索キーにして第２のテーブル４２を検索し、モジュール格納部３の配置場所を取得する。（４）配置場所から該当するスタブモジュールを抽出し、ユーザの開発環境にダウンロードする。
【００３５】
以上より、本例のスタブ対応型ソフトウエア開発支援システムにより、コンパイルエラー、リンクエラーを未然に防ぐことが可能である。
【００３６】
上述の第二の課題では、サブシステム毎に同一リソースに該当するスタブモジュールが開発されることが問題であった。本例のスタブ対応型ソフトウエア開発支援システムは、スタブデータベース４を設け、スタブモジュールの情報を保持することでリソースの一元管理が可能となる。
【００３７】
上述の第三の課題では、コンパイル、リンクに使用するMakefileを自動作成する手段が必要であった。図８〜図１０を参照して、本例のスタブ対応型ソフトウエア開発支援システムを用いてMakefileの自動作成ステップを説明する。サブシステムのコンパイルの形態として三種類を想定する。第一の形態はスタブモジュールを利用するサブシステムをスタブモジュールと一緒にコンパイルする形態、第二の形態はスタブモジュールのみをまとめてコンパイルしてスタブライブラリを提供する形態、第三の形態は結合テストの環境でコンパイルする形態である。
【００３８】
図８を参照して、Makefileを作成する場合の第１の例を説明する。本例では、スタブモジュールを利用するサブシステムをスタブモジュールと一緒にコンパイルする。これは、サブシステムの単体テストの工程に該当する。
【００３９】
まず、ログインしたユーザの属するサブシステム名を判別し、第３のテーブル４３のレコードから、スタブモジュールを利用する側のサブシステム名４３１、利用されるスタブモジュール名４３２を取得し、それを検索キーとして第１のテーブル４１からレコードを抽出する。（１）第１のテーブル４１から抽出されたレコードのヘッダファイルのパス４１６、スタブモジュールのパス４１７を、Makefileの出力先をもとに相対パスに置換する。（２）モジュール格納部３からユーザの属するサブシステムのコンパイル対象物を抽出する。（３）コンパイル対象物にスタブモジュール部分を組み込み、Makefileを作成する。
【００４０】
図９を参照して、Makefileを作成する場合の第２の例を説明する。本例では、スタブモジュールのみをまとめてコンパイルしてモジュールライブラリを提供する。これは、サブシステムの結合テストの工程であるが、他のサブシステム全体をスタブモジュールとした場合に該当する。スタブモジュールが他のサブシステムのライブラリに該当する。
（１）第２のテーブル４２よりシステム内のスタブモジュールをすべて抽出し、第１のテーブル４１からヘッダファイルのパス４１６、スタブモジュールのパス４１７を取得する。（２）ヘッダファイルのパスを組み込み、スタブモジュールのみコンパイルするMakefileを作成する。スタブモジュールを利用する側のサブシステムは、スタブライブラリをリンクする必要があるが、本例のスタブ対応型ソフトウエア開発支援システムは、利用する側のサブシステムのMakefileを作成する際に、スタブライブラリをリンクするように記述する。
【００４１】
図１０を参照して、Makefileを作成する場合の第３の例を説明する。本例では、結合テストの環境でコンパイルする。これは、スタブモジュールを一切用いない結合テストの工程に該当する。（１）全サブシステムに対し、サブシステム毎に利用している他サブシステムのスタブモジュールを第３のテーブル４３より抽出し、そのスタブモジュールのヘッダファイルのパス４１６を第１のテーブル４１から抽出する。（２）モジュール格納部３からユーザの属するサブシステムのコンパイル対象物を抽出する。（３）コンパイル対象物に他サブシステムのスタブモジュールのヘッダファイルのパスを組み込み、Makefileを作成する。
【００４２】
図８〜図１０にてMakefileを作成する方法の３つの例を説明した。こうして本例では、開発工程に合わせたMakefileの作成が可能である。
【００４３】
本例のスタブ対応型ソフトウエア開発支援システムによると、公開するスタブモジュールの情報をテーブルで管理することにより、そのスタブモジュールをコールする側では入力情報及び出力情報といった入出力インターフェース情報、ヘッダファイルの参照、スタブモジュールのリンク等プログラミングするうえで必要な情報を得られる。
【００４４】
また、本例のスタブ対応型ソフトウエア開発支援システムでは、スタブモジュールについての登録機能も有し、スタブモジュールをコールするうえで必要な情報を取得することもできるので、コンパイルエラー、リンクエラーの発生を防止することができる。
【００４５】
本例のスタブ対応型ソフトウエア開発支援システムはスタブデータベース４にスタブモジュールの情報を保持することでリソースの一元管理が可能となる。また、本例のスタブ対応型ソフトウエア開発支援システムはMakefileを自動作成し、コンパイルシステムとしての機能を有する。本例のスタブ対応型ソフトウエア開発支援システムでは、公開するスタブモジュールの情報をデータベースに登録し、エラーを未然防止するようにスタブモジュールをコールするのに必要な情報だけを抽出し、スタブモジュールの利用にも対応するMakefileを出力する。
【００４６】
以上、本発明の例を説明したが本発明は上述の例に限定されるものではなく、特許請求の範囲に記載された発明の範囲にて様々な変更が可能であることは当業者であれば容易に理解されよう。
【図面の簡単な説明】
【００４７】
【図１】本発明によるスタブ対応型ソフトウエア開発支援システムの構成を示す図である。
【図２】本発明によるスタブ対応型ソフトウエア開発支援システムの第１のテーブルの例を示す図である。
【図３】本発明によるスタブ対応型ソフトウエア開発支援システムの第２のテーブルの例を示す図である。
【図４】本発明によるスタブ対応型ソフトウエア開発支援システムの第３のテーブルの例を示す図である。
【図５】本発明によるスタブ対応型ソフトウエア開発支援システムの第１のテーブルのレコードの登録処理を説明するための図である。
【図６】本発明によるスタブ対応型ソフトウエア開発支援システムの第２のテーブルのレコードの登録処理を説明するための図である。
【図７】本発明によるスタブ対応型ソフトウエア開発支援システムの第３のテーブルのレコードの登録処理、及び、コンパイルエラー、リンクエラーの発生を防止する方法を説明するための図である。
【図８】本発明によるスタブ対応型ソフトウエア開発支援システムにおいて、サブシステムとスタブモジュールを一緒にコンパイルする場合のMakefile作成の処理を説明するための図である。
【図９】本発明によるスタブ対応型ソフトウエア開発支援システムにおいて、スタブライブラリのMakefileを作成する処理を説明するための図である。
【図１０】本発明によるスタブ対応型ソフトウエア開発支援システムにおいて、結合テストの環境のMakefileを作成する処理フを説明するための図である。
【符号の説明】
【００４８】
１…端末、２…コンピュータ、３…モジュール格納部、４…スタブデータベース、４１、４２、４３…テーブル
【図１】
2007172514.tif 000003
【図２】
2007172514.tif 000004
【図３】
2007172514.tif 000005
【図４】
2007172514.tif 000006
【図５】
2007172514.tif 000007
【図６】
2007172514.tif 000008
【図７】
2007172514.tif 000009
【図８】
2007172514.tif 000010
【図９】
2007172514.tif 000011
【図１０】
2007172514.tif 000012