ソフトウェア部品グラフの次数分布におけるべき乗則の調査
市井誠†

松下誠†

井上 克郎 †† 大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻
E-mail: †{m-itii,matusita,inoue}@ist.osaka-u.ac.jp
概要

トウェア部品グラフがある．モジュールや関数，クラスなどのソフトウェアの構成単位はソフトウェア部品（部ソフトウェア部品とはモジュールやクラス等のソフト品）と呼ばれ，互いに利用関係を持つ．ソフトウェア部

ウェアの構成単位であり，参照や呼び出しなどの形で互品グラフ（部品グラフ）は，部品を頂点，部品間の利用いに利用関係をもつ．ソフトウェア部品を頂点，利用関関係を有効辺としたグラフのことを指す．

係を有向辺としたグラフはソフトウェア部品グラフまた

様々な分野において，グラフは研究対象の表現形式としは部品グラフと呼ばれ，ソフトウェアの解析手法に広くて用いられ，その性質が調査・研究されている．グラフ用いられている．グラフを特徴づける要素として頂点のを特徴づける要素のひとつに頂点の次数分布があり，そ次数分布がある．近年，WWW 上のページのリンク関れがべき乗則に従うグラフは特徴的な性質をもつことか係やソーシャルネットワーク等，様々な分野のグラフでら物理学や社会学，生物学，情報科学など様々な分野で次数分布がべき乗則に従うことが明らかになり，活発に注目されている [1, 2, 9]．部品グラフに関しては，ひと研究されている．本研究では部品グラフの次数分布からつの Java または C++ソフトウェアに基づく部品グラソフトウェアの設計の特徴を得ることができないかどう

フがべき乗則に従うことが報告されている [8, 12]．これか調査を行う．最近の研究により，ひとつのソフトウェらの研究では，いくつかのソフトウェアに共通して見らアに基づく部品グラフの次数分布がべき乗則に従うことれる特徴の調査が行われている．また，その共通する特が報告されているが，個々のソフトウェアの性質と次数徴に関して，設計や開発プロセスとの関連について考察

分布との関連については知られていない．本研究では，されている．しかし，対象となる部品グラフはそれぞれ様々な部品集合に基づく部品グラフの次数分布を比較す

ひとつのソフトウェアに基づいたものであり，複数のソることにより，その関連について調査する．その結果，

フトウェアを含む部品集合の部品グラフに対する調査は利用関係が特定の部品に集中する度合いなどの設計の特行われていない．また，対象ソフトウェアの設計による徴が次数分布に反映されることが明らかになった．また，部品グラフの次数分布の違いについての議論はされてい次数分布に基づくソフトウェアの設計評価について考察ない．

する．

この研究は，多数のソフトウェアシステムのデータ収集・分析を通じて，より良いソフトウェアシステムの構築を目指すという，Mega Software Engineering[5] の一種で1はじめにある．ソフトウェアはその用途や規模により様々なアーキテクチャやパターンを用いて設計される [3]．同じ機

近年，短期間で大規模かつ高品質なソフトウェアを開能をもつソフトウェアであっても，設計が異なれば構成発するための技術に対する需要が高まっている．その中する部品やその利用関係が異なる．これより，設計の異でも，ソフトウェアの解析に基づく手法はソフトウェア

なるソフトウェアの部品グラフは，次数がべき乗則に従の評価や理解支援，再利用支援など様々な分野で見られうという共通の性質をもちながらも，互いに異なる特徴る．ソフトウェアの解析における重要な概念としてソフをもつと考えられる．逆に，部品グラフの次数の特徴から，もとのソフトウェアの設計の特徴を得て評価へつなげることが出来ると考えられる．
そこで，本研究ではひとつのソフトウェアだけでなく複数のソフトウェア集合に基づく部品グラフの次数分布について，べき乗則に従うかどうかという観点から調査する．このとき，部品集合による違いに注目して調査し，図 1. 部品グラフの例

ソフトウェアの設計と次数分布との関連についての考察をおこなう．具体的には，部品グラフの次数分布の調査をおこない，ソフトウェア設計との関連を，次数の大き造をもつことを示している [8]．Myers の実験では，次い部品の内容を確認し，次数とメトリクスとの相関を求数は入力と出力に分けて調査され，入力次数と出力次数めることにより調査する．このとき，部品間の利用関係はいずれもべき乗則に従う点では共通しているが，それにおいて，利用することと利用されることは明らかに異ぞれ異なる性質を持つことが示されている．また，部品なる意味をもつことから，入力次数と出力次数は区別しグラフと同様の性質をもつグラフの生成モデルを提案して調査する．調査対象は，Java の基本ライブラリであるている． 以上の研究で用いられた部品グラフは，ソーJDK および複数のオープンソースソフトウェア，それらスコードなどから得た静的な利用関係に基づいている．の集合からなるソフトウェア群とし，対象同士の結果を比較することにより，ソフトウェアによる違いや，ソフトウェア単体に利用ライブラリを加えた時の影響，および大規模なソフトウェア集合がもつ特徴について調査す

これに対し，Potanin らは動作する Java プログラムを解析し，オブジェクト間のメッセージのやりとりの関係がべき乗則に従うことを示している [11].

る．また，以上で得られた結果をもとに，ソフトウェアの設計と部品グラフの次数の分布との関連について考察

3準備

3.1

ソフトウェア部品グラフする．
以降，2 節で関連研究について述べ，3 節でソフトウェア部品グラフなどの諸定義について述べる．4 節で実験について述べ，5 節で得られた結果に関して考察する．最一般に，ソフトウェア部品は広義にはモジュールや関数，後に 6 節で本研究のまとめと今後の課題について述べる．

クラスなどのソフトウェアの構成要素のことを，狭義には再利用を目的として設計されたソフトウェアの実体の2関連研究ことを指す．本研究では広義のソフトウェア部品を用いる．以降，ソフトウェア部品を単に部品と呼ぶ．

Valverde らは，JDK や Java アプリケーションのクラス

ソフトウェアは構成要素の部品間で相互に属性や振る舞図を，クラスおよびインターフェースを部品，汎化や依いを利用し合うことで 1 つの機能を提供する．いま，あ存といった関連辺を利用関係とする部品グラフとみなしる部品がある部品を利用する時，この部品間に利用関係た時，次数に関してべき乗則が成り立つことを示していが存在すると言う．

る [12]．また，グラフ上の辺が頂点数に対して少数であ部品を頂点，利用関係を有向辺としたグラフを部品グラるにも関わらず頂点間の最短距離が小さいスモールワー

フと呼ぶ．部品グラフの例を図 1 に示す．図 1 では，部ルド性 [13] を持つことも示している．さらに，これらの品 A, B, E は C を，D は E をそれぞれ利用しているこ

性質は再利用性や理解容易性などを考慮し，最適なソフとを表している．

トウェア設計を行った結果であると考察している．

Myers は C++アプリケーションのクラス図を部品グラフとみなした時，次数がべき乗則に従うこと，またグラフがスモールワールド性をもつこと，および階層的な構

3.1.1

本研究における定義

この分布をプロットする時には一般に両対数軸が用いられる．通常の軸を用いてプロットすると図 2（a）の様に

本研究では，以下に定義する部品を頂点，部品間の利用関係を有向辺として部品グラフを構成する．

なり，特徴を捉えづらいためである．
式 (1) の両辺の対数を取ると式 (2) のようになり，ある分布がべき乗則に従うときは，両対数軸でプロットした時

部品 Java クラスおよびインターフェース．に点が傾き −a の直線上に並ぶことがわかる（図 2（b））

利用関係 以下の 6 通りの，Java ソースコードを静的に解析して得られる利用関係.

log P [X = x] ∼ −a log x(2)

継承 部品がクラスもしくはインターフェースを継承
しかし，実際のデータの度数をプロットすると，値の大実装 部品がインターフェースを実装

きな部分にばらつきが生じるため，累積度数を用いてプ

変数宣言 部品がクラスまたはインターフェースをロットする．式 (1) を累積分布関数で表すと式 (3) のよ

変数として宣言. フィールドの型, メソッドうになり，この場合も両対数軸を用いてプロットするとの返値および引数の型として宣言した場合を値が直線上に並ぶことがわかる（図 2 （c））．

含む.

P [X > x] ∼ x−(a−1)

生成 部品がクラスのインスタンスを生成(3)

メソッド呼び出し 部品がクラスもしくはインターフェースのメソッドを呼出．呼び出されたメソッドが継承されたものである場合は，メソッド宣言の存在するクラスもしくはインターフ

式 (3) の（すなわち，式 (1)，(2) の）a の値は，累積度数を両対数軸上にプロットした結果を直線へ線形回帰したときの直線の傾きから求められる．また，分布がべき乗則に従う度合いとして，回帰時の自由度調整済み寄与

ェースに対しての利用関係となる．
フィールド参照 部品がクラスもしくはインターフ率 R∗2 を用いる [6]． R∗2 は，回帰モデルがデータを説明出来ている割合を示す値であり，0 から 1 の値をとる．

ェースのフィールドを参照．参照されたフィールドが継承されたものである場合は，フィールド宣言の存在するクラスもしくはインター

3.3

ソフトウェアメトリクス

フェースに対しての利用関係となる．
ソフトウェアメトリクス（メトリクス）は，一般にはソ3.2

フトウェアの開発活動中に計測された値から得られる特べき乗則性値を意味するが，本研究では，個々の部品そのものから得られる部品の特性値のことを指す．実験において，本研究では，部品グラフの特徴として，入力次数および出力次数の分布がそれぞれべき乗則に従うかどうかに注目する．べき乗則は，Pareto の法則，Zipf の法則とも呼以下に示す 4 種類のメトリクスと，入力および出力次数との相関を求めることにより，部品の性質と次数との関連を調査する．

ばれ [10]，論文の共著関係 [9]，WWW 上のページのリンク関係 [1] など様々な分野において見られる．

LOC コメント行を除くソースコードの行数．

ある分布がべき乗則に従うとき，ある要素 X が値 x をもつ確率 P は，x の −a 乗に比例する．これを確率分布関数で表すと式 (1) となる．

P [X = x] ∼ x−a(1)NOM クラスに定義されたメソッドの数．親クラスから継承したメソッドは含まない．
WMC 重みにサイクロマチック数を用いた，重み付きメソッド和 [4]．メソッド中の分岐や繰り返しに基づく値であり，この値が大きいほど複雑である．

(b)

500

1000

11500

10value

100

100 1000 10000
10cumulative frequency

110100frequency
0115000
10000
0frequency

5000(c)1000 10000

(a)

1000

110value

1001000value

図 2. べき乗則のプロット

実験内容

4実験

4.2

4.1

部品集合

以下の 2 つの実験を行い，その結果に関する考察を行う．

実験に用いる 6 種類の部品集合について，頂点数（部品実験 1 入力次数，および出力次数の分布の調査．
累積度数を対数軸を用いてプロットし，直線に回帰数），辺数（利用関係数），総行数を表 1 に示す．またする事により式 (1) における a の値を求める．

それぞれの概要を以下に示す．

実験 2 入力次数および出力次数の分布とソフトウェア
1

APACHE Apache Project のリポジトリからのソフトウェア群．に含まれる部品および設計との関連の調査．
部品の次数とソフトウェアメトリクスとの相関を求める．また，次数が上位の部品の内容をソースコー

JDK Java の基本ライブラリである JDK1.4
ECLIPSE オープンソースの Java 開発環境である
Eclipse2 .
ECLIPSE+JDK Eclipse に，利用するライブラリである JDK を加えたもの．ただし，Eclipse から利用されない部品については除いてある．

ドを基に調査する．

4.3

実験結果

実験 1

部品集合それぞれについて，部品グラフの入力次数の累積度数分布のプロットを図 3 に，出力次数の累積度数分布のプロットを図 4 に示す．プロットは両対数

NETBEANS Eclipse と同様にオープンソースの Java開発環境である NetBeans3 .
ALL Apache, Eclipse, NetBeans, SourceForge4 など，様々なオープンソースソフトウェアのリポジトリからのソフトウェア群．

1 http://www.apache.org/
2 http://www.eclipse.org/
3 http://www.netbeans.org/
4 http://sourceforge.net/

軸を用いている．また，それぞれのプロットについて，直線に回帰することで求めた式 (1) の a の値および R∗2

表 1. 実験で用いる部品集合
APACHEJDKECLIPSEECLIPSE+JDKNETBEANSALL

頂点数59,486
11,556
13,941
16,666
13,466
180,637

辺数
303,775
107,198
140,678
212,284
69,187
1,808,982

総行数
4.2M
1.1M
1.3M
1.6M
1M
14M

実験結果の考察の値を表 2 に示す．

4.4

実験 2

得られた結果に関して，部品集合間で共通する特徴およ

部品集合 ALL について，部品の次数とソフトウェアメトリクスとの相関を求めた結果を表 3 に示す．

び異なる特徴について考察する．

また，それぞれの部品集合内にて，入力次数および出力次数が上位である部品（クラス）の中から特徴的なもの

共通点を以下に示す．

従っていることがわかる．ALL, APACHE では入力次APACHE 入力: ログを出力するクラスなど，複数のソフトウェアから共通して利用されるユーティリティクラス．

図 3 より，入力次数の分布はどれもべき乗則に数の対数分布がほぼ直線に並ぶのに対して，単体ソフトウェアである JDK, ECLIPSE, NETBEANS では，値の大きい部分でやや傾きに変化が見られる．複数のソフトウェアの集合の場合，JDK などの共通して利用さ

出力: オブジェクトのインスタンスをプールするクれるクラスへ辺が集中し，極端に大きな値をもちやすいラスおよびバイトコード解析ツールの解析部に含まためであると考えられる．JDK を含む部品集合 ALL,れるクラス．他の部品集合と比較して，上位部分にJDK, ECLIPSE+JDK では，JDK の中でも特に利用さ不自然に部品数の多い部分があらわれている．これれる Object および String が極端に大きな入力次数をもは，その出力次数をもつ，ほぼ同内容のクラスが複つことがわかる．また，このような部品集合では R∗2 の数存在するためである．

値も高く，理想的なべき分布に近い．a の値については

JDK 入力: ALL と同様，String クラス，Object クラス．
出力: Java GUI フレームワークである AWT の実装クラス．

ECLIPSE 入力: 独自の GUI 実装である SWT のクラスや例外クラス，ソフトウェア内のリソースにアクセスするためのインターフェースクラス．

部品集合に関わらずほぼ 2 となり，部品集合の比較を行う時に一般的な値として利用できると考えられる．
図 4 より，出力次数については，値の大きい部分に関してはべき乗則に従っていると言えるが，次数 0 の付近で傾きに変化がみられる．この傾向は [8] では観測されていない．利用関係の取得をより詳細化した結果であると考えられる．この分布は Double-Pareto 分布であると考

出力: Java エディタの実装クラスや，AST(抽象構えられる [7]．この分布は値の小さな部分では対数正規文木) の実装クラス

分布，大きな部分ではべき分布であるような分布であり，ECLIPSE+JDK 入力: JDK と同様．
出力: ECLIPSE と同様．

ファイルサイズにみられる分布である．出力次数は部品内の記述内容から得られる値であり，また LOC との相関が見られたことからこの分布に従うと考えられる．直NETBEANS 入力: ロケールごとの表示メッセージを線に回帰して得た a の値は 3〜4 となり，多くのクラス扱うクラスや，IDE 内でのデータ構造を扱うクラス．

を含む ALL, APACHE ではより大きな値となっている.

出力: 仮想ファイルシステムやエディタの実装ク

傾きが大きいことは全体の部品数と比較して次数の大きラス．

な部品が少ないことを示しており，頂点数や辺数を大きくしても値域に大きな変化はないことを示している．

ALL 入力: 文字列を扱うクラス java.lang.String および すべてのクラスの親クラス java.lang.Object．そ
れぞれ Java プログラム中でほぼ必ず利用されるクラスである．また，上位はほとんど JDK のクラスにより占められる．
出力: オブジェクトのインスタンスを プールするクラスおよびグラフ描画ツールのサンプルアプリケーション．

表 3. 次数とメトリクス値との相関
入力次数
出力次数

出力次数
0.004
-LOC
0.071
0.826

NOM
0.239
0.641

WMC
0.075
0.750

JDK

111010cumulative frequency
1001000

cumulative frequency
1001000

10000

10000

APACHE

151050500
number of incoming links

155000ECLIPSE+JDK

111010cumulative frequency
1001000

cumulative frequency
10010001000010000

ECLIPSE

1050500
number of incoming links

151050 100
number of incoming links

500

1ALL

1

110cumulative frequency
100
1000

cumulative frequency
100
10000

10000

NETBEANS

10100
1000
number of incoming links

151050
number of incoming links

5001

図 3. 入力次数の累積度数分布

100
10000
number of incoming links

10000

JDK

1

11010cumulative frequency
100
1000

cumulative frequency
100
1000

10000

10000

APACHE

125102050 100
number of outgoing links

200

12100

ECLIPSE+JDK

111010cumulative frequency
100
1000

cumulative frequency
100
1000

10000

10000

ECLIPSE

5102050
number of outgoing links

125102050
number of outgoing links

100200

12100

ALL

1110

cumulative frequency
100
1000

cumulative frequency
100
10000

10000

NETBEANS

5102050
number of outgoing links

1251020
number of outgoing links

50100

12

図 4. 出力次数の累積度数分布

5102050 100
number of outgoing links

200200APACHEJDKECLIPSEECLIPSE+JDKNETBEANS
ALL

2.37
2.11
2.20
2.11
2.20
2.02

入力次数
a±0.0109± 0.00866±0.0163±0.0100± 0.00788± 0.00145

R∗20.9810.987
0.955
0.976
0.994
0.999

3.41
3.11
3.02
3.073.323.66

出力次数a± 0.0637± 0.0818± 0.0770± 0.0790± 0.1043± 0.0693

R∗20.942
0.876
0.856
0.844
0.890
0.903

表 2. 回帰の結果

ソフトウェア集合同士の比較

APACHE と ALL を比較する．入力次数に関しては，どちらも高い R∗2 をもち分

ソフトウェアがライブラリを含む場合と含まない場合

布形状もほぼ直線となるが，ALL では横軸，つまり入力次数の最大値が 10000 以上であるのに対して，APACHE力次数については，ECLIPSE では上位のクラスが，ECLIPSE+JDK では JDK のクラスに押し下げられてでは最大 1000 程度と含まれるクラス数の差以上の差がいる．JDK のクラスは様々なソフトウェアで利用され出ている．これに対して，出力辺数に関しては共通点とるだけでなく，単体ソフトウェアの中でも多く利用されの比較

ECLIPSE と ECLIPSE+JDK を比較する．入して述べた様に大きな違いは無い．APACHE に関してることがわかる．逆に，出力次数の上位は ECLIPSE とは値の大きな部分に段差の様な形状が見られるが，これはほぼ同じ内容のクラスが複数存在して同次数の要素がECLIPSE+JDK で差が少ない．出力次数は，それぞれのクラスから利用されるクラスがどの程度集合に含まれ値の大きな範囲に複数存在することが原因である．

るかということに依存するため，大部分を占める Eclipseのクラスが上位に来たと考えられる．また，JDK 単体

ひとつのソフトウェアとソフトウェアの集合の比較

ひとつのソフトウェアの部品集合 ECLIPSE, NETBEANS

では上位に来る AWT などのクラスを Eclipse が必要としていないことも要因の一つであると考えられる．と複数のソフトウェアの集合である ALL, APACHE を比較すると，入力次数の分布に関して，プロット形状や，直線に回帰した際の R∗2

類似ソフトウェア間の比較

どちらも同程度の規模をの値から ALL および APACHEもつ統合開発環境である ECLIPSE, NETBEANS をみはより高い度合いでべき乗則に従う．これは，ソフトウェる．入力次数に関する特徴として，どちらも上位付近でアの集合では，共通して利用されるクラスが JDK など傾きが変化し，大きくなるという点が見られる．変化しの基礎的なクラスや XML パーサなどのアプリケーショはじめる点は，NETBEANS が約 1000 付近なのに対し，ンのドメインに依存せず利用されるクラスに限られ，利ECLIPSE は小さく約 500 である．このことは R∗2 の値用関係の集中が生じる為である．これに対してひとつのの差としてもあらわれており，NETBEANS と比較してソフトウェアの場合は，入力次数のプロットの形状を見ECLIPSE はやや低い値である．上位で傾きが大きくなたときに値の大きな部分でカットオフと呼ばれる傾きのることは，上位のクラスの次数も極端に大きくないこと変化が生じている，つまり利用関係の集中の度合いが低をを示す．また，最大値は NETBEANS の約 1900 に対い．この要因としては，母数の少なさの他に，レイヤー

して ECLIPSE は約 1500 であり，こちらも ECLIPSE構造などの階層性をもつ設計がなされていることが挙げの方が小さい．逆に，出力次数では分布の形状はほぼ同られる．よく設計されたソフトウェアであれば，基礎的じであるのに対して，最大値は NETBEANS の約 100 にな役割を持つ部品を直接扱う事を避け，ある程度の役割対して ECLIPSE は約 200 と大きな値をもつことから，をもつ部品を作成し，その部品を利用する傾向がある．

全体として ECLIPSE の方が利用部品数が大きな傾向に

例えば，XML ファイルを設定ファイルとして用いているある．

ソフトウェアの場合，設定ファイルを扱う時に直接 XMLファイルを扱う部品を利用せず，設定ファイルを扱う為に作成した部品を利用することが多いと考えられる．

以上より，ECLIPSE の方が入力次数の最大値が小さく，比較的大きな値をもたない分布であることから，特定のクラスへの利用関係の集中度は低いと言える，また，そ考察505

実験より，入力次数，出力次数はいずれも同様の形状と40なる，つまり同様の分布に従うが，詳細に見ていくと互30いに異なる点をもつことが明らかになった．その違いは，含まれる部品やソフトウェア自体の設計を反映している20と考えられる．このことから，次数の分布から，ソフトウェアの設計に関して大局的な評価をすることが出来る10と考えられる．
まず，入力次数の分布がべき乗則に従う度合いが高いソ0

フトウェアは，設計が不適切である可能性がある．実験
ECLIPSENETBEANS

により，入力次数の分布はいずれもべき乗則に従うが，部品集合がひとつのソフトウェアの場合にはカットオフ

図 5. 入力次数上位部品の public メソッド数の比較が見られた．4.4 節で述べたとおり，これはレイヤー構造などの適切な設計をもつことが原因だと考えられる．
逆に，カットオフが見られず，べき乗則に従う度合いがれぞれ総行数や行数の分布にそれほど差がないのに対し，出力次数では最大値で 2 倍程度という大きな差が見られることから，同じ行数のコードであっても ECLIPSE はより多くの部品を利用していることがわかる．これらのより高い場合には適切に設計されていないために利用関係が極端に集中していることが考えられる．ただし，この観点から評価を行うためには基準や目安となる値が必要であり，今後調査する必要がある．

ことから，NETBEANS と比較した ECLIPSE のクラス

また，入力次数と出力次数から，中心的なクラス設計の設計の特徴としては，それぞれのクラスに与えられてい役割の細分化の度合いを測ることができると考えられる．

る責任が細分化され，多くのクラスの相互作用で処理をおこなう点があると考えられる．実際，ECLIPSE の入ECLIPSE と NETBEANS の比較により得られた通り，入力次数の分布についてカットオフの度合いが大きく，力次数の上位には抽象クラスやインターフェースが多く，出力次数の最大値が大きい時，中心的なクラスの役割が中心的なクラスは抽象度が高い役割をもっていることが細分化されている傾向がある．また，その逆も言える．

分かる．また，入力次数上位のクラスの責任の度合いのこのときに極端な結果となる場合には何らかの問題が存比較するため，それぞれの public メソッド数の比較をお在する可能性がある．

こなった．クラスの public メソッドは他のクラスに提供する機能であり，個数が多ければそのクラスが持つ役割や責任が大きいと考えられる．入力次数上位 10 クラスの public メソッド数の一覧を表 4 に，Boxplot により比較した結果を図 5 に示す．これより，ECLIPSE の方がpublic メソッド数が少ない傾向がわかる．このことからも，ECLIPSE の入力次数上位のクラスは NETBEANSと比較して細分化された役割や責任をもっていることがわかる．

表 4. 入力次数上位部品の public メソッド数の比較
入力次数の順位
12345678910MEAN
MEDIAN

public メソッド数
ECLIPSE NETBEANS
621539849
53
149113342032
435295051419.1
27.7
8.5
26.5

6まとめ

actions on Software Engineering, 20(6):476–493,June 1994.

本研究では，ひとつのソフトウェアや複数のソフトウェア集合に基づく部品グラフの入力次数および出力次数について調査した．その結果，いずれも入力次数はべき乗則に従い，出力次数はべき乗則に類似した分布に従うことが明らかになった．また，それぞれを比較することに[5] K. Inoue, P. K. Garg, H. Iida, K. Matsumoto,and K. Torii. Mega software engineering. InIn Proc. of the 6th International Conference
on Product Focused Software Process Improvement(PROFES’05), pp. 399–413, June 2005.

より，利用関係が特定の部品に集中する度合いなどの設計の特徴が次数分布に反映されることが明らかになった．
また，次数分布に基づくソフトウェアの設計評価についての考察を行った．

[6] 久米, 飯塚. 入門 統計的方法 2 回帰分析. 岩波書店,1987.
[7] M. Mitzenmacher. Dynamic models for ﬁle sizes

今後の課題としては，次数分布に基づきソフトウェア設計の評価を行うため，より多くの部品集合や，異なる利用関係に基づく部品グラフを対象として実験を行い，ソフトウェアの設計と次数分布のより詳細な関連について調査することが挙げられる．

and double pareto distributions. Internet Mathematics, 1(3):305–333, 2003.
[8] C. R. Myers. Software systems as complex networks: Structure, function, and evolvability ofsoftware collaboration graphs. Physical Review E,68(4):046116, 2003.

謝辞[9] M. E. J. Newman. The structure of scientiﬁc collaboration networks. In In Proc. of the National

本研究の一部は文部科学省「e-Society 基盤ソフトウェアの総合開発」の委託に基づいて行われた．また，本研

Academy of Sciences of USA 98, pp. 409–415,
2001.

究の一部は，文部科学省 21 世紀 COE プログラム（研る．ここに記して謝意を表す．

[10] M. E. J. Newman. Power laws, pareto distributions and zipf’s law. Contemporary Physics,
46:323–351, 2005.

参考文献[11] A. Potanin, J. Noble, and M. Frean. Scale-freegeometry in oo programs. Communications of the究拠点形成費補助金）及び文部科学省科学研究費補助金萌芽研究（課題番号: 18650006）の研究助成を受けていACM, 48(5):99–103, May 2005.
[1] R. Albert, H. Jeong, and A.-L. Barabási. Diameterof the world-wide web. Nature, 401(6749):130–131,
September 1999.

physics Letters, 60(4):512–517, 2002.

[2] A.-L. Barabási. Linked: The New Science of Networks. NHK 出版, 2002.
[3] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software
Architecture: A System of Patterns. John Wiley& Sons, 1996.
[4] S. R. Chidamber and C. F. Kemerer.

[12] S. Valverde, R. Ferrer-Cancho, and R. V. Solé.
Scale-free networks from optimal design. Euro-A met-

rics suite for object oriented design. IEEE Trans-[13] D. J. Watts and S. H. Strogatz.
dynamics of ’small-world’ networks.
393(6684):440–442, June 1998.

Collective
Nature,