論 文
MUDABlue: ソフトウェアリポジトリ自動分類システム
川口真司†

パンカジ ガーグ††

松下

誠†

井上

克郎†

MUDABlue: Automatic Software Repository Categorization System
Shinji KAWAGUCHI† , Pankaj K. GARG†† , Makoto MATSUSHITA† , and Katsuro INOUE†

あらまし 近年，ネットワークの発達と分散ソフトウェア開発の普及に伴い，大規模なソフトウェアリポジト
リが一般的なものとなってきている．ソフトウェアリポジトリとはソースコードやドキュメント，バグレポート
等の各プロジェクトの成果物を蓄積するためのデータベースである．通常，ソフトウェアリポジトリは膨大な数のプロジェクトを保持しているため，例えば，開発者が現在開発中のものと似ているプロジェクトを捜したり，管理者が会社内で走っている全プロジェクトを俯瞰するといったことに活用できる．しかし，保持内容が膨大なためにプロジェクト同士の関連を判定して整理するには非常な労力を必要とする．そこで，我々はソフトウェア
を自動的に分類する MUDABlue システムを作成した．MUDABlue の特長は以下の 4 つである．1) 分類にはソースコードのみを使用，2) 分類先となるカテゴリ集合も自動的に決定する，3) ソフトウェアを二つ以上のカテゴリに分類することを許す，4)Web インタフェースで分類結果を表示する．本論文では既存の分類手法との比較を通じて MUDABlue システムの有効性を議論する．
キーワード

ソフトウェアリポジトリ，ソフトウェアライブラリ，自動分類，再利用

アを検索して，ソフトウェアの再利用や開発者間での1. ま え が き

情報共有を図る，3) 管理者が管理下にあるプロジェク

ネットワークの発達および分散ソフトウェアの一般

ト全体を把握するという点が挙げられる．

化にともなって，ネットワーク上にソフトウェアプロ

ソフトウェアリポジトリには膨大なプロジェクトがダクトを保存するソフトウェアリポジトリが注目さ登録されているため，実際に希望するソフトウェアやれている．特にオープンソースの世界では，Source-

類似ソフトウェアを検索するためには，ソフトウェア

Forge [1] を始め，さまざまなアーカイブリポジトリがが分類，整理されていなければならない．現存するリある．ソフトウェアリポジトリはソースコードだけでポジトリサービスでは，プロジェクトを登録する人がはなく各種ドキュメントやメーリングリストのログ，

そのプロジェクトの分類を行う．しかし，このような開発用の掲示板やバグレポート，バイナリパッケージ

手動分類では分類先となるカテゴリ集合を定義するの配布用ページ等が用意されている．2004 年 12 月現在，に労力がかかる．また，個々のソフトウェアがどのカ

SourceForge を利用しているプロジェクトは 9 万を越テゴリに分類されるのか，分類を行うソフトウェア登えており，現在も急速に増加しつづけている．さらに，録者に依存するため分類の一貫性に問題がある．

企業内プロジェクトを共有するために，社内向けサービスとしての導入も活発に行われている．

このような問題を解消するために，我々は自動的にソフトウェアの分類を行う MUDABlue システムのソフトウェアリポジトリを利用するメリットとして提案を行う．MUDABlue は IR 手法（注 1）の一種である

は，1) 希望するソフトウェアを検索し，利用する，2)

潜在的意味解析手法 (Latent Semantic Analysis．以下

開発者が開発中のソフトウェアと類似したソフトウェ

LSA) を用いて，カテゴリ集合の作成とソフトウェアの分類を自動的に行う．MUDABlue はソースコード†

大阪大学大学院情報科学研究科，豊中市
Graduate School of Information Science and Technology, Osaka University, 1-3のみに依存するため，管理者の入力は一切必要としな
い．LSA は単語間の意味的繋がりを統計的手法を用い

Machikaneyama-cho, Toyonaka-shi, 560-8531 Japan††

Zee Source
Zee Source, 1684 Nightingale Avenue, Suite 201, Sunnyvale, CA 94087 USA（注 1）：IR: Information Retrieval

電子情報通信学会論文誌 X Vol. Jxx–X No. xx pp. 1–9xxxx 年 xx 月

1

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

ることで抽出する手法である [2]．

MUDABlue は分類した結果を Web インタフェース
を通じてユーザに提供する．2. で述べるとおり MUD-

存すること，以上 3 点をあげることができる．

3. MUDABlue

ABlue は一つのソフトウェアに対して複数カテゴリを

MUDABlue システムは大きくわけてカテゴリ抽出，

割りあてることを許す非排他的な分類を行う．分類結分類を行う分類部と，分類結果を利用してカテゴリ，

果を描画するために，我々は Cluster Map 手法 [3] をソフトの検索を行うカテゴリ描画部とで構成される．

元にした Univiable Cluster Map 手法を定義する．本手

本節では，それぞれのサブシステムについて概要を述法を用いることでソフトウェアリポジトリ全体を容易べる．

に閲覧することが可能となる．

3. 1 分 類 手 法

以下， 2. にてソフトウェア分類手法が備えるべき特MUDABlue は 2. で述べた 3 つの特性を備えたソ性について考察し 3. にて提案する MUDABlue 分類手

フトウェア自動分類システムである．本節では，まず法について述べる．そして 4. にて MUDABlue 分類手MUDABlue で用いている IR 手法である LSA につい法について実験を行い， 5. でその実験結果についてて簡単に述べ，その後 LSA を用いたカテゴリ抽出方考察を述べる．最後に関連文献について 6. で触れた法の概要，および詳細ステップを述べる．

のちに 7. で本論文のまとめを行う．

2. ソフトウェア分類

3. 1. 1 潜在的意味解析手法 - LSA
LSA は文書群のなかから，単語間の潜在的な関連を考慮して，単語間もしくは文書間の類似度を算出する

ソフトウェア自動分類手法は一般に (1) 分類先とな手法である [2]．LSA では文書内に出現する単語の出るカテゴリ集合を定義する工程と，(2) 各ソフトウェ

現頻度を表す word-by-document 行列を作成する．そアをカテゴリに割りあてる工程の 2 つからなる．

して，この行列に対して特異値分解と呼ばれる数学的

既存の自動的分類に関する研究 [4,5] では (2) の工程操作を行うことで単語間の潜在的関連を抽出する．この自動化のみに着目しており，カテゴリ集合についての操作は word-by-document 行列のみを入力として行はリポジトリ管理者から与えられることが前提となっわれるため，例えば，どの語とどの語が類義語であるている．我々は (1) のカテゴリ集合を作成する工程のとか，文書 A と文書 B は同一カテゴリの文書である

自動化も重要であると考える．カテゴリ集合の定義は，といった学習用データは一切使わない． このように，カテゴリ結果に重大な影響があること，そしてカテゴ

学習用データを必要としないのは LSA の大きな特徴

リ集合の作成もまた労力のかかる作業だからである．

の一つである．

また，これまでの分類方法では通常，ソフトウェア

LSA はデータマイニングの他，人間の知識獲得過は用途によって分類されるが，依存ライブラリなど異程の理解等，さまざまな分野で応用されている [7, 8]．

なる視点での分類もまた有効である．このような分類

ソフトウェア工学においても，単一のソフトウェアをを実現するには，非排他的な分類が必要になる．さも複数のコンポーネントに分割したり [9]，ドキュメン

なければ，もっとも特徴的な側面のみしか抽出するこトとソースコード間の結びつきを復元するのに活用さとができない [6]．

れている [10]．LSA の詳細については文献 [2] に詳し

さらに，既存の自動分類に関する研究ではソフトウェアに付随する各種文書に対して解析を行い，分類く述べられている．

3. 1. 2 カテゴリ抽出手法を実現している．しかし開発文書はソフトウェアによっソフトウェアの集合からカテゴリを抽出するために，て質，量が大きく異なる．特に開発初期のプロジェク

我々は関数名や変数名，型名などの識別子に着目する．

トでは文書が全く存在しないことも多い．そのため，

原則的には，プログラマは識別子に任意の名前をつけ

どのようなプロジェクトにも存在するソースコードをることが可能であるが，通常，識別子にはその動作や用いたほうが，より適用範囲が広くなる．

役割に応じた名前がつけられていることが多い．様々

これらのことを踏まえて，自動ソフトウェア分類になコーディングスタイルについて論じた文献において求められる特性として，(1) カテゴリ集合も自動的にも，識別子にはその実体を表す名前をつけることがソ抽出すること，(2) ソフトウェアが複数のカテゴリに

フトウェアの品質を保つ上で重要であることが指摘さ分類されるのを許すこと，(3) ソースコードのみに依れている [11–13]．

2

論文／MUDABlue: ソフトウェアリポジトリ自動分類システム
paste

i

cur_pos
paste
cur_posi

CWindow

hWnd

CMenu

1

re_queryre_match

re_query

i




gtk_main2

g_print

hWnd

gpointerFig. 1columni

cellcolumn

cell




3

4

GtkWidget

paste



i

cur_posipaste 

cur_pos

CWindow

hWnd

CMenu

MFC
re_query1regexpre_matchRegExpRegExpre_querygtk_main2

g_printi

GTK

gpointerhWnd

columni

cellcolumncell

3 

4

x

GtkWidget






図 1 ソースコード内の識別子の関連からカテゴリを抽出
Retrieve categories from source code using relationships among identifiers

そこで，LSA を利用して類似した識別子を集めて，一つの概念を構成できるのではないかと考えた．例

関係な単語と考えられる．
（ 4 ） LSA の適用

えば “gtk_window” や “gtk_main”，“gpointer”

識別子を選別した後，identifier-by-software 行列にといった識別子が存在していれば，そのソフトは GTK

対して LSA を適用し，行列を変換する．LSA を適用

ライブラリを利用しているものと考えられる．我々は，することで，類義語が多く含まれる場合にも適切な類

このように生成された概念をカテゴリと定義する (図似度測定が可能になる．

1)．そして，もしソフトが，そのカテゴリに含まれる（ 5 ） 識別子間の類似度から，カテゴリを抽出

識別子を一つでも持っているなら，そのカテゴリに所

LSA の結果得られた行列から，すべての類似度のペ属するものとする．図 1 はカテゴリ抽出過程の例でアについて類似度を計測する．本研究では LSA におある．図 1 では，“cut, copy, paste” を “エディける単語間類似度計測で一般的に使われる cosine 尺タ” カテゴリとして，“CWindow, CMenu” を “MFC”

度を用いる．そののちクラスタ分析を適用して類似度

カテゴリとして抽出している．このとき，Software1の高い識別子同士をグループ化する．クラスタ分析とは “エディタ” カテゴリと “MFC” カテゴリに属する．

はアイテム間の類似度に従って，アイテムをいくつか

3. 1. 3 MUDABlue アルゴリズムのクラスタにグループ化する手法である．ここで得ら

3. 1. 2 で述べたように，MUDABlue は類似度の高いれる識別子のグループを “識別子クラスタ” と呼ぶ．こ

識別子をグループ化することでカテゴリ抽出を行う．

の識別子クラスタをカテゴリとする．

図 2 に MUDABlue 分類手法のデータフローを示す．

（ 6 ） ソフトウェアクラスタの作成

本手法は 7 つの部分から構成される．

識別子クラスタから対応するソフトウェアクラスタ（ 1 ） 識別子の抽出を作成する．ソフトウェアクラスタは，カテゴリに所

まず，すべてのソフトのソースコードから識別子を

属するソフトの集合を表す．ソフトウェアクラスタは，抽出する．抽出した単語からは予約語はとりのぞく．

識別子クラスタに属する識別子のうち，どれか一つでまたコメント中の単語も除外する．コメントを除外すも持っているソフトの集合である．

るのは，コメントの量や質がソフトによって大きなば（ 7 ） カテゴリタイトルの作成

らつきがあることと，多くのソフトにはコピーライト

この段階で，カテゴリと各カテゴリに属するソフト

やライセンス条項がコメントとして含まれており，この集合が得られた．最後に各カテゴリの特長を表すタれを含めることは分類に悪影響を及ぼすからである．

イトルを作成する．

（ 2 ） identifier-by-software 行列の作成

タイトルの作成のため，ソフトウェアクラスタに属

次に LSA の入力となる識別子 - ソフト行列を作成するソフトのソフトウェアベクトルを抜きだし，それする．これは各識別子が各ソフト中に何回現れたかをを合計する．そして，そのベクトル内で値の大きい識表す行列である．

別子を 10 個取りだし，それをタイトルとする．

（ 3 ） 識別子の選別

3. 2 カテゴリ描画手法

LSA を適用するまえに，不要な識別子の除去を行う．

ソフトウェアリポジトリは一般に大規模であり，得本手法では，単一のソフトにのみ出現する単語，およられるカテゴリ数もそれだけ多くなるため，得られた

び過半数以上のソフトに出現する単語を削除する．単カテゴリをわかりやすくユーザに提示する必要があ一のソフトに現れる単語は LSA にとって完全に不要

る．MUDABlue はソフトウェアリポジトリの閲覧，検である．また過半数以上のソフトに現れる単語は，ど索のために (1) キーワード検索，(2) カテゴリツリー，のようなプログラムにも普遍的に出現する分類とは無(3)Unifiable Cluster Map (UCM) の 3 つのビューを提供
3

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

Soft1

Soft3

Soft2

Soft4

Soft1

Soft5
Soft6

Soft3

A B B F

J

Soft2

1.




Soft5

B C C C D

Soft4A B C D E

F G H H J

Soft6

G G

I

J

E G H J

2. Identifier-by-Software

A B C D E F G H

I

J

1

1

2

0

0

0

1

0

0

0

1

1

1

2

0

0

0

1

0

0

2

1

1

1

1

1

0

0

0

0

0

2

1

A B C D E F G H
1

1

1

1

0

0

0

3

0

1

3

1

0

0

0

0

0

0

3

0

1

3

1

0

0

0

0

4

0

0

0

0

0

0

2

0

1

1

4

0

0

0

0

0

0

2

0

5

0

0

0

0

0

1

1

2

0

1

5

0

0

0

0

0

1

1

2

6

0

0

0

0

1

0

1

1

0

1

6

0

0

0

0

1

0

1

1

3.




4. LSA
A

B

C

D

E

F

G

H

1

0.3

0.7

0.9

0.4

0.3

0.2

0.3

0.3

2

0.4

1.0

1.4

0.6

0.3

0.2

0.1

0.1

3

0.6

1.5

2.3

1.0

0.4

0.2 -0.2 -0.2

4

0.1

0.1 -0.2

0.0

0.2

0.4

0.9

0.9

5

0.1

0.2 -0.2

0.0

0.4

0.6

1.5

1.4

6

0.1

0.2 -0.1

0.0

0.3

0.4

1.0

0.9

Soft1

A B C D

5.

         

F G H

6.

  !  " 

Soft1

Soft2

Soft4

Soft3

Soft5

Soft6

Soft1
7.

  "#$ 

Soft1

Soft2 Soft3
ClusterTitle1

Soft4

Soft5 Soft6
ClusterTitle2

図 2 カテゴリ抽出アルゴリズム
Fig. 2 Algorithm of Retrieving Categories

は Cluster Map [3] を元にした手法である．

する．

3. 2. 1 キーワード検索
キーワードを用いた検索は最も一般的な検索手法である．MUDABlue ではキーワードを用いて，カテゴ
リおよびソフトを検索可能である．カテゴリ検索時には，カテゴリタイトル，および対応する識別子クラス
タに入力されたキーワードと部分一致するカテゴリを表示する．またソフト検索時にはソフト名，もしくはソフト内の識別子とキーワードが部分一致するソフトを表示する．

構造にして表示する．カテゴリの階層構造はカテゴリに共通するソフトの数を元に決定する．そのため類似したカテゴリが近くに配置され，それだけユーザにとってカテゴリの閲 覧が容易になる．

3

A
7,8,9
D

4,5,6

B

C

10,11

12
E

図 3 Cluster Map の例
Fig. 3 Example of Cluster Map

Cluster Map では，図 3 の左側のような関係は，右示す．例えばカテゴリ C にはアイテム 3, 4, 5, 6 が属しているため，それらの間に辺を引く．また，アイテム

4, 5, 6 はカテゴリ B にも属するため，カテゴリ B とアイテム 4, 5, 6 の間にも辺を作成する．スペースの節約のため，所属するカテゴリが完全に同一であるアイ

本論文では，カテゴリ間の類似度としてオッズ比を少し変更したものを用いる．母集合 S とその部
分集合 A, B ⊂ S があったとき，カテゴリ間の類似(
度 or (A, B) は or (A, B) =1,2

その丸からのびる辺によって所属しているアイテムをカテゴリツリーでは抽出したカテゴリの一覧を階層

0

アイテム
1, 2, 3, 7, 8, 9
1, 2, 3, 4, 5, 6, 10, 11
3, 4, 5, 6
7, 8, 9, 10, 11
7, 8, 9, 10, 11, 12側のグラフとして表す．カテゴリは黒い丸であらわし，

3. 2. 2 カテゴリツリー

0

カテゴリ
A
B
C
D
E

テム同士は一つの四角でまとめる．Cluster Map はこのような形で複数に所属するアイテムの関連を効率的に描画する．しかし，もしカテゴリが数十個を越える

ad/bc

if bc =
| 0

ad|S|2規模になるとノードが画面を埋めつくしてしまい，理otherwise

解困難な状態に陥いる．

となる．ただし，a = |Ā ∩ B̄|, b = |A ∩ B̄|, c =そこで，我々は「カテゴリの融合・展開」という操|Ā ∩ B|, d = |A ∩ B| とする．我々は or0 (A, B) を用作を追加した Unifiable Cluster Map を定義，実装しいてクラスタ分析を行い，その結果をカテゴリツリー

た [14]．UCM ではカテゴリを融合させることで，一度として表示する．

に 表示されるノードを減らすことができ，画面がノー3. 2. 3 Unifiable Cluster Map

ドで埋めつくされてしまうことを防いでいる．ユーザ

MUDABlue で抽出したカテゴリの描画には，(1) 複は融合したカテゴリを再び分離することもできる．ソ

数カテゴリへの所属を効率よく描画できること，(2)フトウェアクラスタと，結合したカテゴリが線で結ば

十分なスケーラビリティを持っていること，以上 2 点

れている場合，それらのソフトは結合しているカテゴの要求を満たす描画方法が求められる．このようなリのうちいずれかに所属していることを示している．

要求を踏まえ，我々はカテゴリ描画手法として Unifi-

実際には，初期状態ではさきほど定義したカテゴリ階

able Cluster Map を定義した．Unifiable Cluster Map

層の上位 7 個のカテゴリのみが表示され，その他のカ4

論文／MUDABlue: ソフトウェアリポジトリ自動分類システム
Category

Softwareboardgame

Sjeng-10.0, bingo-cards, btechmux-1.4.3, cinag-1.1.4, faile 1 4 4, gbatnav-1.0.4, gchch-1.2.1, icsDrone, libgmonopd0.3.0, netships-1.3.1, nettoe-1.1.0, nngs-1.1.14, ttt-0.10.0

compilers

clisp-2.30, csl-4.3.0, freewrapsrc53, gbdk, gprolog-1.2.3, gsoap2, jcom223, nasm-0.98.35, pfe-0.32.56, sdcc

database

centrallix, emdros-1.1.4, firebird-1.0.0.796, gtm V43001A, leap-1.2.6, mysql-3.23.49, postgresql-7.2.1

editorgedit-1.120.0, gmas-1.1.0, gnotepad+-1.3.3, molasses-1.1.0, peacock-0.4

videoconversion
xterm

dv2jpg-1.1, libcu30-1.0, mjpgTools, mpegsplit-1.1.1
R6.3, R6.4

表 1 実験に利用したソフトウェア
Table 1 The list of sample software systems

テゴリは融合された状態で表示される．

連すると提示したカテゴリが適合しているかどうかと

3. 3 利 用 例いう観点で適合率と再現率の計算を行った．すなわち，

本節では，使用例を通して MUDABlue がどのよう

まず各ソフトごとに適合率，再現率を計算し，それらに利用できるかを示す．サンプルデータとして Source-の平均を全 体の適合率，再現率とした．

Forge から 5 つのカテゴリをランダムに選択し，そのまた，適合率と再現率は一般に相反する関係にある

中から C で書かれた 41 個のプログラムを取得した．

ため，これら二つの指標を統合する指標である F 値に

サンプルプログラムには計 2,663,215 行，164,102 識よる評価も行った．F 値は，適率合と再現率の調和平別子，9,519 個のファイルが存在した．実際に用いた

2pr均であり，適合率を p，再現率を r としたとき， p+r

カテゴリ，およびソフトについては表 1 に示す．

と定義される．

図 4 は “video” というキーワードでカテゴリを検索

4. 2 分 類 結 果した画面である．この画面から，動画編集に関するソ

表 2 は MUDABlue によって抽出されたカテゴリのフトである “dv2jpg” や “libcu30”，“mjpgTools” が提抜粋である．各行がひとつのカテゴリを表しており，

示されていることがわかる．また結果一覧からソフト

各列は左からカテゴリタイトル，所属しているソフを選択した場合，UCM も選択されたソフトを中心に

ト名，対応する識別子クラスタの識別子数である．こしたグラフになる．例えば gedit を選択した場合，エの実験では合計 40 個のカテゴリが得られた．そのう

ディタとして類似しているソフトや，gtk を利用して

ち 18 個は SourceForge で決められた用途による分類

いるソフトが容易に把握できる．また，UCM によっに合致するものであり，11 個はライブラリやアーキてリポジトリ全体を描画してるのでリポジトリ全体をテクチャに基づく新しく抽出されたカテゴリであっ

横断的に把握することができる．詳細を知りたい部分

た．残り 11 個はそのどちらでもなく，意味のないカについては適宜カテゴリを展開することも可能である．

テゴリであった．表 2 では，カテゴリ No．1，2，4，

4. 実

験

本論文では，(1) MUDABlue が SourceForege で定め

5，6，7，10 が用途によるカテゴリであり，カテゴリ
No．3，8，9 が新しいカテゴリの例である．新しいカ
テゴリは No.3 (YACC カテゴリ)，No.8, 9 (GTK カテゴ

られたカテゴリをどれだけ抽出できるのか，(2) ライリ)，No.14 (SSL カテゴリ)，No.22 (regexp カテゴリ)，

ブラリやアーキテクチャによる分類をどれだけ抽出でNo.25 (JNI カテゴリ)，No.29, 33, 40 (Win32 API カテ

きるのか，という二つの観点から MUDABlue システゴリ)，No.30 (getopt カテゴリ)，No.32 (Python/C カテムの評価を行った．

ゴリ) の 11 個である．

4. 1 実 験 方 法

図 5 に 適 合 率 と 再 現 率 の 結 果 を 示 す．比 較 の た

評価用データセットとして，3. 3 で示したものと同め，GURU [4] と SVM（注 2） を利用した分類手法であじ 41 個のソフトを用いた．これら評価用データセッ

る Ugurel ら [5] の適合率・再現率もあわせて示す．

トに対して MUDABlue メソッドを適用してカテゴリ抽出を行った結果を評価する．
評価基準としては，検索アルゴリズムを評価する際

図 5 から，MUDABlue はこれらの研究に対して同程度の適合率，再現率となっていることがわかる．実際に MUDABlue の結果の F 値が 0.72 であるのに対しによく用いられる適合率 (precision) と再現率 (recall)を用いる．本論文では各ソフトごとに，システムが関（注 2）：SVM: Support Vector Machine5電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

図 4 “video” キーワードで検索
Fig. 4 Searching with keyword “video”
Title of cluster

Software

1

AOP, emitcode, IC RESULT, IC LEFT, aop, aopGet, IC RIGHT, pic14 emitcode, iCode, etypecompilers/gbdk, compilers/sdcc# of tokens
8597

2

CASE IGNORE, CASE GROUND STATE, screen, CASE PRINT, CASE BYP STATE,

xterm/R6.3, xterm/R6.4

2160

YY BREAK, yyvsp, yyval, DATA, yy current buffer, tuple, yy current state, yy c buf p,

compilers/gbdk, database/mysql-3.23.49,

223

yy cp, uint32

database/postgresql-7.2.1

AVI, cinfo, OUTLONG, avi t, AVI errno, hdrl data, OUT4CC, nhb, ERR EXIT, str2ulong

videoconversion/dv2jpg-1.1, videoconversion/libcu30-1.0,

Widget, TScreen, CASE IGNORE STATE, CASE PLT VEC, CASE PT POINT
3
4

177

videoconversion/mjpgTools
5domainname, msgid1, binding, msgid2, domainbinding, pexp, builtin expect, transmem list,

boardgame/gbatnav-1.0.4, boardgame/gchch-1.2.1

165

boardgame/Sjeng-10.0, boardgame/cinag-1.1.4,

154

codeset, codesetp
6board, num moves, ply, pawn file, npiece, pawns, moves, white to move, move s, promotedboardgame/faile 1 4 47xdrs, blob, DB, UCHAR, XDR, mutex, key length, logp, page no, bdb

database/firebird-1.0.0.796, database/mysql-3.23.49

118

8

domainname, N , binding, gchar, GtkWidget, PARAMS, codeset, gpointer, loaded l10nfile,boardgame/gbatnav-1.0.4, boardgame/gchch-1.2.1,

118

argz

editor/gnotepad+-1.3.3, editor/peacock-0.4

GtkWidget, gchar, gpointer, gint, widget, gtk widget show, N , g free, dialog, g return if failboardgame/gbatnav-1.0.4, editor/gnotepad+-1.3.3,

9104

editor/gmas-1.1.0, editor/gedit-1.120.0, editor/peacock-0.4

表 2 MUDABlue 分類結果 (抜粋)
Table 2 MUDABlue Result (excerpt)て，GURU の結果のうち F 値の最大値は 0.6591 であめこの数値だけで優劣を決定することはできない．しり (適合率 0.9，再現率 0.52 のとき)，Ugurel らの結果

かしこの結果から，本研究はこれら過去の研究とは大の F 値の最大値は 0.6531 である (適合率 0.66，再現率

きく異なったアプローチで分類を行っているが，同程

0.65 のとき)．

度の信頼性を保っていることがわかる．

GURU や Ugurel らの結果はそれぞれの論文から直接引用したものであり，これらの結果は異なるデータセットに対して適用した得られた結果である．そのた

6

論文／MUDABlue: ソフトウェアリポジトリ自動分類システム
1

覧手法の比較を実証的に行なっている．その結果，全

MUDABlue
GURU
SVM

0.8

体的には検索手法ごとの適合率，再現率には有意差がprecision

認められないこと，しかし検索手法によって実際に提0.6示されるアイテムは異なると結論づけている．そのた

0.4

め，本システムでは両タイプの検索手法を組みあわせ0.2

ることで，効率的な閲覧を可能にしている．

0

非排他的集合の関係を描画するために，我々は Clus0

0.2

0.4

0.6

0.8

1

recall

図 5 適合率-再現率
Fig. 5 Precision-recall graphter Map を元に Unifiable Cluster Map を実装した．そのほかにも InfoCrystal [16] もそのような手法の一つである．また，酒井ら [17] や Allan ら [18] の手法のように，各アイテムを所属する集合に応じて何らかの

5. 考

察

5. 1 カテゴリ抽出手法

空間にマッピングする手法も存在する．

6. 関 連 研 究

本論文では，MUDABlue が用途による分類にあわせて，ライブラリによる分類も適切に行なえることを示

本節では，IR 手法をソフトウェア工学に応用していした．実験において，MUDABlue は GTK や yacc カる研究についてとりあげる．ソフトウェアの自動分類

テゴリなどを自動的に抽出している．MUDABlue はに関する研究，非排他的集合の描画に関する研究につ人による知識入力が必要ないため，新しいライブラリ

いては 5. でとりあげている．

を使うソフト群が追加されても，これを自動的に抽出することが期待できる．

IR 手法を用いてソースコードから何らかの有用な情報を抽出する研究として，ソフトウェアクラスタリ

さきほどの実験では，適合率，再現率において MUD-

ングに関する研究がある．ソフトウェアクラスタリン

ABlue は既存の研究に比べてひけをとらないことを示

グとは，ソフトウェアの理解支援のために，一つのソした．さらに MUDABlue には 2. で述べた 3 つの特フトウェアを機能単位で分割する手法である．ソフト

性，すなわち (1) カテゴリ集合の自動抽出，(2) 多重従ウェアクラスタリングの研究については，LSA を使う

属の許容 (3) ソースコードのみに依存を供えていると研究 [9] のほか，自己同一化マップを利用する研究 [19]いう大きな違いがある．

がある．これらの研究では，ファイルや関数を単位と

ただし，MUDABlue が導出するカテゴリは，全体として細かいクラスタになる傾向がある．4. での実して IR 手法を用いて分類を行うことでソフトウェア
クラスタリングを実現している．

験では一つのクラスタに含まれるソフト数は平均 2.6

また，再利用可能なコンポーネントを取得するため個となっている．これは不要識別子のフィルタリングに，IR 手法を用いる手法も提案されている．CodeBro-が不十分なために，大きな単位でクラスタを切りだし

ker [20] は Java に対応したコンポーネント取得システてしまうと著しく精度が下るからである．また，カテムの一つである．CodeBroker は開発者がソースコード

ゴリタイトルも解釈の難しいタイトルが生成されるに記述した JavaDoc を自動的に取得し，LSA を用いて場合がある．これらの問題に対処するには，どちらも類似したコメントを持つメソッドを提示する．

MUDABlue の利点を減じてしまうが，ソースコード

Marcus ら [10] はソースコードと設計書などの開発だけでなくドキュメントも入力として利用することが文書の間の関連を自動的に抽出する手法を提案してい考えられる．また，大規模なコーパスを前もって作成

る．ソースコード内のコメントと設計文書との類似度してもらう，またはタイトルを人に直接入力してもらを計算して，ソースコードに対応する開発文書を提示

う等，人手をかける方法も考えられる．

したり，設計書の記述に対応する実装を提示する．

5. 2 カテゴリ描画手法

この他，SVM を利用してバグ追跡システムに新し3. 3 での利用例を通じて，MUDABlue が複数の閲覧く登録された不具合の担当者を自動的に割りあてた検索手法を組みあわせて，より実用的な検索を実現しり [21]，プログラム中に潜在的に含まれるバグを自動ていることを示した．Frakes ら [15] はいくつかの閲的に発見する手法 [22] が提案されている．
7

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx[8]

7. む す び

S. C. Deerwester, S. T. Dumais, T. K. Landauer, G. W. Furnas and
R. A. Harshman: “Indexing by latent semantic analysis”, J. Am.

本論文では，ソフトウェアリポジトリ自動分類シスSoc. Inf. Sci., 41, 6, pp. 391–407 (1990).
[9]J. I. Maletic and A. Marcus: “Using latent semantic analysis to

テム MUDABlue の設計および評価について述べた．

identify similarities in source code to support program under-

MUDABlue は決められたカテゴリにそってソフトウェ

standing”, Proc. 12th IEEE Int. Conf. on Tools with Artificial Intelligence (ICTAI’00), pp. 46–53 (2000).

アを分類するのではなく，カテゴリそのものもソース
コードから抽出して分類を行う．そのため MUDABlue[10]source-code traceability links using latent semantic indexing”,

は事前の知識入力を必要としない．また，MUDABlue

Proc. 25th Int. Conf. on Software Engineering(ICSE2003), Portland, OR, pp. 125–135 (2003).

システムは取得したカテゴリに基づいてソフトウェア
リポジトリを閲覧するインタフェースも備えている．
我々がおこなった実験では，用途による分類のみなら[11]

B. W. Kernighan and R. Pike: “The Practice of Programming”,[12]

A. Hunt and D. Thomas: “The Pragmatic Programmer: From

[13]

S. McConnell: “Code Complete”, Microsoft Press, 2nd edition[14]

S. Kawaguchi, P. K. Garg, M. Matsushita and K. Inoue: “Mud-Addison-Wesley (1999).

ず依存ライブラリやアーキテクチャによる分類もあわせて行えることを示し，また MUDABlue の既存研究

Journeyman to Master”, Addison-Wesley (1999).
(2004).

に対する優位性も示した．

MUDABlue は完全に自動化されたシステムである．

ablue: An automatic categorization system for open source

自動化は大規模なソフトウェアリポジトリに対して適

repositories”, Proc. 11th Asia-Pacific Software Engineering
Conf.(APSEC2004) (2004).

用する際には重要な特性であるが，現在のところ人の入力も活用することで改善が期待できる部分もある．

[15]

な部分の一つである．

ware Engineering, 20, 8, pp. 617–630 (1994).
[16]

本研究の一部は文部科学省「e-Society 基盤ソフト

Washington, D.C., United States, pp. 11–20 (1993).
[17]

酒井, 山口, 川合：“図形オブジェクトの遠隔度に基づく階層[18]

J. Allan, A. V. Leouski and R. C. Swan: “Interactive cluster vi-

ウェアの総合開発」の委託に基づいて行われた．
文

献

[1]

SourceForge.net. http://sourceforge.net/.

[2]

T. K. Landauer, P. W. Foltz and D. Laham: “An introduction tolatent semantic analysis”, Discourse Processes, 25, pp. 259–284(1998).

集合の可視化モデル”, 情処学論, 40, 9, pp. 3455–3470 (1999).
sualization for information retrieval”, Technical Report IR-116,
Center for Intelligent Information Retrieval, University of Massachusetts, Amherst (1997).
[19]

book on Ontologies in Information Systems (Eds. by S. Staab andR. Studer), Springer-Verlag (2003).

sium on Computational Intelligence (ISCI’2000), Kosice, Slovakia (2000).
[20]

Software Engineering(ICSE 2002), Orlando, Florida, USA, pp.

tion retrieval approach for automatically constructing software li(1991).

code archives”, Proc. 8th ACM SIGKDD Int. Conf. on Knowledge Discovery and Data Mining, Edmonton, Alberta, Canada,
pp. 632–638 (2002).
[6]

S. Kawaguchi, P. K. Garg, M. Matsushita and K. Inoue: “Automatic categorization algorithm for evolvable software archive”,
Proc. 2003 Int. Workshop on Principles of Software Evolution(IWPSE 2003) (2003).

[7]

T. K. Landauer and S. T. Dumais: “Latent Semantic Analysis
and the Measurement of Knowledge”, Educational Testing Service Conf. on Natural Language Processing Techniques and Technology in Assessment and Education, princeton (1994).

8

513–523 (2002).
[21]

G. Lucca, M. D. Penta and S. Gradara: “An approach to classify software maintenance requests”, Proc. Int. Conf. on Software

S. Ugurel, R. Krovetz, C. L. Giles, D. M. Pennock, E. J. Gloverand H. Zha: “What’s the code? automatic classification of source

Y. Ye and G. Fischer: “Supporting reuse by delivering taskrelevant and personalized information”, Proc. 24th Int. Conf. on

Y. S. Maarek, D. M. Berry and G. E. Kaiser: “An informabraries”, IEEE Trans. Software Engineering, 17, 8, pp. 800–813

A. Chan and T. Spracklen: “Discoverying common features insoftware code using self-organising maps”, Proc. Int. Sympo-

C. Fluit, M. Sabou and F. van Harmelen: “Supporting user
tasks through visualisation of light-weight ontologies”, Hand-[5]

A. Spoerri: “Infocrystal: a visual tool for information retrieval”,
Proc. 2nd Int. Conf. on Information and Knowledge Management,

謝辞

[4]

W. B. Frakes and T. Pole: “An empirical study of representation
methods for reusable software components”, IEEE Trans. Soft-

たとえば，タイトルの理解しやすさの向上はそのよう[3]

A. Marcus and J. I. Maletic: “Recovering documentation-to-

Maintenance (ICSM’02), Montreal, Quebec, Canada (2002).
[22]

Y. Brun: “Software fault identification via dynamic analysis andmachine learning”, Master’s thesis, MIT Department of ElectricalEngineering and Computer Science, Cambridge, MA (2003).

（平成 xx 年 xx 月 xx 日受付）

論文／MUDABlue: ソフトウェアリポジトリ自動分類システム

川口真司

平 13 阪大・基礎工・情報卒．現在同大大学院情報科学研究科博士後期課程在学中．
ソフトウェアプロセスの研究に従事．情報処理学会会員．

パンカジ ガーグ
1984 インド技術大学計算機科学部卒．
1989 南カルフォルニア大学大学院計算機科

学研究科博士課程修了．同年 ヒューレット
パッカード株式会社入社．2002 同社退社．
同年 ZeeSource 設立．オープンソースソフ
トウェア開発の研究に従事．ACM 会員

松下誠

平 5 阪大・基礎工・情報卒．平 10 同大
大学院博士課程了．同年同大・基礎工・情報・助手．平 14 阪大・情報・コンピュータ
サイエンス・助手．平 17 阪大・情報・コン
ピュータサイエンス・助教授．博士 (工学)．
ソフトウェアプロセス，オープンソースソ
フトウェア開発の研究に従事．

井上

克郎

（正員）

昭 54 阪大・基礎工・情報卒．昭 59 同大
大学院博士課程了．同年同大・基礎工・情報・助手．昭 59〜昭 61 ハワイ大マノア校・情報工学科・助教授．平 1 阪大・基礎工・情報・講師．平 3 同学科・助教授．平 7 同学科・教授．平 14 阪大・情報・コンピュー
タサイエンス・教授．博士 (工学) ソフトウェア工学の研究に従事．情報処理学会，日本ソフトウェア科学会，IEEE，ACM 各
会員．

9

Abstract Recently, largescale software repositories have become feasible. Such repositories store software projects
with their source code, documents, and so forth. To leverage repositories, categorization of software systems is essential,
however, determining what projects are related to each other is often a hard problem. Hence, we propose MUDABlue,
automatic software repository categorization system. MUDABlue has four major aspects: 1) it relies on source codes
only, 2) it determines category sets automatically, 3) it allows a software system to be a member of multiple categories,and 4) it depicts categorizations graphically. We demonstrate MUDABlue’s effectiveness by comparing with existing
research tools.
Key words Software acquisition, Reusable libraries, Software libraries, Repositories, Clustering.