Presentation is loading. Please wait.

Presentation is loading. Please wait.

動的情報を利用したソフトウェア 部品重要度評価手法の提案と評価

Similar presentations


Presentation on theme: "動的情報を利用したソフトウェア 部品重要度評価手法の提案と評価"— Presentation transcript:

1 動的情報を利用したソフトウェア 部品重要度評価手法の提案と評価
藤井 将人*, 横森 励士*, 山本 哲男**, 井上 克郎*** *大阪大学大学院基礎工学研究科 **科学技術振興事業団 ***大阪大学大学院情報科学研究科

2 研究の背景 ソフトウェア開発効率を向上するための手法として,再利用が注目されている 生産性と品質を改善し,結果としてコスト削減にもつながる
既存のソフトウェア部品を同一システム内や他のシステム内で用いること ソフトウェア部品 ソフトウェア開発者が再利用を行う単位 部品例:ソースコード,ドキュメント,・・・ 生産性と品質を改善し,結果としてコスト削減にもつながる まずはじめに研究の背景について説明します。 近年のソフトウェアの大規模化・複雑化に伴い、高品質なソフトウェアを一定期間内に効率よく開発することが重要となってきています。 ソフトウェア開発効率を向上するための手法は多数提案されておりますが、その一手法として再利用が注目されています。 再利用とは既存のソフトウェア部品を同一システム内、他のシステム内で用いることをいい、再利用を用いることにより、生産性と品質が改善され、結果としてコストの削減にもつながると言われています。 この再利用を、実際のソフトウェア開発において行うためには、 どの部品が再利用に適していて、どの部品が適していないかを判断するために 再利用性を定量的に示すことが必要です。

3 研究の背景 開発者はソフトウェア部品を再利用する 再利用の問題点 開発者はソフトウェア部品を再利用する 再利用の問題点
既存の部品をコピーして再利用 ライブラリとして再利用 再利用の問題点 どのような部品を再利用するか? 開発者はソフトウェア部品を再利用する 既存の部品をコピーして再利用 ライブラリとして再利用 再利用の問題点 どのような部品を再利用するか? 部品の再利用性を定量的に示すことが必要 まずはじめに研究の背景について説明します。 近年のソフトウェアの大規模化・複雑化に伴い、高品質なソフトウェアを一定期間内に効率よく開発することが重要となってきています。 ソフトウェア開発効率を向上するための手法は多数提案されておりますが、その一手法として再利用が注目されています。 再利用とは既存のソフトウェア部品を同一システム内、他のシステム内で用いることをいい、再利用を用いることにより、生産性と品質が改善され、結果としてコストの削減にもつながると言われています。 この再利用を、実際のソフトウェア開発において行うためには、 どの部品が再利用に適していて、どの部品が適していないかを判断するために 再利用性を定量的に示すことが必要です。

4 ソフトウェア部品評価手法 既存のソフトウェア部品評価手法 個々の部品の静的な特性から評価 利用実績から評価
コードメトリクスを足し合わせて部品の再利用性を評価[1] インターフェース部分の情報から部品の再利用性を評価[2] 静的な特性からは再利用性が低いと評価されても,実際には頻繁に再利用されている部品も存在する 利用実績から評価 Component Rank法(CR法)[3] 部品間の利用関係を抽出して各部品の再利用性を評価 再利用性を定量的に評価する手法は多数提案されておりますが、 従来の再利用性評価手法は、個々の部品の静的な特性を評価するものでした。 例えば、えつこーんらは 複数のコードメトリクスを足し合わせて再利用性を評価する手法を提案しております。 また、やまもとらは部品のインターフェース部分の情報から再利用性を評価する手法を 提案しております。 しかしながら、静的な特性、たとえばソースコードの複雑さなどからは 再利用性が低いと評価されていても、 実際には頻繁に再利用されているような部品も存在すると考えられます。 [1] L. Etzkorn et al.: ``Automated reusability quality analysis of OO legacy software,'' Information and Software Technology, Vol. 43, Issue 5, pp (2001). [2]山本 他: ``再利用特性に基づくコンポーネントメトリクスの提案と検証," FOSE2001, (2001). [3]横森 他: "ソフトウェア部品間の利用関係を用いた再利用性評価手法の提案 ", ソフトウェア・シンポジウム論文集 , (2002).

5 動的な利用関係解析手法を用いてCR法を実現し、 従来の静的な利用関係解析手法との結果を比較する
研究目的 CR法での部品評価には,利用関係の解析が必要 提案されたCR法では、利用関係解析手法について言及されていない 従来の実装システムでは、静的に利用関係を抽出 静的利用関係解析手法 ソフトウェアを実行せず,ソースコード等から利用関係を抽出 ソフトウェアによっては,静的には決定しない要素をもつ オブジェクト指向言語のメソッド呼び出しや,フィールド参照 全てを利用関係があるとみなす 動的な利用関係解析手法を用いてCR法を実現し、 従来の静的な利用関係解析手法との結果を比較する

6 提案手法 動的利用関係解析とCR法を用い,ソフトウェア部品の評価を行う
利点 実際に実行された部品の利用関係のみ取得できる ソースコードが存在しない部品についても評価が行える 動的利用関係解析による部品評価ではどのような結果が得られるか考察を行う 静的利用関係解析との比較

7 部品間の利用関係 ソフトウェア部品間には利用関係が存在する 部品グラフ(Component Graph) 利用関係解析 利用関係例
ソースコード:メソッド呼び出し,継承 ドキュメント:リンク,参考文献 部品グラフ(Component Graph) 頂点:ソフトウェア部品 有向辺:利用関係 利用関係解析 部品グラフを構築 c4 c5 c1 まず、これまでソフトウェア部品という言葉を使ってきましたが、ソフトウェア開発者が再利用を行う単位をソフトウェア部品あるいは単に部品と呼びます。 部品例として、ソースコードファイルやドキュメントがあげられます。 またおのおのの部品間には、利用する、されるという利用関係が存在します。 右下の図を用いて説明します。 四角は部品をあらわし、 矢印は利用関係を表します。 この図では、 c2はc1を利用し、c1はc4を利用しています。 また、この図では、 C2’とC3がC1’を利用して、C1’はC5とC3を利用しています c2 c3 部品グラフ例

8 動的利用関係解析手法 動的利用関係解析 ソフトウェアを実行し,その実行履歴から利用関係を抽出 実行時に実際利用した部品のみ利用関係を抽出 :
C4 C5 C6 C2 C3 C1 C4 : C5 : C2 : C3 C2 C4 C6 : : C1 C3 C5

9 動的利用関係解析手法 動的利用関係解析 ソフトウェアを実行し,その実行履歴から利用関係を抽出 実行時よく利用される部品が重要となる
実行時に実際利用した部品のみ利用関係を抽出 実行時よく利用される部品が重要となる 実装が比較的容易 実行履歴を追跡することで,利用関係が取得可能

10 Component Rank法 利用実績を基に部品の評価値を求める 部品評価値計算の方針 部品評価値計算方法
被利用数が多いソフトウェア部品は重要 重要な部品から利用されている部品は重要 部品評価値計算方法 部品グラフの利用 繰り返し計算により各頂点の重みを求めることで,それに対応する部品の評価値を定める われわれの研究グループが提案する、利用実績に基づく再利用性評価手法(Component Rank法)では、先に説明しました利用関係に着目し、その関係を抽出してグラフを作成します。 そして、各関係に重み付けし評価を行います。そのときの評価の方法として、非利用数が多い部品は重要である、また、重要な部品から利用されている部品も重要であるという方針で計算を行います。

11 Component Rank法 部品評価値計算手順 各頂点に適当な重みを与える 各有向辺の重みを求める 各頂点の重みを再計算
頂点の重みの総和は1 各有向辺の重みを求める 頂点の重みを,その頂点から出ていく辺で分配する 辺ごとに与えられた配分率を用いて計算 各頂点の重みを再計算 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 頂点の重みが収束するまで,2.,3.を繰り返し計算する 収束した頂点の重みを,その頂点に対応する部品の評価値として出力

12 Component Rank法 部品評価値計算手順 各頂点に適当な重みを与える 各有向辺の重みを求める(図:重みの定義(a))
頂点の重みの総和は1 各有向辺の重みを求める(図:重みの定義(a)) 頂点の重みを,その頂点から出ていく辺で分配する 辺ごとに与えられた配分率を用いて計算 各頂点の重みを再計算 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 頂点の重みが収束するまで,2.,3.を繰り返し計算する 収束した頂点の重みを,その頂点に対応する部品の評価値として出力

13 重みの定義 e1i w(vi ) w(vi ) vi vj vi eij eki (a) 辺の重み計算 (b)頂点の重み計算
w’(eij ) w’(eki ) vi vj vi eij eki w’(eij ) = dij х w(vi ) w(vi ) = w’(e1j ) + w’(e2j ) + ・・・+ w’(ekj ) + ・・・ Fig 2 (a) 辺の重み計算 (b)頂点の重み計算

14 Component Rank法 部品評価値計算手順 各頂点に適当な重みを与える 各有向辺の重みを求める
頂点の重みの総和は1 各有向辺の重みを求める 頂点の重みを,その頂点から出ていく辺で分配する 辺ごとに与えられた配分率を用いて計算 各頂点の重みを再計算(図:重みの定義(b)) 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 頂点の重みが収束するまで,2.,3.を繰り返し計算する 収束した頂点の重みを,その頂点に対応する部品の評価値として出力

15 重みの定義 e1i w(vi ) w(vi ) vi vj vi eij eki (a) 辺の重み計算 (b)頂点の重み計算
w’(eij ) w’(eki ) vi vj vi eij eki w(vi ) = w’(e1j ) + w’(e2j ) + ・・・+ w’(ekj ) + ・・・ w’(eij ) = dij х w(vi ) Fig 2 (a) 辺の重み計算 (b)頂点の重み計算

16 Component Rank法 部品評価値計算手順 各頂点に適当な重みを与える 各有向辺の重みを求める 各頂点の重みを再計算
頂点の重みの総和は1 各有向辺の重みを求める 頂点の重みを,その頂点から出ていく辺で分配する 辺ごとに与えられた配分率を用いて計算 各頂点の重みを再計算 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 頂点の重みが収束するまで,2.,3.を繰り返し計算する 収束した頂点の重みを,その頂点に対応する部品の評価値として出力

17 Component Rank法 部品評価値計算手順 各頂点に適当な重みを与える 各有向辺の重みを求める 各頂点の重みを再計算
頂点の重みの総和は1 各有向辺の重みを求める 頂点の重みを,その頂点から出ていく辺で分配する 辺ごとに与えられた配分率を用いて計算 各頂点の重みを再計算 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 頂点の重みが収束するまで,2.,3.を繰り返し計算する 行列の固有ベクトルを求める計算に帰着される 収束した頂点の重みを,その頂点に対応する部品の評価値として出力

18 部品評価値計算例 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2
0.333 C2 C3 v1×50% v2×100% v3×100% C1 v1 C2 v2 C3 v3 C1 0.400 C2 0.200 C3 C1 C2 C3 0.167 0.333 C1 0.333 C2 0.167 C3 0.500 C1 C2 C3 0.167 0.500 C1 0.417 C2 0.167 C3 C1 0.500 C2 0.167 C3 0.334 C1 C2 C3 0.250 0.167 0.334 C1 C2 C3 0.167 0.250 0.417 C1 0.334 C2 0.250 C3 0.417 では、具体的に評価値が決まる様子を図をもちいて説明します。 (はじめの図) この図では、部品群C1はC2、C3を利用し、 C2はC3を、C3はC1をそれぞれ利用しています。 各部品群の評価値をv1、v2、v3とします。 (クリック1) 各部品は、自分の評価値を票の重みとして、 利用する部品に対して配分します。 C1はC2とC3を利用しているので、自分の評価値v1を C2とC3に半分ずつ配分します。 C2はC3だけを利用しているので、C3にすべての評価値を配分します。 同様にC3もC1のみを利用しているので、C1にすべての評価値を配分します。 (クリック2) 次に、評価値の合計が1になるように、 各部品の初期値を決めます。 部品数は3ですから、各部品に0.333を与えます。 ここから、評価値の投票を繰り返します。 (くりっく3) このように部品の重みが投票の重みになります。 各部品の評価値は、獲得した票の重みの合計とし、 (くりっく4) このようになります。 これを繰り返すと、 (くりっく連打) このように各評価値が 0.4、0.2、0.4 という状態に収束します。 この収束した値を部品群の相対的再利用性評価値とします。 この計算はグラフの隣接行列の固有ベクトルを求める計算に帰着されます。

19 Component Rankシステム 解析手順 利用関係解析とCR法に基づいた,ソフトウェア部品評価システム
対象ソフトウェア:Javaプログラム 部品 クラス(ソースコード) 部品間の利用関係 クラスの継承,インターフェースおよび抽象クラスの実装,メソッド呼び出し,フィールド参照 解析手順 1. 利用関係解析より,部品(クラス)間の利用関係を抽出する 2. 部品間の利用関係から,部品グラフを生成 3. CR法を用い,部品グラフから部品の評価値を計算 4. 評価値を基に,順位付けを行い出力する

20 提案手法の実装 提案手法をCRシステムに追加実装 JVMPIの利用 プロファイル機能より,実行履歴を取得 event control
Profiler (JVMPI) event control CA ・・ 08 ・・ 00 ・・ A B ・・・ Java Virtual Machine class files execution result prof files

21 CRシステムの構成 class files Component Graph static relation analyzer A ・・
CA ・・・ 08 ・・・ 00 ・・・ static relation analyzer - A B ・・ 1 Class Rank  A ・・   B ・・ ・・ ・・ dynamic relation analyzer java+profiler Component Rank ranker relation analyzer A B ・・・ CR system prof files

22 評価実験 実験対象プログラム 実験目的 実行方法 Javac 静的利用関係解析手法と比較 引数を与えない
全159クラス,利用JDKライブラリ:505クラス 実験目的 静的利用関係解析手法と比較 実行方法 引数を与えない javac:5クラス,利用JDKライブラリ137クラス 正常にコンパイルが完了するプログラムを引数に与える javac:46クラス,利用JDKライブラリ138クラス 構文エラーを出力し終了するプログラムを引数に与える javac:40クラス,利用JDKライブラリ138クラス

23 評価実験 Javac+JDKライブラリ 静的利用関係解析 動的利用関係解析(1~3の和集合) 順位 クラス名 評価値 1 16961704
java.lang.Object 2 java.lang.String 3 java.lang.System 4 java.lang.Class 5 java.lang.ClassLoader 6 java.lang.StringBuffer 7 java.lang.Throwable 8 java.security.AccessController 9 com.sun.tools.javac.v8.util.List 997645 10 java.io.IOException 965720 183 Java.lang.Byte 429795 順位 クラス名 評価値 1 java.lang.Object 2 java.lang.Class 3 java.lang.String 4 java.lang.Integer 5 java.lang.Character 6 com.sun.tools.javac.v8.util.List 7 java.io.InputStream 8 java.lang.System 9 com.sun.tools.javac.v8.tree.Tree 10 java.net.URL 169 com.sun.tools.javac.Main 70780 StringやStringBufferといった我々がJavaプログラムを作成する際にも頻繁に利用するようなクラスが上位に来ました。ライブラリ内でも頻繁に利用されており、例えばStringクラスのequalsメソッドがNULL判定に利用されているなど、実際のソースコード中でよく利用されているおり、この結果は妥当であると考えられます。 また、SystemやClassLoaderといったJavaプログラムを実行するのに不可欠なクラスも上位にランクしていることがわかりました。 Javac+JDKライブラリ

24 順位相関係数 spearmanの順位相関係数 Spearmanの順位相関係数 静的利用関係解析との比較
(1).実行方法1による動的利用関係解析 (2).実行方法2による動的利用関係解析 (3).実行方法3による動的利用関係解析 (4).実行方法1~3の和集合 Spearmanの順位相関係数 (1) (2) (3) (4) 順位相関係数(javacクラスのみ) 0.3070 0.6923 0.6309 0.8074 順位相関係数(全クラス) 0.5354 0.6289 0.6133 0.6409 動的に利用するJavacクラス数 5 46 40 47

25 考察 動的に利用される部品数が多い時 動的に利用される部品数が少ない場合
動的利用関係解析で上位に位置する部品(クラス)は,静的利用関係解析でも上位に位置する 上位10位までの相関係数の平均値:0.7424 静的利用関係解析による部品評価と同等な評価が行える 動的に利用される部品数が少ない場合 動的利用関係解析と静的利用関係解析との間の相関係数は低い 特定の機能を実現している部品の評価が行える

26 まとめと今後の課題 まとめ 今後の課題 動的情報を利用した利用したソフトウェア部品評価手法について提案
CRシステムによる動的利用関係解析と静的利用関係解析との比較・評価 利用する部品数の差が小さければ,動的な利用関係による部品評価は,静的な利用関係による部品評価と同等の結果が得られる 今後の課題 より多くの部品について評価 それぞれの解析手法の使い分け どのような場面で,静的?動的? 部品評価値の利用方法 ソフトウェア理解

27

28 評価実験 Javacのみ 静的利用関係解析 動的利用関係解析(1~3の和集合) 順位 クラス名 評価値 9 997645 11 957841
com.sun.tools.javac.v8.util.List 997645 11 com.sun.tools.javac.v8.util.Name 957841 30 com.sun.tools.javac.v8.comp.Env 563968 31 com.sun.tools.javac.v8.util.StaticName 544410 39 com.sun.tools.javac.v8.code.Symbol 495454 42 com.sun.tools.javac.v8.code.Type 492252 44 com.sun.tools.javac.v8.code.Scope 488402 46 com.sun.tools.javac.v8.util.ListBuffer 477878 53 com.sun.tools.javac.v8.util.Hashtable 447058 59 com.sun.tools.javac.v8.tree.Tree 429795 順位 クラス名 評価値 6 com.sun.tools.javac.v8.util.List 9 com.sun.tools.javac.v8.tree.Tree 14 com.sun.tools.javac.v8.util.Name 40 com.sun.tools.javac.v8.util.Convert 336325 43 com.sun.tools.javac.v8.code.Symbol 300807 52 com.sun.tools.javac.v8.util.Log 250902 53 com.sun.tools.javac.v8.util.ListBuffer 237411 54 com.sun.tools.javac.v8.code.Scope 227312 66 com.sun.tools.javac.v8.util.Hashtable 176201 68 com.sun.tools.javac.v8.util.StaticName 169437 StringやStringBufferといった我々がJavaプログラムを作成する際にも頻繁に利用するようなクラスが上位に来ました。ライブラリ内でも頻繁に利用されており、例えばStringクラスのequalsメソッドがNULL判定に利用されているなど、実際のソースコード中でよく利用されているおり、この結果は妥当であると考えられます。 また、SystemやClassLoaderといったJavaプログラムを実行するのに不可欠なクラスも上位にランクしていることがわかりました。 Javacのみ

29 Spearmanの順位相関係数 順位相関 計算式(同順位が存在するとき) 正の場合:二変数には正の相関関係がある
負の場合:二変数には負の相関関係がある 0の場合:二変数は無相関である 計算式(同順位が存在するとき)

30 提案手法 動的情報を利用したソフトウェア部品評価手法 計算手順 c1 c2 c3 c4 動的利用関係解析の利用
プログラムを実行して利用関係を抽出 計算手順 プログラム実行時,実行履歴を保存 実行履歴から利用関係を抽出 部品グラフを構築 利用関係 c2 c1 c3 callee caller c4 c1 c2 c3 c4 部品グラフ Entry C1 Entry C2 Entry C3 Exit C3 Entry C4 実行履歴

31 重みの定義 定義1:頂点の重みの総和 部品グラフG=(V,E) 頂点:v∈V 重み:w(v) (0≦w(v)≦1)
われわれの研究グループが提案する、利用実績に基づく再利用性評価手法(Component Rank法)では、先に説明しました利用関係に着目し、その関係を抽出してグラフを作成します。 そして、各関係に重み付けし評価を行います。そのときの評価の方法として、非利用数が多い部品は重要である、また、重要な部品から利用されている部品も重要であるという方針で計算を行います。

32 重みの定義 定義2:辺の重み 定義5:配分率 頂点vi から頂点vj への有向辺eij の重みを w(eij) とする
dij は配分率と呼ぶ 定義5:配分率 頂点vi を始点とする辺への配分率d’ij Nは頂点数 われわれの研究グループが提案する、利用実績に基づく再利用性評価手法(Component Rank法)では、先に説明しました利用関係に着目し、その関係を抽出してグラフを作成します。 そして、各関係に重み付けし評価を行います。そのときの評価の方法として、非利用数が多い部品は重要である、また、重要な部品から利用されている部品も重要であるという方針で計算を行います。

33 重みの定義 定義3:頂点の重み 頂点vi の重みは,有向辺eki の重みの総和とする IN(vi) は vi を終点とする有向辺の集合
われわれの研究グループが提案する、利用実績に基づく再利用性評価手法(Component Rank法)では、先に説明しました利用関係に着目し、その関係を抽出してグラフを作成します。 そして、各関係に重み付けし評価を行います。そのときの評価の方法として、非利用数が多い部品は重要である、また、重要な部品から利用されている部品も重要であるという方針で計算を行います。

34 重みの計算 頂点の重み計算 定義4 式(3)に式(2)を代入 ベクトルW 行列D n(=|V|)
われわれの研究グループが提案する、利用実績に基づく再利用性評価手法(Component Rank法)では、先に説明しました利用関係に着目し、その関係を抽出してグラフを作成します。 そして、各関係に重み付けし評価を行います。そのときの評価の方法として、非利用数が多い部品は重要である、また、重要な部品から利用されている部品も重要であるという方針で計算を行います。

35 部品評価値計算例 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2
v1 C2 v2 C3 v3 C1×50% C2×100% C3×100% C1 0.333 C2 C3 C1×50% C2×100% C3×100% C1 v1 C2 v2 C3 v3 C1 0.400 C2 0.200 C3 C1 C2 C3 0.167 0.333 C1 0.333 C2 0.167 C3 0.500 C1 C2 C3 0.167 0.500 C1 0.417 C2 0.167 C3 C1 0.500 C2 0.167 C3 0.334 C1 C2 C3 0.250 0.167 0.334 C1 C2 C3 0.167 0.250 0.417 C1 0.334 C2 0.250 C3 0.417 では、具体的に評価値が決まる様子を図をもちいて説明します。 (はじめの図) この図では、部品群C1はC2、C3を利用し、 C2はC3を、C3はC1をそれぞれ利用しています。 各部品群の評価値をv1、v2、v3とします。 (クリック1) 各部品は、自分の評価値を票の重みとして、 利用する部品に対して配分します。 C1はC2とC3を利用しているので、自分の評価値v1を C2とC3に半分ずつ配分します。 C2はC3だけを利用しているので、C3にすべての評価値を配分します。 同様にC3もC1のみを利用しているので、C1にすべての評価値を配分します。 (クリック2) 次に、評価値の合計が1になるように、 各部品の初期値を決めます。 部品数は3ですから、各部品に0.333を与えます。 ここから、評価値の投票を繰り返します。 (くりっく3) このように部品の重みが投票の重みになります。 各部品の評価値は、獲得した票の重みの合計とし、 (くりっく4) このようになります。 これを繰り返すと、 (くりっく連打) このように各評価値が 0.4、0.2、0.4 という状態に収束します。 この収束した値を部品群の相対的再利用性評価値とします。 この計算はグラフの隣接行列の固有ベクトルを求める計算に帰着されます。

36 相対的再利用性評価値 相対的再利用性評価値を求める計算は行列の固有ベクトルを求める計算に帰着される C1 C2 C3 C1 C2 C3 v1
50% 100% V = Dt・V C1 0.400 C2 0.200 C3 λ=1の固有ベクトル この評価値を求める計算は、行列の固有値をもとめる計算に帰着されます。 先ほどの図において、 各部品群の評価値をこのようにベクトルVとします。 また、この重みつきの投票関係を行列Dで表します。 (さしながら、) たとえばC1からC2へ投票する重みを 1行2列の成分としています。 定常状態に収束すれば V=DtVという関係を満たします。 tは転置を表します。 この式から、評価値ベクトルVはDtにおける固有値らむだ=1の固有ベクトルです。 (クリック) 先ほどの収束状態においても、 このように式を満たしていることがわかります。

37 評価が循環しない場合 部品全体における有向辺の重みの偏りを分析することで相対的に再利用性を評価している
辺が全体に循環しなければ正しく評価できない 利用してない部品に対しては非常に低い重みの有向辺を引いたとみなす 本提案手法では、部品全体における票の重みの偏りを 分析することで 相対的再利用性を評価しております。 (クリック) したがって、票が全体に循環しなければ正しく評価できません。 図では、この部分で票がとどまってしまうため、 評価値が全体に循環しません。 そこで、利用していない部品には非常に低い重みの投票をしたとみなします。 図の破線の矢印は、非常に低い重みの投票を表します。 このように全体に矢印を補うことで、評価を循環させます。 次に、提案する手法を用いてJavaソースコードを評価するシステムについて説明します。

38 SPARSシステム Raw Source Repository Ranker Searcher Query Parser Browser
Analyzer Relation Java ソースファイル群


Download ppt "動的情報を利用したソフトウェア 部品重要度評価手法の提案と評価"

Similar presentations


Ads by Google