ソフトウェア理解支援を目的とした 辞書の作成 法

ソフトウェア理解支援を目的とした
辞書の作成法
大阪大学 大学院情報科学研究科
○早瀬 康裕, 市井 誠, 井上 克郎
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
背景
 ソフトウェア保守のコストは膨大
►ソフトウェア理解とテストの占める割合が大きい
 保守の過程でドキュメントがしばしば更新されない
►ソースコードを読んで理解しなければならない
→ 保守作業への新規参加者に負担がかかる
2
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
理解の手がかり: 識別子
 保守作業者はどうやってソースコードを理解しているのか?
 識別子は非常に重要な手がかりの1つ
► ドメインの知識とプログラム要素との対応付けに識別子の名前を用
いる[3,4]
► 識別子に適切な名前が付けられていない場合には,ソースコードを
理解するためにより長い時間が必要となる[5]
 新規参加者に識別子に使われている単語の意味を教えれ
ば,生産性を改善できるのでは?
► しかし,一般の辞書に載っているような意味を教えても意味がない
3
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
開発者向けの辞書
馴染みのない
 ドメイン固有の単語につい アプリケーションの
て書かれた辞書を作成す
る
ソースコード
is-a 関係
►ソースコードから自動的に
List
JList
List
LinkedList
…
 どんな辞書?
►単語間の関係を記録した
Component
JComponent
Collection
List
…
辞書 (シソーラス)
 上位下位関係
 修飾関係
collection
component
共通する
list
特化する
名詞の上位下位関係
j
linked
修飾語の目録
4
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
辞書の生成方法
 ソースコード集合からis-a関係を取得
► クラスの継承 (SubClass is a SuperClass)
► 変数とその型 (varName is a ClassName) (未実装)
 複合語を分割し,小文字に統一
 is-a関係から,単語間の関係を取得
► 修飾関係
 一方の単語列がもう一方の末尾に現れる場合
例: [foo, bar, baz] is a [bar, baz]
→ [foo] を, [bar, baz] を修飾する語として抽出
► 名詞の上位下位関係
 先頭に共通する単語列があるが,末尾の単語列は共通する場合
例: [j, list] is a [j, component]
→ list が component の下位語であるという情報を抽出

共通する単語が無い場合
複合語の上位下位関係をそのまま登録
5
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
適用事例
 入力: Java で書かれたオープンソースソフトウェア集合 +
JDK (85000ファイル)
 結果
語数
1単語
2単語以上
関係の数
名詞
2777
66701
101867
修飾語
2062
3845
13699
6
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
名詞の関係の例
 1単語の名詞間の関係で,出現回数の上位からいく
つか抜粋
上位語
listener
listener
collection
case
collection
component
thread
下位語 出現回数
handler
202
adapter
116
list
29
all
26
set
16
delegate
11
worker
7
WordNet にも
存在
7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
修飾語の関係の例
 1単語の修飾語で,出現
回数が100以上
修飾語
i
関係の出現回数
1559
abstract
528
default
280
base
192
basic
179
test
153
my
142
string
108
simple
107
multi
105
file
101
8
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめ
 ソースコード中で用いられる単語のシソーラスを生成
手法を提案
 今後の課題
►生成された辞書の評価
 どうやって?
►ドキュメントコメントを利用して,単語の説明を生成
►大規模な対象への適用
9
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University