(57)【要約】【課題】各機能を担当する実行プログラムとソースプログラムコード間の関係を自動抽出し、ソースプログラムコード変更による他機能への影響範囲を漏れなく且つ見やすい形で開発者に提示することができるソフトウェア開発支援装置を得る。【解決手段】ソフトウェア開発支援装置１は、開発される全機能についてのソースプログラムコードを保管するリポジトリデータベース５から、リポジトリインタフェース部６によりソースプログラムコードを取得し、ソース解析部７により、取得したソースプログラムコードを解析して解析結果データベース１１〜１６に保管し、影響範囲図作成部９により、解析結果を用いて、ソースプログラムコードを変更したときの他のソースプログラムコードへの影響範囲を図示するようにしたものである。【選択図】図１
2009122754.tif 000002
【特許請求の範囲】
【請求項１】
開発される全機能についてのソースプログラムコードを保管するリポジトリデータベースから、上記ソースプログラムコードを取得するリポジトリインタフェース部、及びこのリポジトリインタフェース部によって取得された上記ソースプログラムコードを解析するソース解析部を備え、
上記ソース解析部は、上記機能に対応する実行プログラムとソースプログラムコードとの対応関係を抽出する実行ソース対応抽出手段と、上記ソースプログラムコードで定義されている関数を抽出し、この抽出された関数間の呼び出し関係を抽出する関数関係抽出手段と、上記関数間の呼び出し関係を用いて、上記実行プログラム間の依存関係を抽出する実行プログラム関係抽出手段とを有することを特徴とするソフトウェア開発支援装置。
【請求項２】
上記ソース解析部による解析結果を用いて、上記ソースプログラムコードを変更したときの他のソースプログラムコードへの影響範囲を図示する影響範囲図作成部を備えたことを特徴とする請求項１記載のソフトウェア開発支援装置。
【請求項３】
上記影響範囲図作成部は、上記関数関係抽出手段によって抽出された関数間の呼び出し関係及び上記実行プログラム関係抽出手段によって抽出された実行プログラム間の依存関係に基づき、上記ソースプログラムコードが変更されたときの他のソースプログラムコードへの影響範囲を図示することを特徴とする請求項２記載のソフトウェア開発支援装置。
【請求項４】
上記影響範囲図作成部は、上記ソースプログラムコードが変更されたときの影響範囲を、実行プログラム名の囲み、ソースプログラムコード名の囲み、関数名の囲みの３階層で図示することを特徴とする請求項２または請求項３記載のソフトウェア開発支援装置。
【請求項５】
上記影響範囲図作成部は、上記ソースプログラムコードが変更されたときの影響範囲を、実行プログラムの単位で図示することを特徴とする請求項２または請求項３記載のソフトウェア開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェア開発時に変更部位の既存のソースプログラムコードへの影響範囲を開発者に明示するようにしたソフトウェア開発支援装置に関するものである。
【背景技術】
【０００２】
ソフトウェア開発では、近年ますます規模の増大がみられ、多人数での開発が必要となっている。このような環境下では、各開発者が担当する部位の相互依存関係を把握することが品質確保のために非常に重要である。
また、過去、既に開発済みのソースプログラムコードを流用し、効率よく開発を行うプロジェクトが増加してきている。この場合、流用するソースプログラムコードに対応した設計ドキュメントが整備されていれば、その内容理解や他機能との依存関係を容易に把握できるが、過去の度重なる改造等でドキュメントがメンテナンスされないままにソフトウェアが更新されていることが多く、結果としてドキュメントとソースプログラムコードの不一致を招き、高い品質を保ちながらソフトウェアの変更や追加開発を実現することを困難にしている場合がある。
【０００３】
このような環境下において、開発を支援する従来技術として、特許文献１では、ソースプログラムコードと仕様書類とを関係付けたデータベースを構築することで管理し、要求仕様書を変更する場合には変更すべきソースプログラムコードを自動的に抽出し、開発者に提示することを可能としている。
また、特許文献２では、ソフトウェアで使用されている関数、変数を自動抽出してプログラムモデルを作成し、関数や変数を修正する場合には、当該関数や変数が使用されているソースプログラムコードを開発者に提示することを可能としている。
さらに、特許文献３では、関数、変数を使用している箇所の抽出だけでなく、ミドルウェア関数を使用した分散環境下での依存関係の追跡方法を開示している。
【０００４】
【特許文献１】特開２００５−２５０９４６号公報（第４〜１９頁、図１）
【特許文献２】特開平５−２８９８６２号公報（第３〜８頁、図１）
【特許文献３】特開２００２−１２３３９０号公報（第４〜８頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１の従来技術については、機能とソースプログラムコードとの関係を対応づけるために、仕様書とソフトウェアとの関連付け情報を人手により構築する必要があり、多大な労力を要するという欠点があった。
特に、最近のソフトウェア開発では、過去のソフトウェア資産をブラックボックスのまま再利用しようとする場合が多く、本方式をそのまま適用する場合にはコストがかかるという問題がある。
【０００６】
特許文献２の従来技術では、情報構築に必要な手続きは自動化されているものの、ソフトウェアの依存関係として抽出できるのは、関数や変数を直接使用している箇所だけであり、当該関数を使用する関数をさらに使用している関数まで追いかけ、影響範囲として提示する具体的な手段の開示は、行われていない。
これを補う他の技術として、ある関数を間接的に利用する関数までの関数コール数を求めて、これを数値化して影響度を把握する技術が存在するが、この方法では、開発者にとって把握が容易という点に対して、情報がマクロ化されてしまい、実際に影響するところを把握し漏らすという欠点があった。
【０００７】
また、最近の大規模ソフトウェアでは、ミドルウェア関数により、あるプログラムが他の実行プログラムに通知する手段が多用される傾向にあり、単に関数の依存関係だけを抽出してもソフトウェア同士の正確な依存関係が見出せないという問題がある。
特許文献３の従来技術では、ミドルウェア関数を使用する環境下での依存関係チェックに関する技術が公開されているが、尾となる言語環境で定義された関数や引数を直接使用する箇所のチェックにとどまっており、上述のような実行モジュール単位での依存関係の抽出には至っていない。
また、大量に存在する関数同士の関係が抽出されてしまう大規模ソフトウェアの開発では、上記いずれの技術においても抽出される情報が多すぎて、肝心な実行プログラム間の係わり合いを把握しそこなうという欠点があった。
【０００８】
この発明は、上述のような課題を解決するためになされたものであり、各機能を担当する実行プログラムとソースプログラムコード間の関係を自動抽出し、ソースプログラムコード変更による他機能への影響範囲を漏れなく且つ見やすい形で開発者に提示することができるソフトウェア開発支援装置を得ることを目的にしている。
【課題を解決するための手段】
【０００９】
この発明に係わるソフトウェア開発支援装置においては、開発される全機能についてのソースプログラムコードを保管するリポジトリデータベースから、ソースプログラムコードを取得するリポジトリインタフェース部、及びこのリポジトリインタフェース部によって取得されたソースプログラムコードを解析するソース解析部を備え、
ソース解析部は、機能に対応する実行プログラムとソースプログラムコードとの対応関係を抽出する実行ソース対応抽出手段と、ソースプログラムコードで定義されている関数を抽出し、この抽出された関数間の呼び出し関係を抽出する関数関係抽出手段と、関数間の呼び出し関係を用いて、実行プログラム間の依存関係を抽出する実行プログラム関係抽出手段とを有するものである。
【発明の効果】
【００１０】
この発明は、以上説明したように、開発される全機能についてのソースプログラムコードを保管するリポジトリデータベースから、ソースプログラムコードを取得するリポジトリインタフェース部、及びこのリポジトリインタフェース部によって取得されたソースプログラムコードを解析するソース解析部を備え、
ソース解析部は、機能に対応する実行プログラムとソースプログラムコードとの対応関係を抽出する実行ソース対応抽出手段と、ソースプログラムコードで定義されている関数を抽出し、この抽出された関数間の呼び出し関係を抽出する関数関係抽出手段と、関数間の呼び出し関係を用いて、実行プログラム間の依存関係を抽出する実行プログラム関係抽出手段とを有するので、人手による労力をかけなくとも既存のソフトウェアリポジトリから機能とソースプログラムコードの関係を自動で抽出・解析することができ、また、直接関数をコールする箇所だけでなく実行プログラム間の依存関係も探索し抽出することができる。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
この発明は、特に監視制御システム等の大規模システムが、機能毎に分割された膨大な数の実行プログラムによって構成されることから、機能とソースプログラムコードとの関係を把握するために、各機能を担当する実行プログラムとソースプログラムコードとの対応付けを解明すれば、開発者にとって非常に有益な情報が得られることに着目した。
これにより、各機能を担当する実行プログラムとソースプログラムコード間の関係を自動抽出し、また、関数の抽出結果とも組み合わせてソースプログラムコードを解析することで、ミドルウェア等による実行プログラム間の依存関係も抽出し、ソースプログラムコード変更による他機能への影響範囲を漏れなく且つ見やすい形で開発者に提示するようにしたものである。
【００１２】
図１は、この発明の実施の形態１によるソフトウェア開発支援装置を示す構成図である。
図１において、ソフトウェア開発支援装置１は、ソフトウェアの開発を行う開発者によって使用される情報処理用の端末装置２と、開発対象の全ソフトウェアに関するソースプログラムコードを保管するリポジトリデータベース５を持つソフトウェアリポジトリ装置４とに、ネットワーク３を介して接続されている。
ソフトウェア開発支援装置１は、ソフトウェアリポジトリ装置４と通信を行い、同装置で保持するリポジトリデータベース５からソースプログラムコードを取得するためのリポジトリインタフェース部６と、このリポジトリインタフェース部６により取得したソースプログラムコードを解析し、結果をデータベースインタフェース部１０を介して、各種解析結果データベース１１〜１６に登録するソース解析部７と、解析結果データベース１１〜１６の情報を用いて、端末装置２に情報提供するためのソースプログラムコード影響範囲図を作成する影響範囲図作成部９と、影響範囲図作成部９の作成要求を端末装置２から受け付けて、結果を端末装置２に返信する端末インタフェース部８とにより構成される。
【００１３】
解析結果データベース１１〜１６には、ソース解析部７によってリポジトリデータベース５にある全プログラムソースコードを解析した結果が保管されている。
ソースデータベース部１１は、リポジトリデータベース５にある全ソースプログラムコードに対して管理のための一意なＩＤとバージョン情報を付加して保管している。モジュール構成ソースデータベース部１２は、各実行プログラムがどのソースプログラムコードから生成されているかの情報と各実行プログラムが実現する機能名を管理している。関数定義一覧データベース部１３は、全ソースプログラムコードにて定義される関数を一意なＩＤを付加して保管している。関数使用箇所一覧データベース部１４は、全ソースプログラムコードにて使用される関数の使用箇所と与えられる引数を保管している。関数関係データベース部１５は、関数間の呼び出し関係を管理している。プログラム関係データベース部１６は、実行プログラム間の呼び出し関係を管理している。
【００１４】
図２は、この発明の実施の形態１によるソフトウェア開発支援装置の処理手順を示すフローチャートである。
図３は、この発明の実施の形態１によるソフトウェア開発支援装置の解析対象のディレクトリ構成とプロセス定義を示す図である。
図３のディレクトリ構成が、そのままリポジトリデータベース５に登録されている。ただし、図で斜体文字になった部分、つまり、Ｏｂｊｅｃｔディレクトリ下にあるＦｕｎｃｔｉｏｎＡ１．ｏ等のコンパイル実行後に生成されるオブジェクトやＰｒｏｇｒａｍ１等の実行プログラムは、各開発者が開発時に生成するものであるため、リポジトリデータベース５には登録されない。
ここで、Ｐｒｏｇｒａｍ１というディレクトリには、ＦｕｎｃｔｉｏｎＡ１．ｃというソースプログラムコードがあり、同ディレクトリ内のＭａｋｅｆｉｌｅには、ＦｕｎｃｔｉｏｎＡ１．ｃを元にして、直下のＯｂｊｅｃｔというディレクトリ下に実行プログラムＰｒｏｇｒａｍ１を生成するというルールが記載されている。
また、その他ディレクトリについても、Ｌｉｂｒａｒｙ１がＦｕｎｃｔｉｏｎＢ．ｃから生成されること、Ｐｒｏｇｒａｍ２がＦｕｎｃｔｉｏｎＣ１．ｃから生成されること、Ｐｒｏｇｒａｍ３がＦｕｎｃｔｉｏｎＤ１．ｃ、ＦｕｎｃｔｉｏｎＤ２．ｃから生成されることが、Ｍａｋｅｆｉｌｅに記載されている。
同じく図３には、コンパイルされた実行プログラムが実行される計算機やプライオリティ等の挙動をミドルウェア機能により管理するために用意される定義ファイル情報を示しており、このようなミドルウェア動作に必要な定義ファイルもリポジトリデータベース５にソースプログラムコードと同様に保管される。
【００１５】
図４は、この発明の実施の形態１によるソフトウェア開発支援装置の解析対象のソースプログラムコードを示す図である。
図４において、このソースプログラムコードでは、複数のファイルに、関数ＦｕｎｃｔｉｏｎＡ１、ＦｕｎｃｔｉｏｎＢ１、ＦｕｎｃｔｉｏｎＢ２、ＦｕｎｃｔｉｏｎＣ１、ＦｕｎｃｔｉｏｎＤ１、ＦｕｎｃｔｉｏｎＤ２が定義されている。
ＦｕｎｃｔｉｏｎＡ１は、関数ＦｕｎｃｔｉｏｎＢ１を呼び出しており、ＦｕｎｃｔｉｏｎＢ１は、ミドルウェアの提供するプログラム起動関数（ｐｒｏｃｅｓｓ＿ｅｘｅｃｕｔｅ）により“Ｐｒｏｇｒａｍ２”を起動し、イベント通知関数（ｓｅｎｄ＿ｅｖｅｎｔ）により”Ｐｒｏｇｒａｍ３“に番号９９９９の事象を通知している。ＦｕｎｃｔｉｏｎＤ１では、イベント番号９９９９が通知された場合には、ＦｕｎｃｔｉｏｎＤ２を呼び出すことが定義されている。
【００１６】
図５は、この発明の実施の形態１によるソフトウェア開発支援装置のソースデータベースを示す図である。
図５において、登録されたソースプログラムコードのファイル（図中、構成ソースファイル）が、一意となるソースＩＤとバージョン情報と共に登録され、ソースＩＤを用いてソースプログラムコードを特定することができる。
【００１７】
図６は、この発明の実施の形態１によるソフトウェア開発支援装置のモジュール構成ソースデータベースを示す図である。
図６において、各実行プログラムがどのソースプログラムコード（構成ソースファイル）から生成されるかが登録されている。すなわち、実行プログラム名称と、機能と、構成ソースファイルが対応付けられている。
【００１８】
図７は、この発明の実施の形態１によるソフトウェア開発支援装置の関数定義一覧データベースを示す図である。
図７において、関数定義一覧データベース１３には、ソースプログラムコードで定義されている全関数が、一意となる関数ＩＤが付記されて登録されている。すなわち、関数ＩＣと、関数名と、ソースファイル名と、関数定義開始行と最終行とが対応付けられている。
【００１９】
図８は、この発明の実施の形態１によるソフトウェア開発支援装置の関数使用箇所一覧データベースを示す図である。
図８において、関数使用箇所一覧データベース１４には、ソースプログラムコードで使用される各関数が、どのソースファイルのどの行で使用され、どのような引数がセットされているかという情報が登録されている。
【００２０】
図９は、この発明の実施の形態１によるソフトウェア開発支援装置の関数関係データベースを示す図である。
図９においては、図７で登録された関数が相互にどのような呼び出し関係になっているかが登録されている。通知種別は、通知手段の詳細を示しており、ある関数が直接ある関数を呼び出す場合は“関数呼び出し”として登録され、ある関数が他の実行プログラムをミドルウェア関数やＯＳのシステムコール使用によるプログラム起動により呼び出す場合は“プログラム起動”、ある関数が他の実行プログラムにイベント通知により呼び出す場合は“イベント通知”として登録される。
【００２１】
図１０は、この発明の実施の形態１によるソフトウェア開発支援装置のプログラム関係データベースを示す図である。
図１０において、プログラム関係データベース１６には、実行プログラム間の呼び出し関係が登録されている。通知種別は、図９におけるものと同様である。
【００２２】
図１１は、この発明の実施の形態１によるソフトウェア開発支援装置の関数間相互関係図を示す図である。
図１１の図では、関数相互の関係を、開発者は容易に把握することができる。関数の関係は、（１）実行プログラム名の囲み、（２）ソースファイル名の囲み、（３）関数名の囲みの３階層で区別して依存関係を表記しており、関係の把握を容易としている。
【００２３】
図１２は、この発明の実施の形態１によるソフトウェア開発支援装置の影響箇所を表示した関数間相互関係図を示す図である。
図１２においては、ＦｕｎｃｔｉｏｎＣ１を直接呼び出している関数だけでなく、間接的に呼び出している関数を含め、影響を受けるすべての関数を色替え表示している。
【００２４】
図１３は、この発明の実施の形態１によるソフトウェア開発支援装置の影響箇所を表示した実行プログラム間相互関係図を示す図である。
図１３においては、図１２の表示を関数単位でなく機能（実行プログラム）単位で表示したものであり、大規模プログラムや複雑なプログラムの場合でも、容易に機能間の影響範囲を特定することが可能である。
【００２５】
次に、ソフトウェア開発支援装置の動作について説明する。
図２のソフトウェア開発支援装置１の処理手順を示すフローチャートに沿って説明する。
ソフトウェア開発支援装置１では、まず、ソースプログラムコードの解析が指示されると、図４に示すソースプログラムコードに関する情報を、リポジトリデータベース５から読み取り（ステップＳ１１）、ソースプログラムコードのプリプロセッシングを実行する（ステップＳ１２）。
このプリプロセッシングでは、関数あるいは関数の引数がマクロにより記述される場合があると、ステップＳ１５以降の解析処理を困難とするため、これを解決するために実施するものである。この処理が完了すると、図５に示すソースデータベースのように、全ソースプログラムコードファイルの名称がバージョンと共に、ソースデータベース１１に一意なＩＤを付加して登録される（ステップＳ１３）。
【００２６】
次に、リポジトリデータベース５に登録された図３に示すような各ディレクトリ上にあるＭａｋｅｆｉｌｅを読み取り、各ソースプログラムコードと実行プログラムの対応を抽出し、図６に示すモジュール構成ソースデータベース１２を作成する。実行プログラムに対応した機能名は、図３に示すように、プロセスを制御する役割を担うミドルウェアのプロセス定義情報から自動抽出する（ステップＳ１４、実行ソース対応抽出手段）。
【００２７】
さらに、図４のように、ソースプログラムコードで定義されている関数を抽出することで、図７に示す関数定義一覧データベース１３を作成する（ステップＳ１５）。
この関数定義一覧データベース１３には、各関数の実体が定義されているソースファイル名と行番号を保管する。ここで行番号とは、関数の定義開始行から最後の行のことであり、図４のソースプログラムコードでは、ＦｕｎｃｔｉｏｎＡ１はＦｕｎｃｔｉｏｎＡ１．ｃの１行目〜３行目までに定義されているので、開始行が１、最終行が３と登録される。
【００２８】
次に、図４に示すソースプログラムコードから、どの関数がどのソースファイルのどの行で定使用されているかを抽出し、図８に示す関数使用箇所一覧データベース１４に各関数にセットされる引数に関する情報と合わせて登録する（ステップＳ１６）。
【００２９】
次に、関数の呼び出し関係を管理する関数関係データベースの登録を行う（ステップＳ１７、関数関係抽出手段）。ここでは、関数定義一覧データベース１３と関数使用箇所一覧データベース１４の情報を使用する。
たとえば、図８に示す関数使用箇所一覧データベース１４において、ＦｕｎｃｔｉｏｎＢ２は、ソースファイルＳ２の２行目で使用されることを示しているが、図７に示す関数定義一覧データベース１３を参照すると、Ｓ２の２行目は、ＩＤがＦ２のＦｕｎｃｔｉｏｎＢ１であることが分かる。さらに、ＦｕｎｃｉｔｏｎＢ２そのものは、関数定義一覧データベース１３を参照すると、ＩＤがＦ３であることが分かるので、結果、Ｆ２からＦ３を関数呼び出ししていると解析され、図９に示す関数関係データベース１５に、呼び出し元ＩＤがＦ２、呼び出し先ＩＤがＦ３、通知種別が“関数呼び出し”として登録される。
【００３０】
また、ミドルウェア関数により、実行プロセスから他実行プロセスに通知するような関係も、あわせて関数関係データベース１５に抽出を行う（ステップＳ１８）。ミドルウェア関数の使用は、事前にソース解析部７に登録されており、例えば図４のｐｒｏｃｅｓｓ＿ｅｘｅｃｕｔｅという関数が指定した実行プログラムに起動を行う関数である場合、ソース解析部７は、引数で与えられる”Ｐｒｏｇｒａｍ２“が呼び出し先の実行プログラム名であることを解釈できる。
ここで、ソース解析部７は、”Ｐｒｏｇｒａｍ２“に対応するソースプログラムコードＳ３をモジュール構成ソースデータベース１２から抽出し、さらに、関数定義一覧データベース１３からソースプログラムコードＳ３にて定義される関数を抽出し、その中から起動時に実行される受信関数Ｆ４を抽出する。
また、ｐｒｏｃｅｓｓ＿ｅｘｅｃｕｔｅを呼び出しているソースプログラムコードＳ２の２行目は、図７に示す関数定義一覧データベース１３からＩＤがＦ２の関数Ｆｕｎｃｔｉｏｎ２であることが分かるため、これで、Ｆ４とＦ２の関係がプログラム起動として抽出され、図９の関数関係データベース１５に通知種別が”プログラム起動“として登録される。
【００３１】
その他の代表的なミドルウェア関数の例として、実行プロセスから他実行プロセスにイベント通知を行う場合の動作を示す。
図４に示すＦｕｎｃｔｉｏｎＢ１では、ｓｅｎｄ＿ｅｖｅｎｔというイベント通知を行う関数を用いて、実行プログラム”Ｐｒｏｇｒａｍ３“に対して、イベント番号９９９９の通知を行っている。一方、ＦｕｎｃｔｉｏｎＤ１では、ｒｅｇｉｓｔｅｒ＿ｅｖｅｎｔというイベント登録関数により、イベント番号９９９９を受信対象として登録すると共に、イベント番号９９９９が通知された場合には、ＦｕｎｃｔｉｏｎＤ２の呼び出しを行う処理を行う。
この場合、ソース解析部７は、関数使用箇所一覧データベース１４に登録されたｓｅｎｄ＿ｅｖｅｎｔ関数の引数１の”Ｐｒｏｇｒａｍ３”が通知先の実行プログラム名であることを解釈し、”Ｐｒｏｇｒａｍ３“に対応するソースプログラムコードＳ４、Ｓ５をモジュール構成ソースデータベース１２から抽出する。
さらに、関数使用箇所一覧データベース１４から、ソースプログラムコードＳ４、Ｓ５にて使用されるｒｅｇｉｓｔｅｒ＿ｅｖｅｎｔ関数で、かつ引数１が９９９９となっている関数を抽出する。
こうして抽出されたｒｅｇｉｓｔｅｒ＿ｅｖｅｎｔが呼び出す関数の引数２が”ＦｕｎｃｔｉｏｎＤ２“であることが、関数使用箇所一覧データベース１４から抽出でき、”ＦｕｎｃｔｉｏｎＤ２”の関数ＩＤがＦ６であることが、同じく関数定義一覧データベース１３から抽出できることから、結果として、Ｆ２がＦ６に対してイベント通知を行っていることが解釈され、図９の関数関係データベース１５にＦ２とＦ６への関係が通知種別”イベント通知“として登録される。
【００３２】
以上のように、関数関係データベース１５の生成が完了すると、次に、図１０のプログラム関係データベース１６の生成を行う（ステップＳ１９、実行プログラム関係抽出手段）。
プログラム関係データベース１６は、関数関係データベース１５のうち通知種別がプログラム起動またはイベント通知となっているものを抽出し、実行プログラム同士の関係を明らかにしたものである。
図９の関数関係データベースでは、Ｆ２とＦ４の関係が、プログラム起動の関係にあることが抽出されているので、図６のモジュール構成ソースデータベース１２と図７の関数定義一覧データベース１３の情報を用いて、Ｆ２が対応する実行プログラム名称がＰｒｏｇｒａｍ１であり、Ｆ４に対応する実行プログラムがＰｒｏｇｒａｍ２であることが抽出できる。
これにより、図１０に示すプログラム関係データベース１６のとおり、Ｐｒｏｇｒａｍ１とＰｒｏｇｒａｍ２の関係、Ｐｒｏｇｒａｍ２とＰｒｏｇｒａｍ３の関係が抽出され、データベースとして登録される。
【００３３】
以上が、ソース解析部７による、データベース１１〜１６の生成の動作であるが、次に開発者がこの装置に対して解析結果表示要求を行う場合の動作を説明する。
端末装置２から開発者が、影響度チェックを実施したいソース名称や関数名を指定すると、要求された名称を端末インタフェース部８が受付け、影響範囲図作成部９に通知される。影響範囲図作成部９では、要求されたソース名称や関数名を基点にして、前述の方法により生成された関数関係データベース１５とプログラム関係データベース１６の情報を用いることで、図１１に示すような相互関係図を作成し、端末装置２に描画データとして返信・表示する。
【００３４】
図１２は、開発者から関数名がＦｕｎｃｔｉｏｎＣ１の影響範囲チェックを指定された場合に生成する図を示している。図１２では、指定された関数を呼び出している関数を順に探索することで、すべての経路上に存在する関数を色替えにより明示している。
例えば、開発者がＦｕｎｃｔｉｏｎＣ１を変更しようとする際、ＦｕｎｃｔｉｏｎＣ１に影響する箇所を提示することができるため、影響する範囲を洩れなく確認することができる。
【００３５】
図１１や図１２では、関数の関係を、（１）実行プログラムの囲み、（２）ソースファイル名の囲み、（３）関数名の囲みの３階層で区別して依存関係をわかりやすく表記しているが、大規模なプログラムになると膨大な情報が抽出されるため、図１３のように実行プログラムや実行プログラムが実現する機能の関係のみに着目した図示も行うことができる。
これにより、開発者は大規模なソフトウェアであっても、難なく依存関係を把握することが可能となる。
【００３６】
このように、この発明のソフトウェア開発支援装置によれば、機能とソースプログラムコード間の関係を自動抽出し、また、関数の抽出結果とも組み合わせてソースプログラムコードを解析することで、従来方式では関係を追いかけることができなかったミドルウェア等による実行プログラム間の依存関係も抽出し、変更ソースプログラムコードによる影響範囲を漏れなく、且つ見やすい形で開発者に提示することができる。
したがって、人手による労力をかけずとも既存のソフトウェアリポジトリから機能（実行プログラム）とソースプログラムコードの関係を自動で抽出・解析することができ、また、直接関数をコールする箇所だけでなく実行プログラム間の依存関係も探索し、抽出することができ、さらに、関数だけの関係だけでは膨大な情報が表示されてしまう点を、ポイントを絞り込むことができるため、開発者に効率よく情報提示を行うことができるという効果がある。
【００３７】
上記説明では、この発明の用途として開発者が端末装置２から指定したある関数の影響範囲のチェックに活用する場合を例に説明したが、その他の用途として、ソースデータベース１１で管理しているバージョン情報を用いて、バージョンの差分があった箇所と影響範囲を自動で抽出するという用途にも利用できる。
また、上記説明では、実行プログラムとソースプログラムコードとの関係を、Ｍａｋｅｆｉｌｅの記述から抽出し、モジュール構成ソースデータベース１４を自動生成する方法を記載したが、一般のバージョン管理システムを用いれば、ソースプログラムコードに関する情報をキーワードとして実行プログラムに自動で埋め込んでおくことができるので、実行プログラムからｉｄｅｎｔ等のコマンドを用いて構成されるプログラムソースコードを特定してモジュール構成ソースデータベース１４を自動生成する方法も利用可能である。
【図面の簡単な説明】
【００３８】
【図１】この発明の実施の形態１によるソフトウェア開発支援装置を示す構成図である。
【図２】この発明の実施の形態１によるソフトウェア開発支援装置の処理手順を示すフローチャートである。
【図３】この発明の実施の形態１によるソフトウェア開発支援装置の解析対象のディレクトリ構成とプロセス定義を示す図である。
【図４】この発明の実施の形態１によるソフトウェア開発支援装置の解析対象のソースプログラムコードを示す図である。
【図５】この発明の実施の形態１によるソフトウェア開発支援装置のソースデータベースを示す図である。
【図６】この発明の実施の形態１によるソフトウェア開発支援装置のモジュール構成ソースデータベースを示す図である。
【図７】この発明の実施の形態１によるソフトウェア開発支援装置の関数定義一覧データベースを示す図である。
【図８】この発明の実施の形態１によるソフトウェア開発支援装置の関数使用箇所一覧データベースを示す図である。
【図９】この発明の実施の形態１によるソフトウェア開発支援装置の関数関係データベースを示す図である。
【図１０】この発明の実施の形態１によるソフトウェア開発支援装置のプログラム関係データベースを示す図である。
【図１１】この発明の実施の形態１によるソフトウェア開発支援装置の関数間相互関係図を示す図である。
【図１２】この発明の実施の形態１によるソフトウェア開発支援装置の影響箇所を表示した関数間相互関係図を示す図である。
【図１３】この発明の実施の形態１によるソフトウェア開発支援装置の影響箇所を表示した実行プログラム間相互関係図を示す図である。
【符号の説明】
【００３９】
１  ソフトウェア開発支援装置、２  端末装置、３  ネットワーク、
４  ソフトウェアリポジトリ装置、５  リポジトリデータベース、
６  リポジトリインタフェース部、７  ソース解析部、８  端末インタフェース部、
９  影響範囲図作成部、１０  データベースインタフェース部、
１１  ソースデータベース、１２  モジュール構成ソースデータベース、
１３  関数定義一覧データベース、１５  関数使用箇所一覧データベース、
１５  関数関係データベース、１６  プログラム関係データベース。
【図１】
2009122754.tif 000003
【図２】
2009122754.tif 000004
【図３】
2009122754.tif 000005
【図４】
2009122754.tif 000006
【図５】
2009122754.tif 000007
【図６】
2009122754.tif 000008
【図７】
2009122754.tif 000009
【図８】
2009122754.tif 000010
【図９】
2009122754.tif 000011
【図１０】
2009122754.tif 000012
【図１１】
2009122754.tif 000013
【図１２】
2009122754.tif 000014
【図１３】
2009122754.tif 000015