(57)【要約】ソフトウェアの再利用における重要性を、客観性のある尺度に基づいて測定するシステムの提供。このシステムにおいて、ファイル間の関係抽出（Ｓ２１２）では、Ｊａｖａソースコード・ファイル２３０を解析し、クラス間の継承等を再利用関係として抽出する。また、ＳＭＭＴ（Ｓ２２２）で、Ｊａｖａソースコード・ファイル間２３０の類似度を算出する。ＳＭＭＴ（Ｓ２２２）で得られた類以度をもとにクラスタ分析（Ｓ２２４）を行ない、ファイルの集合をＭ個の部品群に分類する。クラスタ分析（Ｓ２２４）とファイル間の関係抽出（Ｓ２１２）の結果から、部品群間の関係を抽出する（Ｓ２１４）。部品群間の関係から、部品群の相対的重要性評価値による評価を行なう（Ｓ２１６）。最後に、部品群の相対的重要性評価を、ファイル（ソフトウェア部品）の評価に変換する（Ｓ２１８）。
2003069466.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア部品の再利用における重要性評価システムであって、
ソフトウェア部品間の関係を抽出する関係抽出手段と、
ソフトウェア部品間の類似度を求めて、類似しているソフトウェア部品をまとめて部品群とする類似度分析手段と、
前記関係抽出手段からのソフトウェア部品間の関係と、前記類似度分析手段からの部品群とから、部品群間の関係を求める部品群関係抽出手段と、
前記部品群関係抽出手段からの部品群間の関係から、各部品群に対する相対的重要性を評価する相対的重要性評価手段と、
部品群の評価した値を、部品群に属するソフトウェア部品に移す手段と
を備え、ソフトウェア部品の重要性を評価することを特徴とするソフトウェア部品の重要性評価システム。
【請求項２】
請求項１に記載のソフトウェア部品の重要性評価システムであって、
前記相対的重要性評価手段は、被利用数が多い部品群や被利用数が多い部品群から利用されている部品群が評価値が高くなるように評価する
ことを特徴とするソフトウェア部品の重要性評価システム。
【請求項３】
請求項２に記載のソフトウェア部品の重要性評価システムであって、
前記相対的重要性評価手段は、ある部品群の評価値を全ての部品群に、利用している部品群には高くなるような配分率ｄで配分することで、評価値を定める
ことを特徴とするソフトウェア部品の重要性評価システム。
【請求項４】
請求項３に記載のソフトウェア部品の重要性評価システムであって、
前記相対的重要性評価手段は、どの部品群も利用していない部品群の評価値を、すべての部品群に対して一律に配分する
ことを特徴とするソフトウェア部品の重要性評価システム。
【請求項５】
請求項３又は４に記載のソフトウェア部品の重要性評価システムであって、
前記相対的重要性評価手段は、前記配分率ｄを要素とする正方行列Ｄにおける固有値λ＝１の固有ベクトルを求めることで評価値を求める
ことを特徴とするソフトウェア部品の重要性評価システム。
【請求項６】
請求項１〜５のいずれかに記載のソフトウェア部品の重要性評価システムをコンピュータ・システムに構築させるコンピュータ・プログラムを記憶した記録媒体。
【請求項７】
請求項１〜５のいずれかに記載のソフトウェア部品の重要性評価システムをコンピュータ・システムに構築させるコンピュータ・プログラム。
【発明の詳細な説明】
技術分野
本発明は、コンピュータ・ソフトウェアの再利用における重要性の評価に関するものである。
背景技術
ソフトウェアの大規模化と複雑化に伴い、高品質なソフトウェアを一定期間内に効率良く開発することが重要になってきている。これを実現するために、様々なソフトウェア工学技術が提案されてきている。再利用は、それらの中でも最も有効なものの一つである。
再利用は、既存のソフトウェア部品を同一システム内や他のシステムで用いることであると定義されている（例えば、Ｃ．Ｂｒａｕｎ：Ｒｅｕｓｅ，ｉｎ  Ｊｏｈｎ  Ｊ．Ｍａｒｃｉｎｉａｋ，ｅｄｉｔｏｒ，Ｅｎｃｙｃｌｏｐｅｄｉａ  ｏｆ  Ｓｏｆｔｗａｒｅ  Ｅｎｇｉｎｅｅｒｉｎｇ，Ｖｏｌ．２，Ｊｏｈｎ  Ｗｉｌｅｙ  ＆  Ｓｏｎｓ，ｐｐ．１０５５−１０６９（１９９４）等参照）。一般に、ソフトウェアの再利用は、生産性と品質を改善し、結果としてコスト削減するといわれている。
個々のソフトウェア部品の再利用性を評価する方法はいろいろ提案されている。Ｅｔｚｋｏｒｎらは、レガシーソフトウェア中の部品（Ｃ＋＋のクラス）に対して、様々なメトリクス値を計算し、それらの値を正規化して足し合わせることで、再利用性とすることを提案した（Ｌ．Ｈ．Ｅｔｚｋｏｒｎ，Ｗ．Ｅ．Ｈｕｇｅｓ  Ｊｒ．，Ｃ．Ｇ．Ｄａｖｉｓ：”Ａｕｔｏｍａｔｅｄ  ｒｅｕｓａｂｉｌｉｔｙ  ｑｕａｌｉｔｙ  ａｎａｌｙｓｉｓ  ｏｆ  ００  Ｌｅｇａｃｙ  ｓｏｆｔｗａｒｅ”，Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｓｏｆｔｗａｒｅ  Ｔｅｃｈｎｏｌｏｇｙ，Ｖｏｌ．４３，Ｉｓｓｕｅ  ５，ｐｐ．２９５−３０８（２００１）参照）。また、山本らは、ソースコードが非開示なソフトウェア部品に対して、インタフェース部分の情報のみを用いて再利用性を評価する方法を提案している（山本，鷲崎，深澤：“再利用特性に基づくコンポーネントメトリクスの提案と検証”，ソフトウェア工学の基礎ワークショップ（ＦＯＳＥ２００１），（２００１）参照）。これらの方法は全て、部品そのものの持つ静的な特性を計算して再利用性を評価するものとなっている。また、提案された再利用性の評価値の妥当性については、複数の部品に対して得られた再利用性の値の順位と、実際のプログラマによる主観的な再利用性の評価の結果が似ているといった評価が行われている。
しかし、再利用性が高いということは、実際に多くのソフトウェア中に再利用されているという実績が定量的に示されることが必要である。主観的に再利用性が高いと判断されても、実際の再利用実績がなければ意味がないという立場である。現実には、従来手法では再利用性が低いと評価されても、多くのシステムで再利用されているという部品は多く存在すると考えられる。
発明の開示
本発明の目的は、ソフトウェアの再利用性を、客観性のある尺度に基づいて測定するシステムを提供することである。
上記の目的を達成するために、本発明は、ソフトウェア部品の再利用における重要性評価システムであって、ソフトウェア部品間の関係を抽出する関係抽出手段と、ソフトウェア部品間の類似度を求めて、類似しているソフトウェア部品をまとめて部品群とする類似度分析手段と、前記関係抽出手段からのソフトウェア部品間の関係と、前記類似度分析手段からの部品群とから、部品群間の関係を求める部品群関係抽出手段と、前記部品群関係抽出手段からの部品群間の関係から、各部品群に対する相対的重要性を評価する相対的重要性評価手段と、部品群の評価した値を、部品群に属するソフトウェア部品に移す手段とを備え、ソフトウェア部品の重要性を評価することを特徴とする。
前記相対的重要性評価手段は、被利用数が多い部品群や被利用数が多い部品群から利用されている部品群が評価値が高くなるように評価することで、相対的な評価値を得ることができる。このとき、前記相対的重要性評価手段は、ある部品群の評価値を全ての部品群に、利用している部品群には高くなるような配分率ｄで配分することで、評価値を定めることができる。
前記相対的重要性評価手段は、どの部品群も利用していない部品群の評価値を、すべての部品群に対して一律に配分するとよい。
前記相対的重要性評価手段は、前記配分率ｄを要素とする正方行列Ｄにおける固有値λ＝１の固有ベクトルを求めることで評価値を求めることができる。
上述のソフトウェア部品の重要性評価システムをコンピュータ・システムに構築させるコンピュータ・プログラムや、そのコンピュータ・プログラムを記憶した記録媒体も本発明である。
発明を実施するための最良の形態
以下、図面を参照して、本発明の実施形態を説明する。
本発明では、利用実績に基づいて、ソフトウェア部品の再利用における重要性を評価している。本発明における重要性評価についての基本的な考え方は、以下の通りである。
（１）ソフトウェアを構成する部品間には相互に利用関係がある。
（２）一般に、時間が経過し、多くのプロジェクト開発で再利用などが行われるに連れて、部品の利用関係は変化していく。
（３）十分な時間が経過した状態のもとで、被利用数が多い部品は重要である（再利用性が高い）。また、重要な部品から利用されている部品も重要である（再利用性が高い）。
分野は異なるが、よく知られているサーチェンジンｇｏｏｇｌｅでは、多くのページからリンクされているページは、やはり良質なページであるという再帰的な関係をもとに、あらゆるページの重要度を評価している。
＜ソフトウェア部品＞
まず、図１を用いて、重要性を評価する対象である「ソフトウェア部品」とその利用関係について説明する。
一般にソフトウェア部品（Ｓｏｆｔｗａｒｅ  Ｃｏｍｐｏｎｅｎｔ）は再利用できるように設計された部品とされ、特に部品の内容を利用者が知る必要のないブラックボックス再利用ができるものを指すこともある。ここではより一般的に、ソースコード・ファイルやバイナリ・ファイル、ドキュメントなどの種類を問わず、開発者が再利用を行なう単位をソフトウェア部品あるいは単に部品と呼ぶ。これらの部品間には、図１に示すように、互いに利用する、利用されるという利用関係が存在する。図１では、部品間の利用関係をグラフ１００で表している。図１において、部品１０２は部品１０４を利用しており、部品１０４は部品１０６，１０８を利用していることを示している。そして、部品１０６および部品１１０は、部品１１２を利用しており、部品１１２は部品１０８を利用している。
＜類似部品群＞
一般に、部品の集合には、コピーした部品や、コピーして一部変更した部品が多く存在する。そこで、類似した部品をまとめることにより、部品の集合をいくつかの部品群に分類する。以降、類似した部品を集めた部品群を単に部品群と呼ぶ。
図２を例に説明する。図２（ａ）は部品間の利用関係である。部品ｃ１と部品ｃ’１、部品ｃ２と部品ｃ’２はそれぞれ類似した部品である。部品ｃ３，ｃ４，ｃ５には類似性はない。図２（ａ）に示すように、部品ｃ２は部品ｃ１を利用し、部品ｃ’２，ｃ３は部品ｃ’１を利用している。また、部品ｃ１は部品ｃ４を、部品ｃ’１は部品ｃ５をそれぞれ利用している。
図２（ｂ）では、類似した部品をまとめて部品群としている。部品群に属する部品は、それぞれ、Ｃ１＝｛ｃ１，ｃ’１｝，Ｃ２＝｛ｃ２，ｃ’２｝，Ｃ３＝｛ｃ３｝，Ｃ４＝｛ｃ４｝，Ｃ５＝｛ｃ５｝である。
ある部品群Ｃｉに属する部品が、他の部品群Ｃｊに属する部品を利用している場合、その２つの部品群間には利用関係があるとする。
例えば、図２では、部品ｃ１と部品ｃ’１を利用する関係は、部品群Ｃ１を利用する関係としてまとめている。また、部品ｃ１と部品ｃ’１が利用している関係は、部品群Ｃ１が利用している関係としてまとめている。
上述した考えを用いる場合には、２つの部品がどの程度類似しているか（類似度（Ｓｉｍｉｌａｒｉｔｙ））を定量的に評価する必要がある。そのために類似度を評価するメトリクスを利用する。まず、類似度に基づいてクラスタ分析を行ないｎ個の部品の集合をｍ（０≦ｍ≦ｎ）個の部品群に分ける。類似度は０以上１以下の範囲に正規化され、値が高いほど部品は良く類似しているとし、類似度１を完全に部品が一致した場合（コピーした部品）とする。
部品群間の類似度は、部品間の類似度に基づいて決まるとする。基準となる類似度の閾値ｔ（０≦ｔ≦１）を与え、部品群間の類似度がｔより低く、かつ、部品群内の部品間の類似度はｔ以上になるように分類する。
＜相対的重要性＞
個々の部品の再利用性を評価する手法は多く提案されている。Ｅｔｚｋｏｒｎらは、Ｍｏｄｕｌａｒｉｔｙ，Ｉｎｔｅｒｆａｃｅ  Ｓｉｚｅ，Ｄｏｃｕｍｅｎｔａｔｉｏｎ，Ｃｏｍｐｌｅｘｉｔｙの４つの視点からオブジェクト指向ソフトウェアの再利用性を評価する手法を提案している（Ｌ．Ｈ．Ｅｔｚｋｏｒｎ，Ｗ．Ｅ．Ｈｕｇｅｓ  Ｊｒ．，Ｃ．Ｇ．Ｄａｖｉｓ：”Ａｕｔｏｍａｔｅｄ  ｒｅｕｓａｂｉｌｉｔｙ  ｑｕａｌｉｔｙ  ａｎａｌｙｓｉｓ  ｏｆ  ００  Ｌｅｇａｃｙ  ｓｏｆｔｗａｒｅ”，Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｓｏｆｔｗａｒｅ  Ｔｅｃｈｎｏｌｏｇｙ，Ｖｏｌ．４３，Ｉｓｓｕｅ  ５，ｐｐ．２９５−３０８（２００１）参照）。この手法は、ソースコードから計測される複数のメトリクスを正規化して足し合わせることで再利用性のメトリクスとし、Ｃ＋＋のソースコードに対して、実際にプログラマが評価した再利用性とメトリクス値を比較している。
また、山本らはソースコードが非開示な部品に対して、そのインターフェイスから再利用性を評価する手法を提案している。彼らは理解容易性、利用容易性、テスト容易性、可搬性の４つの視点から再利用性メトリクスを定義し、ＪａｖａＢｅａｎｓを対象として実際にプログラマがアプリケーションを実装した結果とメトリクス値を比較している（山本，鷲崎，深澤：“再利用特性に基づくコンポーネントメトリクスの提案と検証”，ソフトウェア工学の基礎ワークショップ（ＦＯＳＥ２００１），（２００１）参照）。
これらの手法は全て、部品の構造やインターフェイスなどの部品そのものの持つ静的な特性を計算して再利用性を評価するものとなっている。
これに対して本発明では、その部品がどの程度利用されているかという実績に基づいた評価を行う。この再利用における重要性は、多数の部品間の静的特性から決まる再利用性とは区別して、「相対的重要性（Ｒｅｌａｔｉｖｅ  Ｓｉｇｎｉｆｉｃａｎｃｅ）」と呼ぶ。
さて、ソフトウェア開発者が過去に開発されたソフトウェア部品を再利用して新しいソフトウェアを開発する場合を想定する。一般に、開発者は過去に開発されたソフトウェア部品の中で、自分が開発しようとしているソフトウェアに対して再利用性が高いと判断したものを再利用する。ここで、開発者が部品を再利用するということは、その部品に対して「再利用性が高い」という支持投票をしたとみなす。再利用によるソフトウェア開発が何度も繰り返されれば、再利用性の高い部品は何度も再利用され、支持投票数が増加していく。逆に再利用性の低い部品はあまり再利用されず、したがって支持投票数は低い値に留まる。このときソフトウェア部品は獲得した票数に応じた再利用性の評価値を持つと考えられるので、以下の式が成り立つ。
（部品の評価値）＝（部品への投票数）
このとき、単純に獲得票数を数えるだけでなく、どのような部品から再利用されたかによって票に重みづけをする。多くの部品から再利用されるような優秀な部品（優秀な部品の開発者に再利用されている部品）は、再利用における重要性が高いとみなして、同じ一票の支持投票でも、重要性の評価値の高い部品から投票された場合と、評価値の低い部品から投票された場合では、前者の票の方がより大きい重みを持つようにする。
また、ある部品が再利用している部品の数も考慮する。ある部品Ａが多数の部品を再利用している場合には、各再利用部品が、Ａの機能に占める割合が少なくなるので、重要性の評価は分散してしまうとみなす。つまり、ある部品が複数の部品に投票している時は、票の重みは各再利用部品にある配分率をもって配分され、以下の式が成り立つ。
（票の重み）＝（投票元の評価値）×（投票先に対する配分率）
このように、部品の集合において部品同士がお互いに重要性を評価し、投票しあうことで決まっていく評価を「相対的重要性（Ｒｅｌａｔｉｖｅ  Ｓｉｇｎｉｆｉｃａｎｃｅ）」と呼び、部品が獲得した票の重みの合計値を「相対的重要性評価値（Ｖａｌｕｅ  ｏｆ  Ｒｅｌａｔｉｖｅ  Ｓｉｇｎｉｆｉｃａｎｃｅ）」と呼ぶ。
実際に再利用を繰り返してソフトウェア開発を行う場合、新たに開発したソフトウェアが蓄積されていくため、部品の集合の要素数は増加し、再利用関係は変化していく。相対的重要性評価値は部品の集合における再利用関係から求められるため、部品の集合の要素数や再利用関係が変化すると、変化前の評価値と変化後の評価値では比較することができない。そこで、評価値そのものではなく、その評価値による部品の順位に着目する。部品の集合の要素数や再利用関係が変化したときも、その変化前後の部品の順位の変動を見ることで、部品の相対的重要性がどのように変化したのかを理解することができる。
図２で説明したように、実際の部品の集合には多数のコピーや類似品が存在しているため、提案手法では部品群を部品の単位とし、部品群の相対的重要性評価値による順位づけを行うことで評価を行う。この手法を「Ｒｅｌａｔｉｖｅ  Ｓｉｇｎｉｆｉｃａｎｃｅ  Ｒａｎｋｉｎｇ法（ＲＳＲ法）」と呼ぶ。
上述の評価値の配分を、図３で説明する。図３のＣ１，Ｃ２，Ｃ３は部品群を表している。利用関係は利用する部品群から利用される部品群へ矢印で表している。簡単のため、利用していない部品群への配分率は０としている。また、利用している部品には均等に配分する。部品群Ｃ１，Ｃ２，Ｃ３の評価値をｖ１，ｖ２，ｖ３とし、評価値の総和が１となるようにしておく。このとき、図３の利用関係から、各部品群の評価値はｖ１＝０．４，ｖ２＝０．２，ｖ３＝０．４となる。よって、部品群Ｃ１，Ｃ３は、Ｃ２よりも、相対的重要性が高いと評価される。
＜部品の分類＞
評価対象となる部品がｎ個あるとし、それぞれｃ１，ｃ２，…，ｃｎとする。部品間には方向性を持つ関係があり、部品ｃｉからｃｊへの関係をｒ（ｃｉ，ｃｊ）と表し、
ｒ（ｃｉ，ｃｊ）＝ｉｆ（ｃｉはｃｊを利用している）
ｔｈｅｎ  ｔｒｕｅ
ｅｌｓｅ  ｆａｌｓｅ
とする。
部品間の類似度をｓ（ｃｉ，ｃｊ）と表す。類似度は０≦ｓ（ｃｉ，ｃｊ）≦１に正規化されているとする。
評価対象となる部品全体の集合を、Ｃ＝｛ｃ１，ｃ２，・・・，ｃｎ｝と表す。部品間の類似度ｓに基づいて部品の集合間の類似度が決まるとし、部品の集合ＣｉとＣｊとの類似度をＳ（Ｃｉ，Ｃｊ）と表す。類似度は０≦Ｓ（Ｃｉ，Ｃｊ）≦１に正規化されているとする。
定義１  分類の基準となる類似度の閾値をｔ（０≦ｔ≦１）とするとき、部品の集合Ｃを次の条件を満たすように分割した部分集合Ｃ１，Ｃ２，・・・，Ｃｍを類似部品群と呼ぶ。
・Ｃｉに属するすべての部品について、類似度ｓはｔ以上とする。
∀ｃｋ，ｃ１∈Ｃｉ  ｜  ｓ（ｃｋ，ｃ１）≧ｔ      （１．１）
・異なる集合間の類似度Ｓはｔより低い。すなわち、すべてのｉ，ｊ（１≦ｉ，ｊ≦ｍ）について次式が成り立つ。
Ｓ（Ｃｉ，Ｃｊ）＜ｔ  （ｉ≠ｊ）    （１．２）
Ｃをｍ個の類似部品群に分割し、それぞれＣ１，Ｃ２，・・・，Ｃｍとする。以降、類似部品群を単に部品群と呼ぶ。
定義２  ｃｉ∈Ｃｉ，ｃｊ∈Ｃｊとするとき、あるｃｉ，ｃｊについてｃｉからｃｊへの利用関係があれば、ＣｉからＣｊへの利用関係があるとみなす。すなわち、
Ｒ（Ｃｉ，Ｃｊ）＝ｉｆ（∃ｃｉ，ｃｊ）｜ｒ（ｃｉ，ｃｊ）
ｔｈｅｎ  ｔｒｕｅ
ｅｌｓｅ  ｆａｌｓｅ
である。
＜相対的重要性評価の定義＞
部品群は相対的重要性評価値を持つとし、部品群Ｃｉの相対的重要性評価値をｖｉと表す。また、ＣｉからＣｊへの利用関係の重みをｗｉｊと表す。
定義３  部品群Ｃｉの相対的重要性評価値は、部品群Ｃｉへの利用関係の重みｗｊｉの総和である。
2003069466.tif 000003
部品群Ｃｉから部品群Ｃｊへの重みの配分率（Ｄｉｓｔｒｉｂｕｔｉｏｎ  Ｒａｔｉｏ）をｄｉｊと表す。
定義４  部品群ＣｉからＣｊへの利用関係の重みｗｉｊは、Ｃｉの相対的重要性評価値を配分率ｄｉｊで配分した値である。
ｗｉｊ＝ｖｉｄｉｊ                          （４）
定義５  部品群Ｃｉの相対的重要性評価値は、すべての部品群Ｃｊ（１≦ｊ≦ｍ）に配分される。
2003069466.tif 000004
定義６  利用している部品群への配分率は、利用していない部品群への配分率より高い。すなわち、
Ｒ（Ｃｉ，Ｃｊ）＝ｔｒｕｅ，Ｒ（Ｃｉ，Ｃｋ）＝ｆａｌｓｅのとき、
ｄｉｊ＞ｄｉｋ                    （６）
である。
＜補正＞
これまでで定義した相対的重要性評価値を、実際のソフトウェア部品にそのまま適用するといくつかの問題が生じるため、若干の補正が必要となる。以下ではその問題点と対策を説明する。
（利用をしていない部品に対する評価）
一般に、ソフトウェア開発においては、他の部品を一つも利用せずに開発した部品も存在する。
ある部品群Ｃｉが他のどの部品も利用していない場合、Ｃｉはどの部品群に対しても投票を行っていないことになる。したがってどの部品群にも評価値を配分できないと考えてｄｉ０，ｄｉ１，ｄｉ２，…，ｄｉｍをすべて０とすると、定義５を満たさないことになる。そこで、どの部品にも投票しない場合は「重要性が非常に低い」という評価をすべての部品群に対して投票したと解釈する。
補正１  部品群Ｃｉがどの部品群も再利用していない場合、すべてのｊについて
2003069466.tif 000005
とする。
（評価が全体に循環しない場合）
この場合を、図４を用いて説明する。図４で、四角は部品群１６２，１６４，１６６，１７２を、矢印は利用関係を表している。図４（ａ）では、楕円１６０中の部品群に入る矢印は存在するが、楕円１６０から出ていく矢印は存在しない。従って、重要性評価の投票はこの楕円内に蓄積され、全体へ票が循環しないことになる。そこで、部品群を利用していない場合には、図４（ｂ）で薄い線の矢印ｄ’で示すように、非常に低い重みの票を投票すると考える。
補正２  部品群のもつ評価値のうちｐ（０＜ｐ＜１）は利用した部品群にのみ配分し、（１−ｐ）はすべての部品群に配分する。もとの配分率をｄｉｊとし、修正後の配分率をｄ’ｉｊとし、以下のように配分率を修正する。
2003069466.tif 000006
＜評価値の計算方法＞
ここでは、相対的重要性評価値を求めることが、配分率の行列の固有ベクトルを求めることに帰着されることを示す。
定義３，４より
2003069466.tif 000007
これをｖｉ（ｉ＝１，２，…，ｍ）のすべてについて解けば、すべての部品群の評価値を求めることができる。
すなわち、
2003069466.tif 000008
のｍ個の連立方程式を解けば良い。
これを行列の記法で表す。
ｍ個の部品群の評価値を表すｍ次元列ベクトルをＶとする。
Ｖ＝（ｖ１，ｖ２，・・・，ｖｎ）ｔ    右肩のｔは転置を表す。
また、ＣｉからＣｊへの配分率を表すｍ×ｍ行列をＤとする。
2003069466.tif 000009
このとき連立方程式（１０）は
Ｖ＝ＤｔＶ        （１１）
と表される。
式（１１）を満たすようなベクトルＶは行列Ｄｔの固有値λ＝１の固有ベクトルである。
よって配分率の行列の固有ベクトルを求めることで、相対的重要性評価値を決定することができる。
＜重要性評価システム＞
上述した重要性評価モデルに基づいて、本発明のシステムを、Ｊａｖａソースコードを対象に相対的重要性評価システムで説明する。上述の手法（ＲＳＲ法）をＪａｖａ（Ｔ）に適用する際の、モデルとＪａｖａ（Ｔ）の概念との対応を表１に示す。
2003069466.tif 000010
Ｊａｖａ（Ｔ）はオブジェクト指向言語であり、クラス単位での再利用が行いやすい。また、原則として１つのソースコード・ファイルには１つのクラスを記述する。そこで、Ｊａｖａソースコード・ファイルを部品の単位とし、ＲＳＲ法を適用する。クラスの継承、インターフェースおよび抽象クラスの実装、メソッドの呼びだしを利用関係とみなす。また、部品間の類似度を評価するメトリクスとして、「クローン検出ツールを用いたソフトウェアシステムの類似度調査」（電子情報通信学会技術研究報告ｖｏｌ．１０１  Ｎｏ．２４０  ２００１，７．３０）および特願２００２−０１５１３５号で提案されている類似度を用いる。この類似度は、２つのソースコード・ファイル間で一致する行の割合で類似度を計測する手法である。類似度をソースコード・ファイルから計測するシステム「ＳＭＭＴ（Ｓｉｍｉｌａｒｉｔｙ  Ｍｅｔｒｉｃｓ  Ｍｅｓｕｒｉｎｇ  Ｔｏｏｌ）」も開発されており（特願２００２−０１５１３５号参照）、本システムではＳＭＭＴを用いて類似度を算出する。
（システムの構成）
相対的重要性評価システムの構成を図５に示す。このシステムでは、Ｎ個のＪａｖａソースコード・ファイル２３０を相対的重要性の評価対象とする。以下に、それぞれの部分を説明する。
・ファイル間の関係抽出（Ｓ２１２）：Ｊａｖａソースコード・ファイル２３０を解析し、クラス間の継承、インターフェイスと抽象クラスの実装、メソッドの呼びだしを再利用関係として抽出する。Ｊａｖａソースコードの構文解析には、ここではＡＮＴＬＲ（ＡＮＴＬＡＲ，ｈｔｔｐ：／／ｗｗｗ．ａｎｔｌｒ．ｏｒｇ／参照）を利用している。
・ＳＭＭＴ（Ｓ２２２）：Ｊａｖａソースコード・ファイル間２３０の類似度を算出する。
・クラスタ分析（Ｓ２２４）：ＳＭＭＴ（Ｓ２２２）で得られた類以度をもとにクラスタ分析を行ない、ファイルの集合をＭ個の部品群に分類する。クラスタ分析においては、分類の基準となる閾値ｔをパラメータとして与える（上述の定義１参照）。
・部品群間の関係抽出（Ｓ２１４）：クラスタ分析（Ｓ２２４）とファイル間の関係抽出（Ｓ２１２）の結果から、部品群間の関係を抽出する。
・相対的重要性計算（Ｓ２１６）：部品群間の関係から、ＲＳＲ法で部品群の相対的重要性評価値による評価を行なう。なお、ここでは行列の固有値計算には、Ｊａｖａ（Ｔ）で行列演算を行なうパッケージＪＡＭＡ（ＪＡＭＡ：Ａ  Ｊａｖａ  Ｍａｔｒｉｘ  Ｐａｃｋａｇｅ：ｈｔｔｐ：／／ｍａｔｈ．ｎｉｓｔ．ｇｏｖ．／ｊａｖａｎｕｍｅｒｉｃｓ／ｊａｍａ／参照）を利用している。
・部品群評価→ファイル（ソフトウェア部品）評価変換（Ｓ２１８）：部品群の相対的重要性評価を、ファイル（ソフトウェア部品）の評価に変換する。
実際に、Ｊａｖａソースコードに、上述の相対的重要性評価システムを適用した場合の適用例を以下に示す。評価対象としてＪＤＫ  １．３．０を選んだ。調整パラメータとして、定義１で述べたクラスタ分析における分類の閾値をｓ＝０．８０、補正２で述べた票の重みの比率をｐ＝０．８５とした。ＪＤＫへ適用して得られた結果の一部を図６に示す。図６の表は、ＪＤＫのクラスごとのファイルに対する評価値で、ソートした結果を示している。
ＪＤＫは、Ｊａｖａ（Ｔ）の基本パッケージであり、Ｊａｖａ（Ｔ）でアプリケーションを開発するときにはＪＤＫが必要となる。図６において、相対的重要性の上位１０クラスについて見てみると、Ｏｂｊｅｃｔ，Ｃｌａｓｓ，Ｔｈｒｏｗａｂｌｅなど、Ｊａｖａ（Ｔ）の言語仕様で利用しなければならないクラスが大半を占めている。Ｊａｖａ（Ｔ）言語仕様によれば、ｊａｖａ．ｌａｎｇ．Ｏｂｊｅｃｔクラスはすべてのクラスのスーパークラスである。したがって、すべてのクラスから再利用されていることになり、相対的重要性が１位となっている。また、ｊａｖａ．ｌａｎｇ．Ｃｌａｓｓクラスは実行中のクラスおよびインターフェイスを表すクラスで、このクラスを直接継承するようなクラスはないが、実行時のオブジェクト型の情報を取得するために頻繁に呼び出される。ｊａｖａ．ｌａｎｇ．Ｔｈｒｏｗａｂｌｅクラスはすべてのエラーと例外のスーパークラスであり、したがって、例外やエラーを扱うクラスは、すべてこのクラスを間接的に再利用していることになる。このように、実際に直接的、間接的に利用される回数の多いクラスが上位を占めている。
最下位は１２５６位で、該当するクラスは６２２あった。これらのクラスは、どのクラスにも再利用されていない。
このように、相対的重要性評価システムは、実際の再利用における重要性を反映している評価値を算出している。
産業上の利用の可能性
本発明のソフトウェア部品重要性評価システムを用いることにより、従来手法では再利用性が低いと評価されても、現実に多く再利用されているという部品を抽出することができ、実際のソフトウェア開発現場で利用する上で、本当に意味のある再利用性が高い部品を知ることが可能となった。
【図面の簡単な説明】
図１は、ソフトウェア部品の利用関係グラフを示す図である。
図２は、類似のソフトウェア部品を部品群としてまとめることを説明する図である。
図３は、ソフトウェア部品群の評価を説明する図である。
図４は、ソフトウェア部品群の評価の際の補正を説明する図である。
図５は、本発明実施形態である相対的重要性評価システムの構成を説明する図である。
図６は、相対的重要性評価システムによるソフトウェア部品の評価結果を示す図である。
【図１】
2003069466.tif 000011
【図２】
2003069466.tif 000012
【図３】
2003069466.tif 000013
【図４】
2003069466.tif 000014
【図５】
2003069466.tif 000015
【図６】
2003069466.tif 000016
【国際調査報告】
2003069466.tif 000017
2003069466.tif 000018
2003069466.tif 000019
2003069466.tif 000020