院ゼミ資料

ソフトウェア部品グラフの次数分布に
おけるべき乗則の調査
○市井 誠,松下 誠 ,井上 克郎
大阪大学 大学院情報科学研究科
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