出力辺数 - Software Engineering Laboratory

ソフトウェア部品の利用関係における
スケールフリー性の調査
○市井 誠,松下 誠 ,井上 克郎
大阪大学 大学院情報科学研究科
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