(57)【要約】【課題】より精度良く処理の変更に伴う影響度を分析することが可能な影響度分析装置等を提供する。【解決手段】依存関係取得部４１０は、ソフトウェアを構成する複数のソフトウェア構成要素において、複数のソフトウェア構成要素間の依存頻度に基づいて、複数のソフトウェア構成要素間の依存強度を取得する。重み付依存強度算出部４２０は、取得された依存強度に対して、ソフトウェア構成要素毎に、該ソフトウェア構成要素の特性を表す重みを記憶する重みテーブル７１０に記憶された重みにより重み付けをすることにより、複を算出する。重み付ＤＳＭ生成部４３０は、算出された複数のソフトウェア構成要素間の重み付依存強度数のソフトウェア構成要素間の重み付依存強度に基づいて、重み付ＤＳＭを生成する。影響範囲抽出部４４０は、生成された重み付ＤＳＭに基づいて、前記ソフトウェアの変更に伴う影響範囲を抽出する。【選択図】図３
2013125466.tif 000002
【特許請求の範囲】
【請求項１】
複数の構成要素から構成される処理の変更に伴う影響を分析する影響度分析装置であって、
前記複数の構成要素において、各構成要素が他の構成要素に依存する依存頻度に基づいて、前記複数の構成要素間の依存強度を取得する依存関係取得手段と、
構成要素毎に、該構成要素の特性を表す重みを記憶する重み記憶手段と、
前記依存関係取得手段により取得された前記複数の構成要素間の依存強度に対して、前記重み記憶手段に記憶された重みにより重み付けをすることにより、前記複数の構成要素間の重み付依存強度を算出する重み付依存強度算出手段と、
前記重み付依存強度算出手段により算出された前記複数の構成要素間の重み付依存強度に基づいて、前記処理の変更に伴う影響範囲を抽出する影響範囲抽出手段と、
を備えることを特徴とする影響度分析装置。
【請求項２】
前記複数の構成要素間の重み付依存強度の分布に基づいて、閾値を算出する閾値算出手段をさらに備え、
前記影響範囲抽出手段は、前記重み付依存強度算出手段により算出された前記複数の構成要素間の重み付依存強度のうち、前記閾値算出手段により算出された閾値以上の重み付依存強度に対応する前記複数の構成要素を、影響範囲として抽出する、
ことを特徴とする請求項１に記載の影響度分析装置。
【請求項３】
前記閾値算出手段により算出される前記閾値の算出範囲を指定する算出範囲指定手段をさらに備える、
ことを特徴とする請求項２に記載の影響度分析装置。
【請求項４】
前記構成要素の品質を表す点数を算出する点数算出部と、
前記点数算出部により算出された点数に基づいて、前記構成要素毎の前記重みを算出し、算出した前記重みを前記重み記憶手段に記憶させる重み算出手段と、をさらに備える、
ことを特徴とする請求項１乃至３のいずれか１項に記載の影響度分析装置。
【請求項５】
複数の構成要素間の依存関係の種類毎に、該種類の特性を表す依存種類別重みを記憶する依存種類別重み記憶手段をさらに備え、
前記重み付依存強度算出部は、前記依存関係取得手段により取得された前記複数の構成要素間の依存強度に対して、前記重み記憶手段に記憶された重みと、前記依存種類別重み記憶手段に記憶された依存種類別重みとにより重み付けをすることにより、前記複数の構成要素間の重み付依存強度を算出する、
ことを特徴とする請求項１乃至４のいずれか１項に記載の影響度分析装置。
【請求項６】
複数の構成要素から構成される処理の変更に伴う影響を分析する影響度分析方法であって、
前記複数の構成要素において、各構成要素が他の構成要素に依存する依存頻度に基づいて、前記複数の構成要素間の依存強度を取得する依存関係取得ステップと、
前記依存関係取得ステップにおいて取得された前記複数の構成要素間の依存強度に対して、構成要素毎に、該構成要素の特性を表す重みを記憶する重み記憶手段に記憶された重みにより重み付けをすることにより、前記複数の構成要素間の重み付依存強度を算出する重み付依存強度算出ステップと、
前記重み付依存強度算出ステップにおいて算出された前記複数の構成要素間の重み付依存強度に基づいて、前記処理の変更に伴う影響範囲を抽出する影響範囲抽出ステップと、
を有することを特徴とする影響度分析方法。
【請求項７】
複数の構成要素から構成される処理の変更に伴う影響をコンピュータを用いて分析するプログラムであって、
前記コンピュータを、
前記複数の構成要素において、各構成要素が他の構成要素に依存する依存頻度に基づいて、前記複数の構成要素間の依存強度を取得する依存関係取得手段、
前記依存関係取得手段により取得された前記複数の構成要素間の依存強度に対して、構成要素毎に、該構成要素の特性を表す重みを記憶する重み記憶手段に記憶された重みにより重み付けをすることにより、前記複数の構成要素間の重み付依存強度を算出する重み付依存強度算出手段、
前記重み付依存強度算出手段により算出された前記複数の構成要素間の重み付依存強度に基づいて、前記処理の変更に伴う影響範囲を抽出する影響範囲抽出手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の構成要素から構成される処理の変更に伴う影響を分析するための影響度分析装置、影響度分析方法、及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェアアーキテクチャ評価技術として、ソフトウェアを構成する要素間における「関数の呼び出し」や「変数の参照」等の依存関係をソースコードから求め、ソフトウェアの変更に伴う影響を分析する手法がある。
【０００３】
特許文献１では、プログラムの変更を行う際に、この変更によって副次的に引き起こされる可能性のある変更結果の発生度を危険度として算出する技術が開示されている。
【０００４】
特許文献２では、複数の階層の何れかに属する、製品開発のプロセスにおける複数の要件間の依存関係を分析する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−４４２７５号公報
【特許文献２】特開２００７−２６５４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１及び２に開示された技術は、ソフトウェアの構成要素間の依存関係、あるいは開発プロセスにおける要件間の依存関係のみに着目しており、依存関係にあるソフトウェアの構成要素の数値的な特性（例えば、関数の複雑度や行数）が加味されておらず、ソフトウェアの修正・変更に伴う影響範囲の正確な把握が困難である。例えば、関数の複雑度が１０である関数Ａから関数Ｃへ、関数の複雑度が５０である関数Ｂから関数Ｃへ共に、「関数の呼び出し２回」の依存関係が存在していた場合、上記の技術では「関数の呼び出し２回」の依存強度のみがソフトウェアの修正難易度を測るための情報であり、関数Ａ、Ｂの情報（例えば、複雑度）が加味されず、同等の難易度と判定される。
【０００７】
本発明は、上述の事情の下になされたもので、より精度良く処理の変更に伴う影響度を分析することが可能な影響度分析装置、影響度分析方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る影響度分析装置は、
複数の構成要素から構成される処理の変更に伴う影響を分析する影響度分析装置であって、
前記複数の構成要素において、各構成要素が他の構成要素に依存する依存頻度に基づいて、前記複数の構成要素間の依存強度を取得する依存関係取得手段と、
構成要素毎に、該構成要素の特性を表す重みを記憶する重み記憶手段と、
前記依存関係取得手段により取得された前記複数の構成要素間の依存強度に対して、前記重み記憶手段に記憶された重みにより重み付けをすることにより、前記複数の構成要素間の重み付依存強度を算出する重み付依存強度算出手段と、
前記重み付依存強度算出手段により算出された前記複数の構成要素間の重み付依存強度に基づいて、前記処理の変更に伴う影響範囲を抽出する影響範囲抽出手段と、
を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、より精度良く処理の変更に伴う影響度を分析することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る影響度分析装置のハードウェア構成を示すブロック図である。
【図２】実施形態１に係る重みテーブルの一例である。
【図３】実施形態１に係る影響度分析装置の機能構成を示すブロック図である。
【図４】実施形態１に係る依存関係テーブルの一例である。
【図５】従来の手法により生成されたＤＳＭの一例である。
【図６】実施形態１に係る重み付依存関係テーブルの一例である。
【図７】実施形態１に係る重み付ＤＳＭの一例である。
【図８】実施形態１に係る影響度分析処理の流れを示すフローチャートである。
【図９】実施形態２に係る影響度分析装置の機能構成を示すブロック図である。
【図１０】図７に示す重み付ＤＳＭに格納された重み付依存強度の分布を表す図である。
【図１１】実施形態３に係る影響度分析装置の機能構成を示すブロック図である。
【図１２】実施形態３に係る算出範囲情報の一例である。
【図１３】実施形態４に係る影響度分析装置の機能構成を示すブロック図である。
【図１４】実施形態４に係る重みテーブルの一例である。
【図１５】実施形態４に係る重み付依存関係テーブルの一例である。
【図１６】実施形態４に係る重み付ＤＳＭの一例である。
【図１７】実施形態５に係る影響度分析装置の機能構成を示すブロック図である。
【図１８】実施形態５に係る依存種類別重みテーブルの一例である。
【図１９】実施形態５に係る重み付依存関係テーブルの一例である。
【発明を実施するための形態】
【００１１】
（実施形態１）
本発明の実施形態１に係る影響度分析装置は、複数のソフトウェア構成要素から構成されるソフトウェアの変更に伴う影響度を分析する装置である。ここで、「ソフトウェア構成要素」は、Ｊａｖａ（登録商標）、Ｃ＋＋等のコンピュータ言語により記述されたソースコードにより表されるソフトウェアを構成する要素であって、例えば、関数やコード群である。なお、以下の説明において、影響度を分析する対象となるソフトウェアは、Ｃ＋＋により記述されたソースコードであるものとし、図２に一例として示すソフトウェア構成要素から構成されているものとする。
【００１２】
また、本発明の実施形態１に係る影響分析装置は、複数のソフトウェア構成要素間の依存関係の表現形式の一例として、ＤＳＭ（Dependency Structure Matrix）を利用する。ＤＳＭは、ソフトウェア構成要素間の依存関係をその発生頻度（依存強度）で表し、表形式で表示するものである。これにより、複数のソフトウェア構成要素間の依存関係を簡潔に表現することができる。
【００１３】
図１は、実施形態１に係る影響度分析装置１のハードウェア構成を示すブロック図である。図１に示すように、影響度分析装置１は、入力部１００と、出力部２００と、外部インターフェース（Ｉ／Ｆ）３００と、制御部４００と、ＲＯＭ（Read Only Memory）５００と、ＲＡＭ（Random Access Memory）６００と、記憶部７００と、から構成される。
【００１４】
入力部１００は、ユーザが影響度分析装置１を操作するためのマウスやキーボード等の入力装置２と接続されており、ユーザによって入力される各種の情報を受け付ける。
【００１５】
出力部２００は、液晶ディスプレイ等の表示装置３に接続されている。出力部２００は、制御部４００により出力された各種の情報を出力する。
【００１６】
外部Ｉ／Ｆ３００は、ＣＤ（Compact Disc）等のリムーバブルディスクに対して読み書きするためのドライブ装置（図示せず）等に接続されている。また、外部のネットワーク（例えば、インターネット、ＬＡＮ（Local Area Network）等）に接続するための装置や、制御部４００が生成した情報を印字するためのプリンタに接続されていてもよい。
【００１７】
制御部４００は、例えば、ＣＰＵ（Central Processing Unit）から構成されており、影響度分析装置１の全体の制御を行う。例えば、制御部４００は、影響度を分析する対象となるソフトウェアを構成するソフトウェア構成要素間の依存関係に基づいて、そのソフトウェアの変更に伴う影響範囲を抽出する影響度分析処理を実行する。影響度分析処理の詳細については後述する。
【００１８】
ＲＯＭ５００は、制御部４００が影響度分析装置１の全体を制御するためのプログラム等を格納する不揮発性メモリである。例えば、ＲＯＭ５００は、影響度分析処理を実行するためのプログラムを格納している。
【００１９】
ＲＡＭ６００は、制御部４００が生成した情報や、当該情報を生成するために必要なデータを一時的に格納するための揮発性メモリである。
【００２０】
記憶部７００は、ハードディスクドライブ等の記憶装置から構成される。例えば、記憶部７００は、重みテーブル７１０と、依存関係テーブル７２０と、重み付依存関係テーブル７３０と、閾値情報７４０と、を記憶する。
【００２１】
重みテーブル７１０は、ソフトウェア構成要素毎に、該ソフトウェア構成要素の特性の程度を表す重みを記憶する。この重みは、例えば、ソフトウェア構成要素の複雑度や行数に基づいて、算出される。重みテーブル７１０に記憶されるソフトウェア構成要素と、その重みとは、例えば、分析対象ソフトウェアに応じて予めユーザにより設定されている。図２に、重みテーブル７１０の一例を示す。図２に示すように、重みテーブル７１０は、複数のソフトウェア構成要素毎に、重みが対応付けて記憶されている。例えば、ソフトウェア構成要素である「file1.cpp/func()」に対応する重みは「4.4」、ソフトウェア構成要素である「file2.cpp/func()」に対応する重みは「3.7」である。
【００２２】
依存関係テーブル７２０は、複数のソフトウェア構成要素間の依存関係を表す依存関係情報を格納する。この依存関係情報は、制御部４００によって、ソフトウェア（ソースコード）から抽出され、依存関係テーブル７２０に格納される。
【００２３】
重み付依存関係テーブル７３０は、重みテーブル７１０に記憶された重みにより重み付けされた複数のソフトウェア構成要素間の依存関係を表す重み付依存関係情報を格納する。この重み付依存関係情報は、制御部４００によって、依存関係テーブル７２０に格納された依存関係情報に重み付けがされることにより取得され、重み付依存関係テーブル７３０に格納される。
【００２４】
閾値情報７４０は、重み付依存関係テーブル７３０に格納された重み付依存強度に基づいて、ソフトウェアの変更に伴う影響範囲を抽出するための閾値を表す情報である。本実施形態において、閾値は、予めユーザにより設定され、閾値情報７４０として記憶部７００に記憶されている。
【００２５】
次に、影響度分析装置１の制御部４００の機能的構成について説明する。図３に示すように、制御部４００は、依存関係取得部４１０、重み付依存強度算出部４２０、重み付ＤＳＭ生成部４３０、影響範囲抽出部４４０として機能する。
【００２６】
依存関係取得部４１０は、ソフトウェア（ソースコード）から、依存関係情報を取得する。
【００２７】
ここで、「依存関係」とは、あるソフトウェア構成要素が、他のソフトウェア構成要素を含む、あるいは他のソフトウェア構成要素を引用するといったように、あるソフトウェア構成要素が他のソフトウェア構成要素に依存する関係を表す。以下の説明において、前者のソフトウェア構成要素を「依存元ソフトウェア構成要素」、後者のソフトウェア構成要素を「依存先ソフトウェア構成要素」と呼ぶ。
【００２８】
また、「依存関係情報」とは、複数のソフトウェア構成要素間の依存関係を表す情報である。図４に、依存関係情報が格納された依存関係テーブル７２０の一例を示す。図４に示すように、依存関係情報は、依存元ソフトウェア構成要素と、依存先ソフトウェア構成要素と、依存種類と、依存強度とを対応付けて含む。
【００２９】
ここで、「依存種類」とは、依存元ソフトウェア構成要素と依存先ソフトウェア構成要素間の依存関係の種類を表す。例えば、依存元ソフトウェア構成要素が「file1.cpp/func()」、依存先ソフトウェア構成要素が「file2.cpp/exp1(int)」である場合、その依存種類は「関数の呼び出し」である。
【００３０】
また、「依存強度」とは、依存元ソフトウェア構成要素が依存先ソフトウェア構成要素に依存する強度を表す。なお、本実施形態において、依存元ソフトウェア構成要素が、依存先ソフトウェア構成要素に依存する頻度（依存頻度）がカウントされ、その依存頻度が依存強度として依存関係情報に含まれている。例えば、ソフトウェアにおいて、「file1.cpp/func()」が「file2.cpp/exp1(int)」という関数を呼び出す回数が４回である場合、図４に示す依存関係テーブル７２０において、依存元ソフトウェア構成要素が「file1.cpp/func()」、依存先ソフトウェア構成要素が「file2.cpp/exp1(int)」に対応する依存強度として「4」が格納される。
【００３１】
ここで、図４に示す依存関係テーブル７２０から、従来の手法により生成されたＤＳＭを図５に示す。図５に示すＤＳＭは、関数や変数といったソフトウェア構成要素を最小単位で表現したＤＳＭである。このＤＳＭでは、縦に依存元ソフトウェア構成要素の列、横に依存先ソフトウェア構成要素の行が並び、その交点のセルには依存強度の値が格納されている。例えば、３列目の依存元ソフトウェア構成要素である「file1.cpp/func()」、７行目の依存先ソフトウェア構成要素である「file2.cpp/exp1(int)」の交点のセルには、依存強度として「4」が格納される。
【００３２】
重み付依存強度算出部４２０は、依存関係取得部４１０により取得された依存関係情報に含まれる複数のソフトウェア構成要素間の依存強度に対して、重みテーブル７２０に記憶された重みにより重み付けをすることにより、複数のソフトウェア構成要素間の重み付依存強度を算出する。詳細には、重み付依存強度算出部４２０は、依存関係取得部４１０により取得された依存関係情報において、依存元ソフトウェア構成要素及び依存先ソフトウェア構成要素に対応する重みを、重みテーブル７１０からそれぞれ取得する。そして、重み付依存強度算出部４２０は、取得したそれぞれの重みと、その依存関係情報における依存強度とに基づいて、その依存関係情報における重み付依存強度を算出する。具体的には、例えば、取得したそれぞれの重みと、その依存関係情報における依存強度とを足し合わせることにより、その依存関係情報における重み付依存強度を算出する。そして、重み付依存強度算出部４２０は、その依存関係情報における依存元ソフトウェア構成要素及び依存先ソフトウェア構成要素と、算出された重み付依存強度とを対応付けた重み付依存関係情報を取得し、記憶部７００の重み付依存関係テーブル７３０に格納する。
【００３３】
図６に、重み付依存関係テーブル７３０の一例を示す。図６に示す重み付依存関係テーブル７３０に格納された重み付依存関係情報は、図２に示す重みテーブル７１０に記憶された重みと、図４に示す依存関係テーブル７２０に格納された依存関係情報に基づいて取得されたものであり、依存元ソフトウェア構成要素と、依存先ソフトウェア構成要素と、依存種類と、重み付依存強度とを対応付けて記憶する。
【００３４】
重み付ＤＳＭ生成部４３０は、重み付依存強度算出部４２０により取得された重み付依存関係情報に基づいて、依存元ソフトウェア構成要素の列と依存先ソフトウェア構成要素の行の交点のセルに、対応する重み付依存強度を格納することにより、重み付ＤＳＭを生成する。
【００３５】
図７に、重み付ＤＳＭ生成部４３０により生成された重み付ＤＳＭの一例を示す。図７に示す重み付ＤＳＭは、図６に示す重み付依存関係情報に基づいて生成されたものである。例えば、依存元ソフトウェア構成要素が「file1.cpp/func()」である行と、依存先ソフトウェア構成要素が「file2.cpp/exp1(int)」である行との交点のセルに、重み付依存強度として「12.1」が格納される。
【００３６】
影響範囲抽出部４４０は、重み付ＤＳＭ生成部４３０により生成された重み付ＤＳＭにおいて、ユーザにより指定された依存先ソフトウェア構成要素の影響範囲を、閾値情報７４０が表す閾値に基づいて抽出し、影響範囲情報として出力する。具体的には、影響範囲抽出部４４０は、ユーザにより指定された依存先ソフトウェア構成要素と、その指定された依存先ソフトウェア構成要素と依存関係にある依存元ソフトウェア構成要素との間の重み付依存強度と、閾値情報７４０が表す閾値とを比較し、指定された依存先ソフトウェア構成要素との重み付依存強度が閾値以上である依存元ソフトウェア構成要素を抽出する。そして、影響範囲抽出部４４０は、抽出した全ての依存元ソフトウェア構成要素を含む影響範囲情報を出力する。
【００３７】
次に、影響度分析装置１が実行する影響度分析処理の流れについて説明する。図８は、影響度分析装置１が実行する影響度分析処理の流れの一例を示すフローチャートである。図８に示す影響度分析処理は、例えば、入力装置２を介して、ユーザにより影響度分析処理の実行を開始する旨を表す操作が入力されたことを契機として開始される。
【００３８】
まず、依存関係取得部４１０は、ソフトウェア（ソースコード）から依存関係情報を取得する（ステップＳ１１）。なお、本処理において影響度を分析する対象となるソフトウェアは、予め記憶部７００に記憶されていてもよく、また外部Ｉ／Ｆ３００を介して接続された外部記憶装置に予め記憶されていてもよい。そして、依存関係取得部４１０は、このように予め記憶されているソフトウェアを読み込んで、依存関係情報を取得する。具体的には、例えば、依存関係取得部４１０は、影響度を分析する対象となるソフトウェアのソースコードから、予めソフトウェア構成要素として予め設定された関数や変数等を抽出する。そして、依存関係取得部４１０は、抽出されたソフトウェア構成要素間の依存頻度をカウントし、その依存頻度をソフトウェア構成要素と対応づけることにより、依存関係情報を取得する。そして、依存関係取得部４１０は、取得した依存関係情報を、依存関係テーブル７２０に格納する。
【００３９】
次に、重み付依存強度算出部４２０は、ステップＳ１１において取得された依存関係情報について、依存関係を有する依存元ソフトウェア構成要素と依存先ソフトウェア構成要素の組を１つ選択する（ステップＳ１２）。
【００４０】
次に、重み付依存強度算出部４２０は、ステップＳ１２において選択された組において、依存元ソフトウェア構成要素と、依存先ソフトウェア構成要素とに対応する重みを、それぞれ重みテーブル７１０から取得する（ステップＳ１３）。
【００４１】
次に、重み付依存強度算出部４２０は、ステップＳ１２において選択された組に対応する依存強度と、ステップＳ１３において取得された重みとに基づいて、ステップＳ１２において選択された組に対応する重み付依存強度を算出する（ステップＳ１４）。
【００４２】
例えば、ステップＳ１１において、図４に示す依存関係情報が取得され、ステップＳ１２において、依存元ソフトウェア構成要素が「file1.cpp/func()」、依存先ソフトウェア構成要素が「file2.cpp/exp1(int)」である組が選択されたとする。この場合、重み付依存強度算出部４２０は、重みテーブル７１０を参照して、依存元ソフトウェア構成要素「file1.cpp/func()」に対応する重みとして「4.4」、依存先ソフトウェア構成要素「file2.cpp/exp1(int)」に対応する重みとして「3.7」を取得する。そして、重み付依存強度算出部は、依存関係情報において、依存元ソフトウェア構成要素が「file1.cpp/func()」、依存先ソフトウェア構成要素が「file2.cpp/exp1(int)」である組に対応する依存強度「4」と、取得した重み「4.4」及び「3.7」とを足し合わせることにより、選択された組に対応する重み付依存強度「12.1」を算出する。
【００４３】
次に、重み付依存強度算出部４２０は、ステップＳ１４で算出された重み付依存強度と、ステップＳ１２で選択された依存元のソフトウェア構成要素、依存先のソフトウェア構成要素、依存種類とを対応付けた重み付依存関係情報を、重み付依存関係テーブル７３０に格納する（ステップＳ１５）。
【００４４】
次に、重み付依存強度算出部４２０は、依存関係テーブル７２０に格納された全ての依存元ソフトウェア構成要素と依存先ソフトウェア構成要素の組について重み付依存強度を算出したか否かを判別する（ステップＳ１６）。全ての組について、重み付依存強度を算出していないと判別した場合（ステップＳ１６；Ｎｏ）、ステップＳ１２に処理を戻す。すなわち、全ての組について重み付依存強度の算出が行われるまで、ステップＳ１２〜ステップＳ１６の処理が繰り返される。
【００４５】
全ての組について重み付依存強度が算出されたと判別した場合（ステップＳ１６；Ｙｅｓ）、重み付ＤＳＭ生成部４３０は、重み付依存関係テーブル７３０に格納された重み付依存関係情報に基づいて、重み付ＤＳＭを生成する（ステップＳ１７）。
【００４６】
次に、影響範囲抽出部４４０は、ステップＳ１７で生成された重み付ＤＳＭにおいて、ユーザから、入力装置２を介して、影響を分析する対象となる依存先ソフトウェア構成要素の指定を受け付ける（ステップＳ１８）。具体的には、影響範囲抽出部４４０は、出力部２００により、表示装置３にステップＳ１７で生成された重み付ＤＳＭを表示する。そして、ユーザは、表示装置３に表示された重み付ＤＳＭにおいて、影響を分析する対象となる依存先ソフトウェア構成要素を入力装置２により指定する。このようにして、影響範囲抽出部４４０は、ユーザから、影響を分析する対象となる依存先ソフトウェア構成要素の指定を受け付ける。
【００４７】
次に、影響範囲抽出部４４０は、ステップＳ１７で生成された重み付ＤＳＭにおいて、ステップＳ１８において指定された依存先ソフトウェア構成要素と依存関係がある依存元ソフトウェア構成要素の中から、重み付依存強度が閾値情報７４０が表す閾値以上である依存元ソフトウェア構成要素を抽出し、影響範囲情報を生成する（ステップＳ１９）。
【００４８】
例えば、ステップＳ１７において図７に示す重み付ＤＳＭが生成され、ステップＳ１８において依存先ソフトウェア構成要素「file2.h/exp1(int)」が指定されたとする。この場合指定された依存先ソフトウェア構成要素「file2.h/exp1(int)」は、依存元ソフトウェア構成要素「file1.cpp/func()」（重み付依存強度：15.7）と、依存元ソフトウェア構成要素「file2.cpp/exp1(int)」（重み付依存強度：3.4）と依存関係がある。従って、影響範囲抽出部４４０は、依存先ソフトウェア構成要素「file2.h/exp1(int)」との重み付依存強度が、所定の閾値の一例である「10」以上である依存元ソフトウェア構成要素「file1.cpp/func()」を抽出する。そして、影響範囲抽出部４４０は、抽出した依存元ソフトウェア構成要素「file1.cpp/func()」を含む影響範囲情報を生成する。
【００４９】
次に、影響範囲抽出部４４０は、ステップＳ１９において生成した影響範囲情報を、出力部２００を介して表示装置３に出力する（ステップＳ２０）。そして、本処理を終了させる。
【００５０】
以上説明したように、本実施形態に係る影響度分析装置１は、各ソフトウェア構成要素の特性を加味したソフトウェア構成要素間の依存強度に基づいて、ソフトウェアの変更に伴う影響範囲を検出する。そのため、より精度良くソフトウェアの変更に伴う影響を分析することができる。そして、属人性排除によるアーキテクチャ解析技術の高度化、及び解析作業の効率化を図ることができる。
【００５１】
（実施形態２）
続いて、実施形態２に係る影響度分析装置１について説明する。上記の実施形態１では、影響範囲抽出部４４０が影響範囲情報を生成する際に用いた閾値は、予めユーザにより設定されているものとして説明した。これに対し、実施形態２では、閾値が重み付ＤＳＭに基づいて、算出される例について説明する。以下、実施形態２について、上記の実施形態１と異なる構成について詳細に説明し、同様の構成については、同様の符号を用い、その詳細な説明を省略する。
【００５２】
図９に実施形態２に係る制御部４００ａの機能構成を表すブロック図を示す。制御部４００ａは、実施形態１において説明した各機能に加えて、さらに閾値算出部４５０として機能する。また、記憶部７００ａは、実施形態１における閾値情報７４０に代えて、閾値情報７４０ａを記憶する。
【００５３】
閾値算出部４５０は、複数のソフトウェア構成要素間の重み付依存強度の分布に基づいて、閾値を算出する。算出された閾値は、閾値情報７４０ａとして記憶部７００ａに記憶され、影響範囲抽出部４４０において、影響範囲を抽出する際に用いられる。
【００５４】
ここで、閾値算出部４５０による閾値の算出方法の一例を説明する。図１０は、図７に示す重み付ＤＳＭに格納された重み付依存強度の分布を表す図である。具体的には、図１０は、重み付依存強度の分布として、重み付依存強度の出現頻度及び出現頻度の積分値を表すグラフである。ここで、「出現頻度」とは、依存元ソフトウェア構成要素と依存先ソフトウェア構成要素の全組の数に対する、ある重み付依存強度の依存関係を有する依存元ソフトウェア構成要素と依存先ソフトウェア構成要素の組の数の割合を表す。また、「出現頻度の積分値」とは、下限値からある値の範囲にある重み付依存強度において、重み付依存強度の出現頻度を積分した値を表す。例えば、下限値０から１５の範囲にある重み付依存強度において、その範囲における重み付依存強度の出現頻度の積分値が所定の割合として例えば８０％を超えたとき、閾値算出部４５０は、その範囲における重み付依存強度の最大値「15」を閾値として算出する。
【００５５】
以上説明したように、実施形態２に係る影響度分析装置１において、影響範囲を抽出する際に用いる閾値は、複数のソフトウェア構成要素間の重み付依存強度の分布に基づいて算出されるため、属人性を排除した閾値の設定が可能である。また、さらにアーキテクチャ解析技術の高度化、及び解析作業の効率化を図ることができる。
【００５６】
なお、上記の実施形態２では、依存強度の出現頻度に基づいて、閾値を算出したが、閾値の算出方法はこれに限られない。
【００５７】
（実施形態３）
続いて、実施形態３に係る影響度分析装置１について説明する。上記の実施形態２では、閾値算出部４５０は、重み付ＤＳＭ全体における複数のソフトウェア構成要素間の重み付依存強度の分布に基づいて、閾値を算出している。これに対し、実施形態３では、閾値を算出する際に用いるデータの範囲を指定可能な例について説明する。以下、実施形態３について、上記の実施形態２と異なる構成について詳細に説明し、同様の構成については、同様の符号を用い、その詳細な説明を省略する。
【００５８】
図１１に実施形態３に係る制御部４００ｂの機能構成を表すブロック図を示す。制御部４００ｂは、実施形態２において説明した各機能に加えて、算出範囲指定部４６０として機能する。また、制御部４００ｂは、閾値算出部４５０に代えて、閾値算出部４５０ｂとして機能する。
【００５９】
算出範囲指定部４６０は、重み付ＤＳＭ全体における複数のソフトウェア構成要素間の重み付依存強度の中から、閾値を算出する範囲（算出範囲）を指定する。算出範囲指定部４６０は、具体的には、ユーザから入力装置２を介して閾値を算出する範囲を指定するための算出範囲情報を取得し、取得した算出範囲情報に基づいて算出範囲を指定する。図１２に、算出範囲情報の一例を示す。図１２に示す算出範囲情報は、算出範囲を指定するためのソフトウェア構成要素の一覧を含む。算出範囲指定部４６０は、取得した算出範囲情報に含まれるソフトウェア構成要素を、依存元ソフトウェア構成要素及び依存先ソフトウェア構成要素とする場合における重み付依存強度を、算出範囲として指定する。
【００６０】
例えば、算出範囲指定部４６０は、図１２に示す算出範囲情報を取得した場合、図７に示す重み付ＤＳＭにおいて鎖線で示す範囲Ａを、算出範囲として指定する。
【００６１】
閾値算出部４５０ｂは、算出範囲指定部４６０により指定された算出範囲における複数のソフトウェア構成要素間の重み付依存強度の分布に基づいて、閾値を算出する。具体的には、閾値算出部４５０ｂは、実施形態２における閾値算出部４５０と同様の方法により、閾値を算出することができる。
【００６２】
以上説明したように、実施形態３に係る影響度分析装置１において、閾値を算出する範囲を指定可能であるため、閾値の確からしさを向上させることができる。
【００６３】
（実施形態４）
続いて、実施形態４に係る影響度分析装置１について説明する。上記の実施形態１乃至３では、重みテーブル７１０はユーザにより予め設定されている。これに対し、実施形態４では、重みテーブルに格納されている各依存強度を、既存のソフトウェア品質評価技術を用いて設定する例について説明する。以下、実施形態４について、上記の実施形態１乃至３と異なる構成について詳細に説明し、同様の構成については、同様の符号を用い、その詳細な説明を省略する。
【００６４】
図１３に実施形態４に係る制御部４００ｃの機能構成を表すブロック図を示す。制御部４００ｃは、さらに、静的解析部４７０、ソフトウェア点数算出部４８０、重み算出部４９０として機能する。また、記憶部７００ｃは、実施形態１乃至３に係る重みテーブル７１０に代えて、重みテーブル７１０ｃを記憶する。
【００６５】
静的解析部４７０は、静的解析ツールによりソースコードの品質を測定し、評価する。具体的には、例えば、「プログラムソースコードのための実用的な品質評価枠組み（情報処理学会論文誌  Vol.48 No.8 Aug. 2007  鷲崎  弘宜）」に開示された技術を適用することができる。
【００６６】
ソフトウェア点数算出部４８０は、静的解析部４７０の解析結果に基づいて、ソフトウェア構成要素の品質の点数を算出する。具体的には、ソフトウェア点数算出部４８０は、ソフトウェア構成要素の品質が高いほど、点数が高くなるように、点数を算出する。
【００６７】
重み算出部４９０は、ソフトウェア点数算出部４８０により算出された点数に基づいて、重みを算出する。具体的には、重み算出部４９０は、品質の点数が低いソフトウェア構成要素に大きな重みを与えることで、より強く確認すべき依存関係を抽出しやくする。例えば、重み算出部４９０は、「（１００−点数）／１０」を重みとして算出する。そして、算出した重みをソフトウェア構成要素と対応付けて、重みテーブル７１０ｃに格納する。
【００６８】
図１４に、重み算出部４９０により算出された重みを格納する重みテーブル７１０ｃの一例を示す。図１４に示す重みテーブルは、ソフトウェア構成要素毎に、ソフトウェア点数算出部４８０により算出された点数と、重み算出部４９０により算出された重みとを格納する。
【００６９】
重み付依存強度算出部４２０は、上記の実施形態１乃至３と同様の手法により、重みテーブ７１０ｃに記憶された重みと、依存関係情報とに基づいて、重み付依存強度を算出する。図１５に、図１４に示す重みテーブル７１０ｃと、図４に示す依存関係テーブルとから算出された重み付依存関係情報を格納する重み付依存関係テーブル７３０を示す。
【００７０】
また、重み付ＤＳＭ生成部４３０は、上記の実施形態１乃至３と同様の手法により、重み付き依存強度算出部４２０により取得された重み付依存関係情報に基づいて、重み付ＤＳＭを生成する。図１６に、図１５に示す重み付依存関係テーブルに基づいて生成された重み付ＤＳＭの一例を示す。
【００７１】
以上説明したように、実施形態４に係る影響度分析装置１において、属人性を排除した重みの設定が可能になる。また、さらにアーキテクチャ解析技術の高度化、及び解析作業の効率化を図ることができる。
【００７２】
（実施形態５）
続いて、実施形態５に係る影響度分析装置１について説明する。上記の実施形態１乃至４では、ソフトウェア構成要素に応じた重みを用いて依存強度の重み付けを行っている。これに対し、実施形態５では、ソフトウェア構成要素だけでなく、さらに依存種類に応じた重みも用いて依存強度の重み付けを行う例について説明する。以下、実施形態５について、上記の実施形態１乃至４と異なる構成について詳細に説明し、同様の構成については、同様の符号を用い、その詳細な説明を省略する。
【００７３】
図１７に実施形態５に係る制御部４００ｄの機能構成を表すブロック図を示す。記憶部７００ｄには、さらに依存種類別重みテーブル７５０が記憶されている。また、記憶部７００ｄは、実施形態１乃至４に係る重み付依存関係テーブル７３０の代わりに、重み付依存関係テーブル７３０ｄを記憶する。また、制御部４００ｄは、実施形態１乃至４に係る重み付依存強度算出部４２０の代わりに、重み付依存強度算出部４２０ｄとして機能する。
【００７４】
依存種類別重みテーブル７５０は、依存種類と、依存種類別重みとを対応付けて格納する。図１８に、依存種類別重みテーブルの一例を示す。
【００７５】
重み付依存強度算出部４２０ｄは、依存関係取得部４１０により取得された依存関係情報が表す複数のソフトウェア構成要素間の依存強度に対して、重みテーブル７１０に記憶された重みと、依存種類別重みテーブル７５０に記憶された依存種類別重みとにより重み付けをすることにより、複数のソフトウェア構成要素間の重み付依存強度を算出する。詳細には、重み付依存強度算出部４２０ｄは、依存関係取得部４１０により取得された依存関係情報において、依存元ソフトウェア構成要素及び依存先ソフトウェア構成要素に対応する重みを、重みテーブル７１０からそれぞれ取得する。そして、取得された依存関係情報において、依存元ソフトウェア構成要素と依存先ソフトウェア構成要素との間の依存種類に対応する依存種類別重みを、依存種類別重みテーブル７５０から取得する。そして、重み付依存強度算出部４２０ｄは、重み付依存強度を、例えば、（依存強度＋依存元ソフトウェア構成要素に対応する重み＋依存先ソフトウェア構成要素に対応する重み）×依存種類別重み、として算出する。図１９に、図２に示す重みテーブル７１０と、図４に示す依存関係テーブル７２０と、図１８に示す依存種類別重みテーブル７５０とを用いて取得された重み付依存関係情報を格納する重み付依存関係テーブル７３０ｄの一例を示す。
【００７６】
以上説明したように、実施形態５に係る影響度分析装置１において、ソフトウェア構成要素の特性だけでなく、ソフトウェア構成要素間の依存関係の種類に基づいて、依存強度に重み付け行うため、ソフトウェアの変更に伴う影響範囲をより精度よく抽出することができる。また、ソフトウェアの変更による影響度の高低を機械的に求めることができ、さらにアーキテクチャ解析技術の高度化、及び解析作業の効率化を図ることができる。
【００７７】
以上、本発明の実施形態について説明したが、本発明は実施形態によって限定されるものではない。本発明は、上記の実施形態１乃至５を適宜組み合わせたものも含み、また、それらと均等なものも含む。
【００７８】
例えば、上記の実施形態１乃至５において、影響範囲抽出部４４０は重み付ＤＳＭを表示し、ユーザは、表示された重み付ＤＳＭに基づいて、影響を分析する対象となる依存先ソフトウェア構成要素を指定するが、影響を分析する対象となる依存先ソフトウェア構成要素の指定方法は、これに限られない。例えば、影響範囲抽出部４４０は、図６に示すような重み付依存関係テーブル７３０を表示してもよい。これにより、ユーザは、表示された重み付依存関係テーブル７３０に基づいて、影響を分析する対象となる依存先ソフトウェア構成要素を指定することができる。しかし、重み付ＤＳＭは、図６に示すような重み付依存関係テーブル７３０よりも、依存関係の可視性が高く、ユーザにとって依存関係の把握が容易である。そのため、ユーザにとって、表示された重み付依存関係テーブル７３０よりも、表示された重み付ＤＳＭに基づいて、容易に影響を分析する対象となる依存先ソフトウェア構成要素を指定する方が容易である。従って、影響範囲抽出部４４０は、重み付ＤＳＭを表示し、表示された重み付ＤＳＭに基づくユーザからの依存先ソフトウェア構成要素の指定を受け付けることが好ましい。
【００７９】
また、上記の実施形態１乃至５において、複数のソフトウェア構成要素から構成されるソフトウェアにおける変更の影響を分析する影響度分析装置１について説明したが、影響度分析装置１の分析対象はソフトウェアに限られない。例えば、影響度分析装置は、複数のタスクから構成される開発プロセスを分析対象としてもよい。この場合においても上記の実施形態１乃至５と同様に、複数のタスク間の依存強度に対して、各タスクの重みを記憶する重みテーブルに記憶された重みにより重み付けをすることにより、複数のタスク間の重み付依存強度を算出することができる。そして、算出された複数のタスク間の重み付依存強度に基づいて、開発プロセスの変更に伴う影響範囲を抽出することができる。このように、影響度分析装置の分析対象は、複数の構成要素から構成され、構成要素間の依存関係や各構成要素の重みを規定できるものであれば、ソフトウェアに限られない。
【００８０】
また、本発明に係る影響度分析装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、ネットワークに接続されているコンピュータに、上記動作を実行するためのプログラムを、コンピュータシステムが読み取り可能な記録媒体（ＣＤ−ＲＯＭ、ＭＯ等）に格納して配布し、当該プログラムをコンピュータシステムにインストールすることにより、上述の処理を実行する影響度分析装置を構成してもよい。
【００８１】
また、コンピュータにプログラムを提供する方法は任意である。例えば、プログラムは、通信回線の掲示板（ＢＢＳ）にアップロードされ、通信回線を介してコンピュータに配信されてもよい。また、プログラムは、プログラムを表す信号により搬送波を変調した変調波により伝送され、この変調波を受信した装置が変調波を復調してプログラムを復元するようにしてもよい。そして、コンピュータは、このプログラムを起動して、ＯＳの制御のもと、他のアプリケーションと同様に実行する。これにより、コンピュータは、上述の処理を実行する影響度分析装置として機能する。
【符号の説明】
【００８２】
１      影響度分析装置
１００  入力部
２００  出力部
３００  外部Ｉ／Ｆ
４００，４００ａ〜４００ｄ  制御部
４１０  依存関係取得部
４２０，４２０ｄ  重み付依存強度算出部
４３０  重み付ＤＳＭ生成部
４４０  影響範囲抽出部
４５０，４５０ｂ  閾値算出部
４６０  算出範囲指定部
４７０  静的解析部
４８０  ソフトウェア点数算出部
４９０  重み算出部
５００  ＲＯＭ
６００  ＲＡＭ
７００，７００ａ，７００ｃ〜７００ｄ  記憶部
７１０，７１０ｃ  重みテーブル
７２０  依存関係テーブル
７３０，７３０ｄ  重み付依存関係テーブル
７４０，７４０ａ  閾値情報
７５０  依存種類別重みテーブル
２      入力装置
３      表示装置
【図１】
2013125466.tif 000003
【図２】
2013125466.tif 000004
【図３】
2013125466.tif 000005
【図４】
2013125466.tif 000006
【図５】
2013125466.tif 000007
【図６】
2013125466.tif 000008
【図７】
2013125466.tif 000009
【図８】
2013125466.tif 000010
【図９】
2013125466.tif 000011
【図１０】
2013125466.tif 000012
【図１１】
2013125466.tif 000013
【図１２】
2013125466.tif 000014
【図１３】
2013125466.tif 000015
【図１４】
2013125466.tif 000016
【図１５】
2013125466.tif 000017
【図１６】
2013125466.tif 000018
【図１７】
2013125466.tif 000019
【図１８】
2013125466.tif 000020
【図１９】
2013125466.tif 000021