ソフトウェア部品の利用関係における スケールフリー性の調査 ○市井 誠,松下 誠 ,井上 克郎 大阪大学 大学院情報科学研究科 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェアの部品グラフ ソフトウェア部品 ソフトウェアの構成単位 互いに利用関係が存在 ソフトウェアの部品グラフ ソフトウェア部品を頂点・利用関係を有向辺としたグラフ ソフトウェアの静的な構造を反映 クラス図も部品グラフの一種 理解支援などに利用される 呼び出し関係をみる 依存関係の強い部品群の抽出 … C A 2005/12/20 E B D SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 2 スケールフリー性 スケールフリー性: ソフトウェアの部品グラフにみられる性質 グラフの頂点の接続辺数の分布が,べき分布となる性質 p(x) = Cx-a 他にも,様々な分野で見られる性質 例: インターネット上のノードのネットワーク ランダムな障害に強く,攻撃に弱いなどの性質をもつ 正規分布 べき分布 極端に大きな値をもつ 要素が,ごく少数存在 多くの要素が 平均値付近 ほとんどの要素は,0に 近い値をもつ 値が大きくなるにつれ, 要素数は一気に減少 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 3 部品グラフとスケールフリー性 部品グラフのスケールフリー性に関する既存研究 [Valverde03] JDKなどのクラス図がスケールフリー性をもつことを示している 最適なソフトウェア設計による結果であると考察 [Myers03] だから,何? いくつかのJavaおよびC++のソフトウェアの部品グラフがスケールフリー性をも つことなど,グラフとしての性質についての調査結果を示している そのような性質をもつグラフを生成するモデルを提案している. グラフとして共通する性質を得ることに主眼がおかれている 対象ソフトウェアによる違いについては触れられていない 個々の部品との関連や,ソフトウェアの設計との関連は調査されていない Sergi Valverde and Ricard V. Sole, “Hierarchical Small Worlds in Software Architecture”, 2003 2005/12/20 SIGSS 2005-12 Christopher R. Myers, “Software systems as complex networks: Structure, function, and evolvability of software collaboration graphs”, Physical Review E 68, 046116 ,2003 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 4 研究の目的 対象ソフトウェアの設計や,個々の部品との関連に注目し,部品グラ フのもつスケールフリー性を調査する 入力辺数および出力辺数は,個々の部品のどの性質と関連が深いの か? 対象ソフトウェアによって分布に違いがあるのか? 違いがあるなら,その違いはどこからきているのか? 得られた結果をもとに,理解支援手法への応用について考察 C A E B 2005/12/20 D このソフトウェア は○○○だ! SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 5 調査内容 [1/3] 調査1: 分布と含まれる部品との関連を調査 入力辺数と出力辺数の分布の調査 プロット図 上位の部品の内容を確認し,関連を考察 入力辺数と出力辺数,その他のメトリクスとの相関の調査 メトリクス:行数・メソッド数 調査2: ソフトウェアによる分布の違いを調査 外見が類似したソフトウェア同士の分布を比較 用途および規模 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 6 調査内容 [2/3] べき分布の見方 両対数軸でプロットする 値が直線上に並ぶ 値の大きい部分での誤差を吸収するため,累積度数でプロット p(x) = Cx-a 傾き: -a 傾き: -(a-1) 見づらい 値の大きい部 分にばらつき 線形軸でのプロット 2005/12/20 両対数軸でのプロット Software Engineering Laboratory, Department of Computer Science, 両対数軸での累積度数プロット SIGSS 2005-12 Graduate School of Information Science and Technology, Osaka University 7 調査内容 [3/3] 対象: Javaソフトウェア 部品:Javaのクラス 利用関係: Javaクラス間の静的な利用関係 継承,実装,変数宣言,生成,フィールド参照,メソッド呼び出し データセット 4種類 内容 D1 JDK1.4 説明 Java 基本ライブラリ クラス数 約11,000 D2 ソフトウェア集合 JDK, Eclipse, NetBeans, Apache Project, 約180,000 調査1 SourceForgeから D3 Eclipse 統合開発環境 約14,000 調査2 D4 NetBeans 統合開発環境 約13,000 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 8 調査1 [1/6] 入力辺数の分布 D1(JDK) a=2.11 クラス名 行数 メソッド数出力辺数入力辺数 1 java.lang.String 667 70 21 6420 2 java.lang.Object 34 13 4 5861 3 java.lang.System 169 35 27 1527 4 java.awt.Component 2792 256 117 1317 5 java.lang.Class 604 74 41 1026 ... … 2005/12/20 •べき分布に従う •lang パッケージのクラスが上位を占める •String, Objectが極端に大きな値をもつ SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 9 調査1 [2/6] 入力辺数の分布 D2(ソフトウェア集合) a=2.02 クラス名 行数 メソッド数出力辺数入力辺数 1 java.lang.String 667 70 21 116239 2 java.lang.Object 34 13 4 98261 3 java.lang.Class 604 74 41 29682 4 java.lang.Exception 14 4 2 21046 5 java.lang.Throwable 134 21 12 19519 …… 2005/12/20 •値域が D1 と大きく異なる •lang, util パッケージのクラスが上位を占 める •String, Objectが極端に大きな値をもつ SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 10 調査1 [3/6] 出力辺数の分布 D1(JDK) クラス名 行数 メソッド数出力辺数入力辺数 1 sun.awt.windows.WToolkit 535 101 140 14 2 com.sun.corba…ORB 1474 135 131 50 3 sun.awt.motif.MToolkit 371 70 130 9 4 sun.jvm.hotspot…BugSpot 1063 68 118 3 5 java.awt.Component 2792 256 117 1317 …… 2005/12/20 •べき分布とは異なる分布 •入力辺数と比較し,値が小さい •複雑なロジックを実装するクラスが上 位 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 11 調査1 [4/6] 出力辺数の分布 D2(ソフトウェア集合) クラス名 1 org.apache.poi…FunctionEval 2 org.jgraph.GPGraphpad 3 com.jgraph.GPGraphpad 4 org.jgraph.GPGraphpad 5 org.eclipse.jdt…ASTConverter …… 2005/12/20 行数 メソッド数出力辺数入力辺数 11 3 354 1 2190 127 255 129 2195 127 253 130 540 56 253 210 4492 159 222 3 •値域はD1と大きくは変わらない •上位は複雑な実装をおこなうクラス の他,単純に多くのクラスを呼び出 すクラスおよびサンプルのクラスな ど SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 12 調査1 [5/6] メトリクスとの比較 スピアマンの順位相関係数 D1(JDK) D2(ソフトウェア集合) 出力辺数 行数 メソッド数 出力辺数 行数 メソッド数 入力辺数 0.075 0.11 0.34 入力辺数 0.00 0.07 0.24 出力辺数 - 0.73 0.63 出力辺数 - 0.83 0.64 入力辺数は,出力辺数や行数,メソッド数と相関が見られない 出力辺数は行数,メソッド数と相関が高い 部品そのものから得られるメトリクス 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 13 調査1 [6/6] まとめと考察 入力辺数 クラスの役割との関連が強いと考えられる 基礎的な役割をもつクラスに利用関係が集中 クラス自身との内容とは関連が弱い 同じクラスでも,データセットにより値が大きく異なる 他のメトリクス(行数,メソッド数)と相関が低い 出力辺数 クラス単体の規模や複雑さと関連 データセットにより,値域にあまり差が無い 他のメトリクス(行数,メソッド数)と相関が高い 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 14 調査2 [1/4] 対象説明 D3: Eclipse と D4: NetBeans の比較をおこなう どちらも Java の統合開発環境 ほぼ同規模 D3: 14000クラス/120万行, D4: 13000クラス/100万行 比較内容 入力辺数および出力辺数の分布 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 15 調査2 [2/4] 入力辺数 D3 D4 最大値:1497 最大値:1921 D3には極端なカットオフ: 傾きの変化がみられる D4にも見られるが,D3ほどでは無い 最大値にも大きな差 D3は利用関係の集中度が低い 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 16 調査2 [3/4] 出力辺数 D3 D4 最大値:192 最大値:102 分布の形状はほぼ同じ 最大値に大きな差が見られる D3は単位行あたりの利用部品数が多い D3とD4は同程度の総行数 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 17 調査2 [4/4] まとめと考察 同じ「外見」のソフトウェアD3,D4において,異なる分布の特 徴が得られた D3は利用関係の集中度が低い また,単位行辺りの利用部品数が多い 得られた特徴には,クラス設計の違いが反映されていると考 えられる D3は中心となるクラスの役割が細分化されている 反面,同じ処理を実装するときも,多くの部品を利用する必 要がある だから,何? 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 18 応用: ソフトウェア理解に対して [1/2] 理解支援を目的とした,クラス設計の分析手法への応用* クラス設計の理解には,まず中心となる重要クラスを知ることが必要 ソフトウェア中で重要な概念をあらわすクラス Component Rank法により,重要度による順位付けをおこなえる 利用関係に基づく重要度判定手法 入力辺数の多いクラスは重要 重要なクラスから利用されるクラスは重要 順位をもとにクラスのグループ分けをおこない,上位より段階的に理解 グループ分けの閾値の決定方法が確定的で無い 順位をもとにグループ分け 重要 入出力辺数の分布を利用し,グループ分けの閾値を決定する 1. ………………………………………… E 重要 A D B 利用関係をもとに順位付け 2005/12/20 C 2. ………………………………………… 3. ………………………………………… 4. ………………………………………… 5. ………………………………………… 6. ………………………………………… 7. ………………………………………… … 20.. ……………………………………… 21. ……………………………………… … 50. ……………………………………… 51. ……………………………………… … グループごとにク ラスを分析 SIGSS 2005-12 *市井, 横森, 松下, 井上, “コンポーネントランクを用いたソフトウェアのクラス設計に関する分析手法の提案”, 電子情報通信学会技術研究報告, SS2005-37, No.229, (2005)Osaka University Software Engineering Laboratory, Department of Computer Science, Graduate SchoolVol.105, of Information Sciencepp.25-30 and Technology, 19 応用: ソフトウェア理解に対して [2/2] グループ分けの閾値の決定に,入出力辺数の分布を利用 1. 2. 全クラス数をもとに,閾値を仮決定 入出力辺数の分布をもとに補正 入力辺が特定のクラスに集中 重要クラスは小数: 閾値を高くする 出力辺数が全体的に多い 重要クラスの個数も多い: 閾値を低くする Component Rank法による順位からグループを決定 さらに調査をおこない,具体的な値をもとめる必要がある 最初に仮決定する個数 入力辺数の集中度/出力辺数と,増減の関連 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 20 まとめと今後の課題 ソフトウェアの部品グラフにおけるスケールフリー性に関して, 対象ソフトウェアとの関連に注目して調査を行った 得られた結果をもとにして,ソフトウェア理解支援手法への 応用について考察した 今後の課題 重要クラスのグループ分けの閾値を決定する手法を提案 2005/12/20 SIGSS 2005-12 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 21
© Copyright 2025 ExpyDoc