(57)【特許請求の範囲】
【請求項１】
ソフトウェアの仕様を構成する複数の仕様要素がそれぞれに記述される複数の仕様要素情報及び前記複数の仕様要素を実現する複数の関数が含まれるソースコードの間で相互に対応関係にある仕様要素同士及び相互に対応関係にある仕様要素と関数とを関連付けるトレーサビリティ情報を記憶するトレーサビリティ情報記憶部と、
前記ソースコードに含まれる前記複数の関数の間で依存関係にある関数同士を関連付ける依存関係情報を記憶する依存関係情報記憶部と、
前記複数の仕様要素情報に記述される前記複数の仕様要素のうち変更を施す仕様要素を変更元要素として通知する変更元要素通知を受け付ける変更元要素受付部と、
前記変更元要素通知で通知された変更元要素と前記トレーサビリティ情報で関連付けられている仕様要素及び関数を抽出するとともに、抽出した関数と前記依存関係情報で関連付けられている関数を依存関係関数として抽出し、抽出した前記依存関係関数と前記トレーサビリティ情報で関連付けられている仕様要素を抽出する変更影響分析部とを有する変更影響分析装置。
【請求項２】
前記変更影響分析装置は、更に、
前記変更影響分析部により抽出された仕様要素及び関数を表示する変更影響表示部を有する請求項１に記載の変更影響分析装置。
【請求項３】
前記変更影響分析部は、
抽出された関数が他の関数から呼び出される回数に基づき、抽出された関数の優先度と、抽出された関数と対応関係にある、抽出された仕様要素の優先度を決定する請求項１に記載の変更影響分析装置。
【請求項４】
前記変更影響分析部は、
抽出された関数がグローバル変数を参照する回数に基づき、抽出された関数の優先度と、抽出された関数と対応関係にある、抽出された仕様要素の優先度を決定する請求項１に記載の変更影響分析装置。
【請求項５】
前記変更影響分析部は、
抽出された関数が他の関数から呼び出される回数と、抽出された関数がグローバル変数を参照する回数との加算値に基づき、抽出された関数の優先度と、抽出された関数と対応関係にある、抽出された仕様要素の優先度を決定する請求項１に記載の変更影響分析装置。
【請求項６】
前記変更影響分析装置は、更に、
前記変更影響分析部により抽出された仕様要素及び関数を、優先度とともに表示する変更影響表示部を有する請求項３〜５のいずれかに記載の変更影響分析装置。
【請求項７】
前記変更影響分析装置は、
前記複数の仕様要素情報の前記複数の仕様要素及び前記ソースコードの前記複数の関数の間の対応関係を抽出して前記トレーサビリティ情報を生成するトレーサビリティ抽出部と、
前記ソースコードの前記複数の関数の間の依存関係を抽出して前記依存関係情報を生成する依存関係抽出部とを有し、
前記トレーサビリティ情報記憶部は、
前記トレーサビリティ抽出部により生成された前記トレーサビリティ情報を記憶し、
前記依存関係情報記憶部は、
前記依存関係抽出部により生成された前記依存関係情報を記憶する請求項１に記載の変更影響分析装置。
【請求項８】
前記トレーサビリティ情報記憶部は、
前記複数の仕様要素情報を要求仕様書及びソフトウェア設計書とし、
前記要求仕様書と前記ソフトウェア設計書及び前記ソースコードの間で相互に対応関係にある仕様要素同士及び相互に対応関係にある仕様要素と関数とを関連付けるトレーサビリティ情報を記憶し、
前記変更影響分析部は、
前記変更元要素に対する変更により影響を受ける仕様要素として、前記要求仕様書の仕様要素及び前記ソフトウェア設計書の仕様要素のうちの少なくともいずれかを抽出する請求項１に記載の変更影響分析装置。
【請求項９】
ソフトウェアの仕様を構成する複数の仕様要素がそれぞれに記述される複数の仕様要素情報及び前記複数の仕様要素を実現する複数の関数が含まれるソースコードの間で相互に対応関係にある仕様要素同士及び相互に対応関係にある仕様要素と関数とを関連付けるトレーサビリティ情報を記憶するトレーサビリティ情報記憶部と、
前記ソースコードに含まれる前記複数の関数の間で依存関係にある関数同士を関連付ける依存関係情報を記憶する依存関係情報記憶部とを有するコンピュータが行う変更影響分析方法であって、
前記コンピュータが、前記複数の仕様要素情報に記述される前記複数の仕様要素のうち変更を施す仕様要素を変更元要素として通知する変更元要素通知を受け付ける変更元要素受付ステップと、
前記コンピュータが、前記変更元要素通知で通知された変更元要素と前記トレーサビリティ情報で関連付けられている仕様要素及び関数を抽出するとともに、抽出した関数と前記依存関係情報で関連付けられている関数を依存関係関数として抽出し、抽出した前記依存関係関数と前記トレーサビリティ情報で関連付けられている仕様要素を抽出する変更影響分析ステップとを有する変更影響分析方法。
【請求項１０】
ソフトウェアの仕様を構成する複数の仕様要素がそれぞれに記述される複数の仕様要素情報及び前記複数の仕様要素を実現する複数の関数が含まれるソースコードの間で相互に対応関係にある仕様要素同士及び相互に対応関係にある仕様要素と関数とを関連付けるトレーサビリティ情報を記憶するトレーサビリティ情報記憶部と、
前記ソースコードに含まれる前記複数の関数の間で依存関係にある関数同士を関連付ける依存関係情報を記憶する依存関係情報記憶部とを有するコンピュータに、
前記複数の仕様要素情報に記述される前記複数の仕様要素のうち変更を施す仕様要素を変更元要素として通知する変更元要素通知を受け付ける変更元要素受付ステップと、
前記変更元要素通知で通知された変更元要素と前記トレーサビリティ情報で関連付けられている仕様要素及び関数を抽出するとともに、抽出した関数と前記依存関係情報で関連付けられている関数を依存関係関数として抽出し、抽出した前記依存関係関数と前記トレーサビリティ情報で関連付けられている仕様要素を抽出する変更影響分析ステップとを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発で生じる変更に伴って変更しなければならない可能性がある要素及び関数を抽出する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発成果物の一部を変更したときに、その変更が及ぼす影響を分析する変更影響分析機能は、コンピュータなどにより支援する方法が考案され、特許文献１や特許文献２に示されている。
特許文献１では、ソフトウェア開発成果物間のトレーサビリティをもとに変更影響を分析する方法が、特許文献２では、ソースコード中の依存関係を抽出し、その情報をもとに変更影響を分析する方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１７８５１１号公報
【特許文献２】特開２０１３−００３７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されている方法は、開発の上流工程から下流工程で作成されたソフトウェア構成品間のトレーサビリティを管理し、ソフトウェア構成品の変更時における他のソフトウェア構成品の変更影響を分析していた。
しかし、ソースコード中の依存関係は管理対象としておらず、ソースコード変更に伴う他のソースコードへの変更影響、及び変更影響のあるソースコードを起点とした、開発の上流工程で作成されたソフトウェア構成品への変更影響を分析できなかった。
そのため、ソフトウェア構成品を変更する場合に、その変更による影響を受けて変更しなければならない可能性がある他のソフトウェア構成品を漏れなく抽出することが困難であった。
【０００５】
特許文献２に開示されている方法では、開発の上流工程で作成された要求仕様書と、下流工程で作成された試験仕様書、ソースプログラム間のトレーサビリティ、及びソースプログラム間の呼出関係による依存関係を管理し、要求仕様書または試験仕様書、ソースプログラムの変更時における他の仕様書及びソースプログラムへの変更影響を分析していた。
しかし、変更影響のあるソースプログラムを起点とした、開発の上流工程で作成された要求仕様書や、下流工程で作成された試験仕様書への変更影響を分析できなかった。
そのため、要求仕様書や試験仕様書、ソースプログラムを変更する場合に、その影響を受けて変更しなければならない可能性がある他の要求仕様書や試験仕様書、ソースプログラムを漏れなく抽出することが困難であった。
【０００６】
本発明は、上記に鑑みてなされたものであって、ソフトウェアの仕様を構成するいずれかの仕様要素に変更がある場合に、当該仕様要素に対する変更により影響を受ける他の仕様要素及び関数を確実に抽出する構成を得ることを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る変更影響分析装置は、
ソフトウェアの仕様を構成する複数の仕様要素がそれぞれに記述される複数の仕様要素情報及び前記複数の仕様要素を実現する複数の関数が含まれるソースコードの間で相互に対応関係にある仕様要素同士及び相互に対応関係にある仕様要素と関数とを関連付けるトレーサビリティ情報を記憶するトレーサビリティ情報記憶部と、
前記ソースコードに含まれる前記複数の関数の間で依存関係にある関数同士を関連付ける依存関係情報を記憶する依存関係情報記憶部と、
前記複数の仕様要素情報に記述される前記複数の仕様要素のうち変更を施す仕様要素を変更元要素として通知する変更元要素通知を受け付ける変更元要素受付部と、
前記変更元要素通知で通知された変更元要素と前記トレーサビリティ情報で関連付けられている仕様要素及び関数を抽出するとともに、抽出した関数と前記依存関係情報で関連付けられている関数を依存関係関数として抽出し、抽出した前記依存関係関数と前記トレーサビリティ情報で関連付けられている仕様要素を抽出する変更影響分析部とを有する。
【発明の効果】
【０００８】
この発明によれば、トレーサビリティ情報及び依存関係情報を分析して、変更元要素に対する変更により影響を受ける仕様要素及び関数を確実に抽出することができるため、ソフトウェア開発成果物の変更漏れを防ぐことができ、ソフトウェアの品質向上や開発効率化に役立てることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における変更影響分析装置の構成例を示す図である。
【図２】実施の形態１における要求仕様書の例を示す図である。
【図３】実施の形態１におけるソフトウェア設計書の例を示す図である。
【図４】実施の形態１におけるソースコードの例を示す図である。
【図５】実施の形態１における要求仕様書とソフトウェア設計書間のトレーサビリティマトリクスの例を示す図である。
【図６】実施の形態１におけるソフトウェア設計書とソースコード中の関数間のトレーサビリティマトリクスの例を示す図である。
【図７】実施の形態１におけるソースコード中の関数間の依存関係マトリクスの例を示す図である。
【図８】実施の形態１における変更影響分析装置に入力する変更影響優先度マトリクスの例を示す図である。
【図９】実施の形態１における変更影響分析装置に入力する変更元要素通知の例を示す図である。
【図１０】実施の形態１における変更影響分析装置のアルゴリズムを示す図である。
【図１１】実施の形態１における変更影響分析装置のアルゴリズムを示す図である。
【図１２】実施の形態１における変更影響分析装置を用いた変更影響分析の実施例を示す図である。
【図１３】実施の形態１における変更影響分析装置を用いた変更影響分析の実施例を示す図である。
【図１４】実施の形態１における変更影響分析装置を用いた変更影響分析の実施例を示す図である。
【図１５】実施の形態１における変更影響分析装置を用いた変更影響分析の実施例を示す図である。
【図１６】実施の形態１における変更影響分析装置を用いた変更影響分析の実施例を示す図である。
【図１７】実施の形態１における変更影響分析計算のアルゴリズムを示す図である。
【図１８】実施の形態１における変更影響分析装置が出力する変更影響先要素の例を示す図である。
【図１９】実施の形態１における変更影響分析装置のハードウェア構成例を示す図である。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明にかかる変更影響分析装置の実施の形態を図面に基づいて詳細に説明する。
なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
本実施の形態では、ソフトウェア開発において、要求仕様書またはソフトウェア設計書、ソースコードなどのソフトウェア開発成果物間のトレーサビリティ、及びソースコード中における関数の呼出関係を利用し、仕様・設計の変更が生じた段階で、その変更に伴い変更しなければならない可能性がある他の要求項目及び設計項目、ソースコード中における関数を漏れなく抽出してユーザに示す、変更影響分析装置を説明する。
【００１２】
＊＊＊構成の説明＊＊＊
図１は、変更影響分析装置の構成例を示すブロック図である。
【００１３】
図１を参照すると、本実施の形態の変更影響分析装置１００は、トレーサビリティ抽出部１０１、依存関係抽出部１０２、変更影響分析部１０３、変更影響表示部１０４、変更元要素通知受付部１０５、トレーサビリティ情報記憶部３０１、依存関係情報記憶部３０２を備えている。
【００１４】
トレーサビリティ抽出部１０１は、要求仕様書２０１、ソフトウェア設計書２０２及びソースコード２０３間のトレーサビリティ情報を抽出する。
要求仕様書２０１、ソフトウェア設計書２０２には、ソフトウェアの仕様を構成する複数の仕様要素がそれぞれに記述されており、それぞれ仕様要素情報に相当する。
ソースコード２０３には、複数の仕様要素を実現する複数の関数が含まれている。
トレーサビリティ情報は、仕様要素情報である要求仕様書２０１及びソフトウェア設計書２０２とソースコード２０３との間で相互に対応関係にある仕様要素同士及び相互に対応関係にある仕様要素と関数とを関連付ける情報である。
トレーサビリティ抽出部１０１は、要求仕様書２０１及びソフトウェア設計書２０２の複数の仕様要素及びソースコードの関数の間の対応関係を抽出してトレーサビリティ情報を生成する。
生成されたトレーサビリティ情報は、トレーサビリティ情報記憶部３０１で記憶される。
【００１５】
依存関係抽出部１０２は、ソースコード２０３中における関数間の依存関係情報を抽出する。
依存関係情報は、ソースコードに含まれる複数の関数の間で依存関係にある関数同士を関連付ける情報である。
依存関係抽出部１０２は、ソースコードの複数の関数の間の依存関係を抽出して依存関係情報を生成する。
生成された依存関係情報は、依存関係情報記憶部３０２で記憶される。
【００１６】
変更元要素通知受付部１０５は、変更したい要求項目または設計項目である変更元要素を通知する変更元要素通知４０１を受け付ける。
変更元要素通知４０１は、要求仕様書２０１、ソフトウェア設計書２０２に記述される複数の仕様要素のうち変更を施す仕様要素を変更元要素として通知する情報である。
【００１７】
変更影響分析部１０３は、変更元要素通知４０１とトレーサビリティ情報及び依存関係情報を参照して変更影響先要素４０２を抽出する。
より具体的には、変更影響分析部１０３は、変更元要素通知４０１で通知された変更元要素とトレーサビリティ情報で関連付けられている仕様要素及び関数を抽出する。
また、変更影響分析部１０３は、抽出した関数と依存関係情報で関連付けられている関数を依存関係関数として抽出し、抽出した依存関係関数とトレーサビリティ情報で関連付けられている仕様要素を抽出する。
抽出された仕様要素及び関数が変更影響先要素４０２となる。
更に、変更影響分析部１０３は、抽出された関数が他の関数から呼び出される回数と、抽出された関数がグローバル変数を参照する回数との加算値に基づき、抽出された関数の優先度（変更影響優先度という）と、抽出された関数と対応関係にある、抽出された仕様要素の変更影響優先度を決定する。
【００１８】
変更影響表示部１０４は、変更影響分析部１０３が抽出した変更影響先要素４０２を表示装置５０１に表示する。
つまり、変更影響表示部１０４は、変更影響分析部１０３により抽出された仕様要素及び関数を表示装置５０１に表示する。
また、変更影響表示部１０４は、変更影響分析部１０３により抽出された仕様要素及び関数を、変更影響優先度とともに表示装置５０１に表示する。
【００１９】
図２に要求仕様書２０１の例を示す。
要求仕様書２０１は、要求項目ごとにＲと３桁の数値で構成される要求ＩＤタグ（［Ｒ０００１］〜［Ｒ００４］）を持つ。
図２において、要求項目とは要求ＩＤタグに続く記述であり、各要求項目は仕様要素に相当する。
例えば、「［Ｒ００１］」に続く「１つのＬＥＤを点灯・消灯できる。」が要求項目（仕様要素）である。
【００２０】
図３にソフトウェア設計書２０２の例を示す。
ソフトウェア設計書２０２は、設計項目ごとにＤと３桁の数値で構成される設計ＩＤタグ（［Ｄ００１］〜［Ｄ００４］）を持つ。
図３において、設計項目は設計ＩＤタグに続く記述であり、各設計項目は仕様要素に相当する。
例えば、「［Ｄ００１］」に続く、「ＬＥＤ点灯処理・ＬＥＤポートに０ｘ０１を出力する。」が設計項目（仕様要素）である。
【００２１】
図４にソースコード２０３の例を示す。
ソースコード２０３は、ソースコード中の関数ごとにＣと３桁の数値で構成される関数ＩＤタグ（［Ｃ００１］〜［Ｃ００７］）を持つ。
【００２２】
トレーサビリティ情報は、図５に例示するトレーサビリティマトリクスと図６に例示するトレーサビリティマトリクスで構成される。
【００２３】
図５に要求ＩＤと設計ＩＤ間のトレーサビリティマトリクスの例を示す。
要求ＩＤと設計ＩＤ間のトレーサビリティマトリクスは、要求ＩＤを行、設計ＩＤを列としており、要求ＩＤと設計ＩＤ間にトレーサビリティが存在する場合、その要求ＩＤの行と設計ＩＤの列が交差する場所に丸が付く。
つまり、図５のトレーサビリティマトリクスは、要求ＩＤと設計ＩＤとを関連付けることで対応関係にある要求項目と設計項目とを関連付けている。
【００２４】
図６に設計ＩＤと関数ＩＤ間のトレーサビリティマトリクスの例を示す。
設計ＩＤと関数ＩＤ間のトレーサビリティマトリクスは、設計ＩＤを行、関数ＩＤを列としており、設計ＩＤと関数ＩＤ間にトレーサビリティが存在する場合、その設計ＩＤの行と関数ＩＤの列が交差する場所に丸が付く。
つまり、図６のトレーサビリティマトリクスは、設計ＩＤと関数ＩＤとを関連付けることで対応関係にある設計項目と関数とを関連付けている。
【００２５】
依存関係情報は、図７に例示する依存関係マトリクスと図８に例示する変更影響優先度マトリクスで構成される。
【００２６】
図７に関数ＩＤ間の依存関係マトリクスの例を示す。
依存関係マトリクスは、呼出先の関数ＩＤを行、呼出元の関数ＩＤを列としており、関数ＩＤ間にトレーサビリティが存在する場合、その呼出先の関数ＩＤの行と呼出元の関数ＩＤの列が交差する場所に丸が付く。
つまり、図７の依存関係マトリクスは、関数ＩＤを関連付けることで依存関係にある関数同士を関連付ける。
【００２７】
図８に関数ＩＤの変更影響優先度マトリクスの例を示す。
変更影響優先度マトリクスは、関数ＩＤを行、関数ＩＤに対応する関数が参照するグローバル変数の数及びその関数の呼出元関数の数を列としている。
変更影響優先度は、呼出元関数の欄に記述される値と、グローバル変数の欄に記述される値の合計値となっている。
【００２８】
図９に変更元要素通知４０１の例を示す。
変更元要素通知４０１は、すべての要求ＩＤと設計ＩＤを左行としており、変更したい要求ＩＤまたは設計ＩＤがある場合、その要求ＩＤまたは設計ＩＤの列の右行に丸を付ける。
【００２９】
＊＊＊動作の説明＊＊＊
図１０及び図１１に変更影響分析部１０３の変更影響分析アルゴリズムを示す。
なお、ステップＳ１０１、Ｓ１０２、Ｓ１０３に記載のａ、ステップＳ２０１、Ｓ２０２、Ｓ２０３に記載のｂ、ステップＳ３０１、Ｓ３０２、Ｓ３０３に記載のｃ、ステップＳ４０１、Ｓ４０２、Ｓ４０３に記載のｄは、それぞれＩＤ（要求ＩＤ、設計ＩＤ、関数ＩＤ）を選択するための変数である。
【００３０】
ステップＳ１０１において、変更元要素通知受付部１０５が変更元要素通知４０１を受付け（変更元要素受付ステップ）、変更影響分析部１０３は、変更元要素通知受付部１０５から変更元要素通知４０１を入力する。
変更元要素通知４０１は、前述したように、変更したい要求項目または設計項目を示した情報である。
ステップＳ１０２以降の処理により、変更影響分析部１０３は、変更元要素に対する変更により影響を受ける要求項目、設計項目、関数を、トレーサビリティ情報及び依存関係情報を分析して抽出する（変更影響分析ステップ）。
【００３１】
ステップＳ１０２、Ｓ１０３、Ｓ１０４、Ｓ１０６において、変更影響分析部１０３は、ステップＳ１０１で入力した変更元要素通知４０１のリストから、右列に丸が付いている要求ＩＤと設計ＩＤを順に選択する。
例えば、図９の変更元要素通知４０１を入力した場合、選択する要求ＩＤはＲ００２である。
【００３２】
ステップＳ１０５において選択したＩＤが要求ＩＤである場合、変更影響分析部１０３は、ステップＳ１０６において、要求ＩＤと設計ＩＤ間のトレーサビリティマトリクス（図５）から、選択した要求ＩＤの列に丸が付いている行の設計ＩＤ群を抽出する。
例えば、選択した要求ＩＤがＲ００２である場合、図５のトレーサビリティマトリクスから抽出される設計ＩＤは、図１２に示す通り、Ｒ００２の行において丸がついているＤ００３及びＤ００４である。
【００３３】
ステップＳ１０５において選択したＩＤが設計ＩＤである場合、変更影響分析部１０３は、ステップＳ２０４において、設計ＩＤと関数ＩＤ間のトレーサビリティマトリクス（図６）から、ステップＳ２０２で選択した設計ＩＤの行に丸が付いている列の関数ＩＤ群を抽出する。
【００３４】
ステップＳ２０１、Ｓ２０２、Ｓ２０３、Ｓ２０５において、変更影響分析部１０３は、ステップＳ１０６で抽出した設計ＩＤ群を順に選択する。
【００３５】
ステップＳ２０４において、変更影響分析部１０３は、設計ＩＤと関数ＩＤ間のトレーサビリティマトリクス（図６）から、選択した設計ＩＤの行に丸が付いている列の関数ＩＤを抽出する。
例えば、選択した設計ＩＤがＤ００３及びＤ００４である場合、図６のトレーサビリティマトリクスから抽出される関数ＩＤは、図１３に示す通り、Ｄ００３及びＤ００４の行において丸がついている列のＣ００３及びＣ００４である。
【００３６】
ステップＳ３０１、Ｓ３０２、Ｓ３０３、Ｓ３０６において、変更影響分析部１０３は、ステップＳ２０４で抽出した全ての関数ＩＤ群を順に選択する。
【００３７】
ステップＳ３０４において、変更影響分析部１０３は、関数ＩＤ間の依存関係マトリクス（図７）から、ステップＳ３０２で選択した関数ＩＤの行に丸が付いている列の関数ＩＤ群を抽出する。
例えば、選択した関数ＩＤがＣ００３及びＣ００４である場合、選択する関数ＩＤはＣ００３及びＣ００４であり、図７の依存関係マトリクスから抽出される関数ＩＤは、図１４に示す通り、Ｃ００３及びＣ００４の行において丸が付いている列のＣ００５及びＣ００６である。
【００３８】
ステップＳ４０１、Ｓ４０２、Ｓ４０３、Ｓ４０６において、変更影響分析部１０３は、ステップＳ３０４で抽出した全ての関数ＩＤ群を順に選択する。
【００３９】
ステップＳ４０４において、変更影響分析部１０３は、設計ＩＤと関数ＩＤ間のトレーサビリティマトリクス（図６）から、ステップＳ４０２で選択した関数ＩＤの列に丸が付いている行の設計ＩＤを抽出する。
例えば、選択した関数ＩＤがＣ００５及びＣ００６である場合、図６のトレーサビリティマトリクスから抽出される設計ＩＤは、図１５に示す通り、Ｃ００５及びＣ００６の列において丸が付いている行のＤ００５及びＤ００６である。
【００４０】
ステップＳ４０５において、変更影響分析部１０３は、要求ＩＤと設計ＩＤ間のトレーサビリティマトリクスから、ステップＳ４０４で抽出した設計ＩＤの列に丸が付いている行の要求ＩＤ群を抽出する。
例えば、抽出した設計ＩＤがＤ００５及びＤ００６の場合、図５のトレーサビリティマトリクスから抽出される要求ＩＤは、図１６に示す通り、Ｄ００５及びＤ００６の列において丸が付いている行のＲ００３である。
【００４１】
ステップＳ５０１において、変更影響分析部１０３は、関数ＩＤの変更影響優先度マトリクスから、設計ＩＤ及び要求ＩＤの変更影響優先度を計算する。
図１７に変更影響優先度計算のアルゴリズムを示す。
なお、ステップＳ５０３、Ｓ５０４、Ｓ５０５に記載のａ、ステップＳ５１０、Ｓ５１１、Ｓ５１２に記載のｂは、それぞれＩＤ（要求ＩＤ、設計ＩＤ、関数ＩＤ）を選択するための変数である。
【００４２】
変更影響分析部１０３は、ステップＳ５０２において抽出した設計ＩＤ群を入力し、ステップＳ５０３、Ｓ５０４、Ｓ５０５、Ｓ５０８において、入力した設計ＩＤ群を順に選択する。
【００４３】
ステップＳ５０６において、変更影響分析部１０３は、設計ＩＤと関数ＩＤ間のトレーサビリティマトリクスから、ステップＳ５０４で選択した設計ＩＤの行に丸が付いている列の関数ＩＤを抽出する。
例えば、選択した設計ＩＤがＤ００３である場合、図６のトレーサビリティマトリクスから抽出される関数ＩＤは、Ｄ００３の行において丸がついている列のＣ００３である。
【００４４】
ステップＳ５０７において、変更影響分析部１０３は、関数ＩＤの変更影響優先度マトリクスにおける抽出した関数ＩＤの変更影響優先度を、選択した設計ＩＤの変更影響優先度とし、変更影響先要素４０２に出力する。
例えば、選択した設計ＩＤがＤ００３、抽出した関数ＩＤがＣ００３である場合、図８の変更影響優先度マトリクスにおいてＣ００３の変更影響優先度は３であるため、図１８に示す通り、Ｄ００３の変更影響優先度は、Ｃ００３と同じ３となる。
【００４５】
変更影響分析部１０３は、ステップＳ５０９において抽出した要求ＩＤ群を入力し、ステップＳ５１０、Ｓ５１１、Ｓ５１２、Ｓ５１５において、入力した設計ＩＤ群を順に選択する。
【００４６】
ステップＳ５１３において、変更影響分析部１０３は、要求ＩＤと設計ＩＤ間のトレーサビリティマトリクスから、ステップＳ５１１で選択した要求ＩＤの行に丸が付いている列の設計ＩＤを抽出する。
例えば、選択した要求ＩＤがＲ００３である場合、図５のトレーサビリティマトリクスから抽出される設計ＩＤ群は、Ｒ００３の行において丸がついている列のＤ００５及びＤ００６である。
【００４７】
ステップＳ５１４において、変更影響分析部１０３は、ステップ５１３で抽出した設計ＩＤ群の変更影響優先度の合計を、選択した要求ＩＤの変更影響優先度とし、変更影響先要素４０２を出力する。
例えば、選択した要求ＩＤがＲ００３、抽出した設計ＩＤ群がＤ００３及びＤ００４である場合、図１８に示す通り、Ｄ００５の変更影響優先度０と、Ｄ００６の変更影響優先度０であり合計０であるため、Ｒ００３の変更影響優先度は０となる。
【００４８】
ステップＳ６０１において、ステップＳ１０６、Ｓ２０４、Ｓ３０４、Ｓ４０４、Ｓ４０５で抽出した全ての要求ＩＤ、設計ＩＤ、関数ＩＤ群を、変更影響優先度が高い順に並べた変更影響先要素４０２を出力する。
図１８は出力する変更影響先要素４０２の例で、抽出されたＲ００３、Ｄ００３、Ｄ００４、Ｄ００５、Ｄ００６、Ｃ００３、Ｃ００４、Ｃ００５、Ｃ００６が変更影響優先度順に並べられる。
【００４９】
これにより、要求項目または設計項目の変更が生じた段階で、その影響を受けて変更しなければならない可能性がある他の要求項目及び設計項目、ソースコード中の関数を、変更影響可能性の順に漏れなく抽出することが可能となる。
例えば、出力する変更影響先要素４０２が図１８の場合、変更しなければならない可能性がある他の要求項目及び設計項目、ソースコード中の関数のＩＤはＲ００３、Ｄ００３、Ｄ００４、Ｄ００５、Ｄ００６、Ｃ００３、Ｃ００４、Ｃ００５、Ｃ００６であり、特に変更影響可能性が高いものは、設計ＩＤの場合Ｄ００３、関数ＩＤの場合Ｃ００３である。
【００５０】
＊＊＊効果の説明＊＊＊
このように、本実施の形態によれば、要求項目または設計項目の変更が生じた段階で、その変更に伴い変更しなければならない可能性がある他の要求項目及び設計項目を漏れなく抽出できるため、要求仕様書またはソフトウェア設計書、ソースコードなどのソフトウェア開発成果物の変更漏れを防ぐことができ、ソフトウェアの品質向上や開発効率化に役立てることができる。
このため、本実施の形態に係る変更影響分析装置は、ソフトウェア開発成果物の変更影響分析に有用である。
【００５１】
なお、上記では、抽出された関数が他の関数から呼び出される回数と、抽出された関数がグローバル変数を参照する回数との加算値に基づき、変更影響優先度を決定しているが、関数が他の関数から呼び出される回数のみに基づいて変更影響優先度を決定してもよいし、関数がグローバル関数を参照する回数のみに基づいて変更影響優先度を決定してもよい。
【００５２】
最後に、本実施の形態に示した変更影響分析装置１００のハードウェア構成例を図１９を参照して説明する。
変更影響分析装置１００はコンピュータであり、変更影響分析装置１００の各要素をプログラムで実現することができる。
変更影響分析装置１００のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００５３】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
図１に示した表示装置５０１は、入出力装置９０５の一部である。
【００５４】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図１に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「〜部」の機能を実現するプログラムを実行する。
また、本実施の形態の説明において、「判断する」、「判定する」、「抽出する」、「分析する」、「決定する」、「選択する」、「生成する」、「計算する」、「設定する」、「登録する」、「入力する」、「出力する」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
【００５５】
なお、図１９の構成は、あくまでも変更影響分析装置１００のハードウェア構成の一例を示すものであり、変更影響分析装置１００のハードウェア構成は図１９に記載の構成に限らず、他の構成であってもよい。
【００５６】
また、本実施の形態に示す手順により、本発明に係る変更影響分析方法を実現可能である。
【符号の説明】
【００５７】
１００  変更影響分析装置、１０１  トレーサビリティ抽出部、１０２  依存関係抽出部、１０３  変更影響分析部、１０４  変更影響表示部、１０５  変更元要素通知受付部、２０１  要求仕様書、２０２  ソフトウェア設計書、２０３  ソースコード、３０１  トレーサビリティ情報記憶部、３０２  依存関係情報記憶部、４０１  変更元要素通知、４０２  変更影響先要素、５０１  表示装置。
【図１】
0006300710.tif 000002
【図２】
0006300710.tif 000003
【図３】
0006300710.tif 000004
【図４】
0006300710.tif 000005
【図５】
0006300710.tif 000006
【図６】
0006300710.tif 000007
【図７】
0006300710.tif 000008
【図８】
0006300710.tif 000009
【図９】
0006300710.tif 000010
【図１０】
0006300710.tif 000011
【図１１】
0006300710.tif 000012
【図１２】
0006300710.tif 000013
【図１３】
0006300710.tif 000014
【図１４】
0006300710.tif 000015
【図１５】
0006300710.tif 000016
【図１６】
0006300710.tif 000017
【図１７】
0006300710.tif 000018
【図１８】
0006300710.tif 000019
【図１９】
0006300710.tif 000020