270 likes | 337 Views
ソフトウェア部品グラフの次数分布におけるべき乗則の調査. ○ 市井 誠,松下 誠 ,井上 克郎 大阪大学 大学院情報科学研究科. ソフトウェア部品グラフ. ソフトウェア部品 ( 部品 ) ソフトウェアの構成単位 クラス,関数, … 互いに利用関係が存在 変数宣言,呼び出し, … ソフトウェア部品グラフ ( 部品グラフ ) ソフトウェア部品を頂点・利用関係を有向辺としたグラフ ソフトウェアの静的な構造を反映. class A { public void exec () { … } }. class B { …
E N D
ソフトウェア部品グラフの次数分布におけるべき乗則の調査ソフトウェア部品グラフの次数分布におけるべき乗則の調査 ○市井 誠,松下 誠,井上 克郎 大阪大学 大学院情報科学研究科 FORCE 3rd Workshop
ソフトウェア部品グラフ • ソフトウェア部品 (部品) • ソフトウェアの構成単位 • クラス,関数,… • 互いに利用関係が存在 • 変数宣言,呼び出し,… • ソフトウェア部品グラフ (部品グラフ) • ソフトウェア部品を頂点・利用関係を有向辺としたグラフ • ソフトウェアの静的な構造を反映 class A { public void exec () { … } } class B { … A.exec(); … } A B このソフトウェアは○○○だ! ソフトウェア部品グラフ ソフトウェア FORCE 3rd Workshop
部品グラフとべき乗則 • 頂点の次数分布: グラフを特徴付ける重要な要素 • 部品グラフの次数分布に関する研究 • JDKのクラス図を部品グラフを見なしたとき,次数がべき乗則に従う[12] • C++のソフトウェアの部品グラフの次数がべき乗則に従う[8] • これらの研究の特徴 • 対象は部分的な利用関係に基づく単体のソフトウェアの部品グラフのみ • グラフとしての共通する性質を得ることに主眼があり, 個々のソフトウェアの性質との関連に関して議論されていない • べき乗則 (べき分布): • 値 xをもつ要素の出現頻度が,xのべき乗に比例する • P[X=x] ~ x-a [3] [12] S. Valverde, R. Ferrer-Cancho and R. V. Sole, "Scale-free Networks from Optimal Design", Europhysics Letters, 2002 FORCE 3rd Workshop [8] C. R. Myers, “Software systems as complex networks: Structure, function, and evolvability of software collaboration graphs”, Physical Review E 68, 046116 ,2003
研究の目的 • 調査1: 詳細な利用関係に基づく部品グラフ・複数のソフトウェア集合に基づく部品グラフの次数は,べき乗則に従うか? • 多数のソフトウェアを収集・解析して部品グラフを構築し,調査 • 調査2: ソフトウェアの設計の特徴を,部品グラフの次数分布から読み取ることはできるか? • 異なる部品集合に基づく部品グラフの次数分布を比較 • べき乗則に注目した部品グラフの次数分布の調査 FORCE 3rd Workshop
発表の流れ • 準備 • 部品グラフと部品集合 • 調査で示す内容 • 調査1 • 部品グラフの次数がべき乗則に従うか • 調査2 • ソフトウェア設計の特徴を部品グラフの次数分布から読み取れるか • 考察 • ソフトウェアの設計評価に関して • まとめ FORCE 3rd Workshop
準備: 部品グラフと部品集合 • 対象:Javaソフトウェアに基づく部品グラフ • 部品(頂点):Javaのクラス • 利用関係(辺): Javaクラス間の静的な利用関係 • 継承,実装,変数宣言,生成,フィールド参照,メソッド呼び出し • 既存研究では,継承や実装,変数宣言(フィールドのみ)など,部分的 • 部品集合 FORCE 3rd Workshop
準備: 調査で示す内容 (1/2) • 次数分布のプロット • 入力次数と出力次数を個別に示す • 両対数軸を用いた累積度数プロット • べき乗則に従う場合,点が直線上にならぶ P[X=x] ~ x-a 傾き: -(a-1) 傾き: -a 値の大きい部分にばらつき 入力次数:2 出力次数:1 FORCE 3rd Workshop
準備:調査で示す内容 (2/2) • 回帰分析により得られる値 • べき乗則のパラメータ a • 寄与率 R*2 • べき乗則に従う度合い P[X=x] ~ x-a 傾き: -(a-1) FORCE 3rd Workshop
発表の流れ • 準備 • 部品グラフと部品集合 • 調査で示す内容 • 調査1 • 部品グラフの次数がべき乗則に従うか • 調査2 • ソフトウェア設計の特徴を部品グラフの次数分布から読み取れるか • 考察 • ソフトウェアの設計評価に関して • まとめ FORCE 3rd Workshop
調査1 • 詳細な利用関係に基づく部品グラフ・複数のソフトウェア集合に基づく部品グラフの次数分布は,べき乗則に従うか? • 入力次数・出力次数を調査 • 部品集合JDK, ALL • 次数と部品との関連を調査し,その要因を考察 • 上位の部品の傾向,次数とメトリクスとの相関 • 部品集合 ALL FORCE 3rd Workshop
調査1: 入力次数の分布 • JDK • ALL 最大値:116,326 最大値:6,461 • べき乗則に従う • 値域に大きな差が見られる FORCE 3rd Workshop
調査1: 出力次数の分布 • JDK • ALL 最大値:140 最大値:354 • べき乗則には従わない • 値の小さな部分は曲線 • 値域はそれほど変わらない FORCE 3rd Workshop
調査1: 入力次数と部品との関連 • ALLの入力次数上位の部品 • JDKなど,基礎的な役割をもつ部品 • String,Objectは特に大きな値 • メトリクスとの相関** • 行数,複雑度*とは相関なし • メソッド数とやや相関 • 入力次数がべき乗則に従う要因 • 部品が持つ役割に関連 • 一部の基礎的な部品は,様々な部分から利用される • 多くの部品は,ソフトウェアの一部など局地的に利用されるのみ ** スピアマンの順位相関係数 FORCE 3rd Workshop *WMC: サイクロマチック数を重みとした,重み付きメソッド和
調査1: 出力次数と部品との関連 • ALLの出力次数上位の部品 • 単純に大きな部品 • メトリクスとの相関 • 行数や複雑度・メソッド数と高い相関 • 出力次数がべき乗則に従わない要因 • 部品の規模や複雑さに関連 • 極端に大きな部品は非現実的 FORCE 3rd Workshop
調査1: まとめ • 入力次数 • べき乗則に従う • 高い度合い • 部品集合によって値域に大きな差 • 部品の役割に関連し,基礎的な役割の部品が大きな次数をもつ • 出力次数 • べき乗則には従わない • 値の小さな部分が異なる • 部品集合によって値域はあまり変わらない • 部品の規模や複雑さと関連し,極端に大きな部品はあまり存在しない FORCE 3rd Workshop
発表の流れ • 準備 • 部品グラフと部品集合 • 調査で示す内容 • 調査1 • 部品グラフの次数がべき乗則に従うか • 調査2 • ソフトウェア設計の特徴を部品グラフの次数分布から読み取れるか • 考察 • ソフトウェアの設計評価に関して • まとめ FORCE 3rd Workshop
調査2 • ソフトウェアの設計の特徴を,部品グラフの次数分布から読み取ることはできるか? • 異なる部品集合の次数分布を比較 • 2-1: ソフトウェア単体と ソフトウェア集合 • 部品集合ECLIPSE, NETBEANS と ALL, APACHE • 入力次数の分布を比較 • 2-2: 類似したソフトウェア同士 • 部品集合ECLIPSEとNETBEANS • 入力次数,出力次数の分布を比較 FORCE 3rd Workshop
実験2-1: 入力次数分布 ECLIPSE APACHE NETBEANS ALL • ソフトウェア単体は,値の大きな部分で傾きが変化 • ソフトウェア集合は,べき乗則に従う度合いが高い FORCE 3rd Workshop
調査2-1: まとめ • 見られた傾向 • ソフトウェア単体は,値の大きな部分で傾きに変化が見られる • ソフトウェア集合は,より高い度合いでべき乗則に従う • ソフトウェア単体は,利用関係が一部の部品に集中する度合いが低い • 要因の考察 • ソフトウェア単体では,一部の部品に利用関係が集中しないような構造となっている • レイヤー構造など • ソフトウェア集合では,ソフトウェア間で共通して利用される部品に利用関係が集中 • JDKやXML関連の部品などに限定 • それぞれのソフトウェアでのみ利用される部品の入力次数は相対的に低い FORCE 3rd Workshop
調査2-2: 対象説明 • ECLIPSEとNETBEANS の比較をおこなう • どちらも Java の統合開発環境 • ほぼ同規模 • ECLIPSE: 14,000クラス/120万行 • NETBEANS: 13,000クラス/100万行 • 比較内容 • 入力次数と出力次数の分布 FORCE 3rd Workshop
調査2-2: 入力次数 • ECLIPSEには極端な傾きの変化(カットオフ)がみられる • NETBEANSにも見られるが,やや小さい • 最大値にも大きな差 • ECLIPSEの方が,利用関係が集中する度合いが低い • ECLIPSE • NETBEANS 最大値:1,497 最大値:1,921 FORCE 3rd Workshop
調査2-2: 出力次数 • 分布の形状はほぼ同じ • 最大値に大きな差 • ECLIPSEの方が,単位行あたりの利用部品数が多い • ECLIPSE • NETBEANS 最大値:102 最大値:192 FORCE 3rd Workshop
調査2-2: まとめ • 見られた傾向 • ECLIPSEはNETBEANSよりも, • 利用関係が集中する度合いが低い • 単位行あたりの利用部品数が多い • 要因の考察 • ECLIPSEで中心的に利用される部品は,それぞれの役割が細分化されている • 保守性や柔軟性のため • 次数分布にアーキテクチャの違いが反映 FORCE 3rd Workshop
発表の流れ • 準備 • 部品グラフと部品集合 • 調査で示す内容 • 調査1 • 部品グラフの次数がべき乗則に従うか • 調査2 • ソフトウェア設計の特徴を部品グラフの次数分布から読み取れるか • 考察 • ソフトウェアの設計評価に関して • まとめ FORCE 3rd Workshop
考察 • 次数分布をみることで,ソフトウェアの設計を評価出来るのでは無いだろうか? • 以下の様なソフトウェアは設計に問題がある • 入力次数がべき乗則に従う度合いが高い • カットオフがほとんど存在しない • 利用関係が一部の部品に集中しすぎている • 設計が不十分で,基礎的な部品が直接利用されている • "God Class": 一部のクラスに機能が集中しすぎている • 具体的にメトリクスとして定式化し,指標を定めることが必要 FORCE 3rd Workshop
発表の流れ • 準備 • 部品グラフと部品集合 • 調査で示す内容 • 調査1 • 部品グラフの次数がべき乗則に従うか • 調査2 • ソフトウェア設計の特徴を部品グラフの次数分布から読み取れるか • 考察 • ソフトウェアの設計評価に関して • まとめ FORCE 3rd Workshop
まとめ • べき乗則に注目した部品グラフの次数分布の調査 • 明らかになったこと • 入力次数はべき乗則に従う • 出力次数はべき乗則に従わない • 値の小さい部分で異なる • ソフトウェア設計の特徴が部品グラフの次数分布に現れる • 利用関係の集中の度合い • ソフトウェアのアーキテクチャ • ソフトウェアの設計の評価に関して考察 • 今後,次数分布とソフトウェアの設計や品質とのより詳細な関連について調査する必要がある FORCE 3rd Workshop