ソフトウェア部品グラフの次数分布に おけるべき乗則の調査 ○市井 誠,松下 誠 ,井上 克郎 大阪大学 大学院情報科学研究科 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品グラフ ソフトウェア部品 (部品) ソフトウェアの構成単位 クラス,関数,… 互いに利用関係が存在 変数宣言,呼び出し,… ソフトウェア部品グラフ (部品グラフ) class A { public void exec () { … } } class B { … A.exec(); … } A B ソフトウェア部品を頂点・利用関係を有向辺としたグラフ ソフトウェアの静的な構造を反映 ソフトウェア 2006/7/19 ソフトウェア 部品グラフ このソフトウェア は○○○だ! FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 2 部品グラフとべき乗則 頂点の次数分布: グラフを特徴付ける重要な要素 部品グラフの次数分布に関する研究 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 [8] C. R. Myers, “Software systems as complex networks: Structure, function, and evolvability of software collaboration graphs”, 2006/7/19 FORCE 3rd Workshop Physical Review E 68, 046116 ,2003 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 3 研究の目的 べき乗則に注目した部品グラフの次数分布の調査 調査1: 詳細な利用関係に基づく部品グラフ・複数のソフト ウェア集合に基づく部品グラフの次数は,べき乗則に従う か? 多数のソフトウェアを収集・解析して部品グラフを構築し,調 査 調査2: ソフトウェアの設計の特徴を,部品グラフの次数分 布から読み取ることはできるか? 異なる部品集合に基づく部品グラフの次数分布を比較 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 4 発表の流れ 準備 部品グラフと部品集合 調査で示す内容 調査1 部品グラフの次数がべき乗則に従うか 調査2 ソフトウェア設計の特徴を部品グラフの次数分布から読み取 れるか 考察 ソフトウェアの設計評価に関して まとめ 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 5 準備: 部品グラフと部品集合 対象:Javaソフトウェアに基づく部品グラフ 部品(頂点):Javaのクラス 利用関係(辺): Javaクラス間の静的な利用関係 継承,実装,変数宣言,生成,フィールド参照,メソッド呼び出し 既存研究では,継承や実装,変数宣言(フィールドのみ)など,部分的 部品集合 JDK ECLIPSE 説明 Java 基本ライブラリ JDK1.4 Java統合開発環境 Eclipse 3.0.1 NETBEANS Java統合開発環境 NetBeans 3.6 約13,000 APACHE Apache Projectから収集したソフトウェア集合 約59,000 ALL JDK, Eclipse, NetBeans, Apache Project, SourceForgeから収集したソフトウェア集合 約180,000 2006/7/19 クラス数 約11,000 約14,000 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 6 準備: 調査で示す内容 (1/2) 次数分布のプロット 入力次数と出力次数を個 別に示す 両対数軸を用いた累積度数 プロット P[X=x] ~ x-a べき乗則に従う場合,点が 直線上にならぶ 入力次数:2 傾き: -(a-1) 傾き: -a 値の大きい部 分にばらつき 出力次数:1 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 7 準備:調査で示す内容 (2/2) 回帰分析により得られる値 べき乗則のパラメータ 寄与率 a P[X=x] ~ x-a R*2 べき乗則に従う度合い 傾き: -(a-1) 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 8 発表の流れ 準備 部品グラフと部品集合 調査で示す内容 調査1 部品グラフの次数がべき乗則に従うか 調査2 ソフトウェア設計の特徴を部品グラフの次数分布から読み取 れるか 考察 ソフトウェアの設計評価に関して まとめ 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 9 調査1 詳細な利用関係に基づく部品グラフ・複数のソフトウェア集 合に基づく部品グラフの次数分布は,べき乗則に従うか? 入力次数・出力次数を調査 部品集合 JDK, ALL 次数と部品との関連を調査し,その要因を考察 上位の部品の傾向,次数とメトリクスとの相関 部品集合 ALL 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 10 調査1: 入力次数の分布 JDK ALL 最大値:116,326 最大値:6,461 a R*2 2.1 ±8.6×10-3 0.99 2.0 ±1.4×10-3 1.00 JDK ALL 2006/7/19 •べき乗則に従う •値域に大きな差が見られる FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 11 調査1: 出力次数の分布 JDK ALL 最大値:140 a 3.1 ±8.2×10-2 3.7 ±6.9×10-2 JDK ALL 2006/7/19 R*2 0.88 0.90 最大値:354 •べき乗則には従わない • 値の小さな部分は曲線 •値域はそれほど変わらない FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 12 調査1: 入力次数と部品との関連 ALLの入力次数上位の部品 JDKなど,基礎的な役割をもつ 部品 String,Objectは特に大きな値 1 2 3 4 5 クラス名 java.lang.String java.lang.Object java.lang.Class java.lang.Exception java.lang.Throwable 行数 出力次数 入力次数 675 21 116,326 35 4 98,377 605 41 29,767 15 2 21,057 136 12 19,536 メトリクスとの相関** 行数,複雑度*とは相関なし メソッド数とやや相関 出力次数 入力次数 0.00 行数 0.07 複雑度* 0.08 メソッド数 0.24 入力次数がべき乗則に従う要因 部品が持つ役割に関連 一部の基礎的な部品は,様々な部分から利用される 多くの部品は,ソフトウェアの一部など局地的に利用されるのみ ** スピアマンの順位相関係数 2006/7/19 *WMC: サイクロマチック数を重みとした,重み付きメソッド和 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 13 調査1: 出力次数と部品との関連 ALLの出力次数上位の部品 単純に大きな部品 メトリクスとの相関 行数や複雑度・メソッド数と高い 相関 1 2 3 4 5 クラス名 org.apache.poi… …FunctionEval org.jgraph.GPGraphpad com.jgraph.GPGraphpad org.jgraph.GPGraphpad org.eclipse.jdt… …ASTConverter 入力次数 出力次数 0.00 行数 出力次数入力次数 364 2,196 2,200 542 354 255 253 252 1 130 131 209 4,520 223 3 行数 0.83 複雑度 0.75 メソッド数 0.64 出力次数がべき乗則に従わない要因 部品の規模や複雑さに関連 極端に大きな部品は非現実的 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 14 調査1: まとめ 入力次数 べき乗則に従う 高い度合い 部品集合によって値域に大きな差 部品の役割に関連し,基礎的な役割の部品が大きな次数 をもつ 出力次数 べき乗則には従わない 値の小さな部分が異なる 部品集合によって値域はあまり変わらない 部品の規模や複雑さと関連し,極端に大きな部品はあまり 存在しない 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 15 発表の流れ 準備 部品グラフと部品集合 調査で示す内容 調査1 部品グラフの次数がべき乗則に従うか 調査2 ソフトウェア設計の特徴を部品グラフの次数分布から読み取 れるか 考察 ソフトウェアの設計評価に関して まとめ 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 16 調査2 ソフトウェアの設計の特徴を,部品グラフの次数分布から読 み取ることはできるか? 異なる部品集合の次数分布を比較 2-1: ソフトウェア単体と ソフトウェア集合 部品集合 ECLIPSE, NETBEANS と ALL, APACHE 入力次数の分布を比較 2-2: 類似したソフトウェア同士 部品集合ECLIPSEとNETBEANS 入力次数,出力次数の分布を比較 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 17 実験2-1: 入力次数分布 ECLIPSE a APACHE R*2 ECLIPSE 2.2 ±1.6×10-2 0.96 NETBEANS 2.2 ±7.9×10-3 0.99 APACHE 2.4 ±1.1×10-2 0.98 ALL NETBEANS 2.0 ±1.4×10-3 1.00 ALL •ソフトウェア単体は,値の大きな 部分で傾きが変化 •ソフトウェア集合は,べき乗則に 従う度合いが高い 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 18 調査2-1: まとめ 見られた傾向 ソフトウェア単体は,値の大きな部分で傾きに変化が見られる ソフトウェア集合は,より高い度合いでべき乗則に従う ソフトウェア単体は,利用関係が一部の部品に集中する度合いが低い 要因の考察 ソフトウェア単体では,一部の部品に利用関係が集中しないような構造 となっている レイヤー構造など ソフトウェア集合では,ソフトウェア間で共通して利用される部品に利用 関係が集中 JDKやXML関連の部品などに限定 それぞれのソフトウェアでのみ利用される部品の入力次数は相対的に低い 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 19 調査2-2: 対象説明 ECLIPSEとNETBEANS の比較をおこなう どちらも Java の統合開発環境 ほぼ同規模 ECLIPSE: 14,000クラス/120万行 NETBEANS: 13,000クラス/100万行 比較内容 入力次数と出力次数の分布 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 20 調査2-2: 入力次数 ECLIPSE NETBEANS 最大値:1,497 最大値:1,921 ECLIPSEには極端な傾きの変化(カットオフ)がみられる NETBEANSにも見られるが,やや小さい 最大値にも大きな差 ECLIPSEの方が,利用関係が集中する度合いが低い 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 21 調査2-2: 出力次数 ECLIPSE NETBEANS 最大値:192 最大値:102 分布の形状はほぼ同じ 最大値に大きな差 ECLIPSEの方が,単位行あたりの利用部品数が多い 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 22 調査2-2: まとめ 見られた傾向 ECLIPSEはNETBEANSよりも, 利用関係が集中する度合いが低い 単位行あたりの利用部品数が多い 要因の考察 ECLIPSEで中心的に利用される部品は,それぞれの役割が 細分化されている 保守性や柔軟性のため 次数分布にアーキテクチャの違いが反映 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 23 発表の流れ 準備 部品グラフと部品集合 調査で示す内容 調査1 部品グラフの次数がべき乗則に従うか 調査2 ソフトウェア設計の特徴を部品グラフの次数分布から読み取 れるか 考察 ソフトウェアの設計評価に関して まとめ 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 24 考察 次数分布をみることで,ソフトウェアの設計を評価出来るのでは無いだ ろうか? 以下の様なソフトウェアは設計に問題がある 入力次数がべき乗則に従う度合いが高い カットオフがほとんど存在しない 利用関係が一部の部品に集中しすぎている 設計が不十分で,基礎的な部品が直接利用されている "God Class": 一部のクラスに機能が集中しすぎている 具体的にメトリクスとして定式化し,指標を定めることが必要 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 25 発表の流れ 準備 部品グラフと部品集合 調査で示す内容 調査1 部品グラフの次数がべき乗則に従うか 調査2 ソフトウェア設計の特徴を部品グラフの次数分布から読み取 れるか 考察 ソフトウェアの設計評価に関して まとめ 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 26 まとめ べき乗則に注目した部品グラフの次数分布の調査 明らかになったこと 入力次数はべき乗則に従う 出力次数はべき乗則に従わない 値の小さい部分で異なる ソフトウェア設計の特徴が部品グラフの次数分布に現れる 利用関係の集中の度合い ソフトウェアのアーキテクチャ ソフトウェアの設計の評価に関して考察 今後,次数分布とソフトウェアの設計や品質とのより詳細な 関連について調査する必要がある 2006/7/19 FORCE 3rd Workshop Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 27
© Copyright 2024 ExpyDoc