90 likes | 140 Views
ソフトウェア理解支援を目的とした 辞書の作成法. 大阪大学 大学院情報科学研究科 ○早瀬 康裕 , 市井 誠 , 井上 克郎. 背景. ソフトウェア保守のコストは膨大 ソフトウェア理解とテストの占める割合が大きい 保守の過程でドキュメントがしばしば更新されない ソースコードを読んで理解しなければならない → 保守作業への新規参加者に負担がかかる. 理解の手がかり : 識別子. 保守作業者はどうやってソースコードを理解しているのか ? 識別子は非常に重要な手がかりの 1 つ ドメインの知識とプログラム要素との対応付けに識別子の名前を用いる [3,4]
E N D
ソフトウェア理解支援を目的とした辞書の作成法ソフトウェア理解支援を目的とした辞書の作成法 大阪大学 大学院情報科学研究科 ○早瀬康裕, 市井誠, 井上克郎
背景 • ソフトウェア保守のコストは膨大 • ソフトウェア理解とテストの占める割合が大きい • 保守の過程でドキュメントがしばしば更新されない • ソースコードを読んで理解しなければならない → 保守作業への新規参加者に負担がかかる
理解の手がかり: 識別子 • 保守作業者はどうやってソースコードを理解しているのか? • 識別子は非常に重要な手がかりの1つ • ドメインの知識とプログラム要素との対応付けに識別子の名前を用いる[3,4] • 識別子に適切な名前が付けられていない場合には,ソースコードを理解するためにより長い時間が必要となる[5] • 新規参加者に識別子に使われている単語の意味を教えれば,生産性を改善できるのでは? • しかし,一般の辞書に載っているような意味を教えても意味がない
開発者向けの辞書 • ドメイン固有の単語について書かれた辞書を作成する • ソースコードから自動的に • どんな辞書? • 単語間の関係を記録した辞書 (シソーラス) • 上位下位関係 • 修飾関係 馴染みのない アプリケーションの ソースコード is-a 関係 collection component 共通する 特化する list 名詞の上位下位関係 修飾語の目録
辞書の生成方法 • ソースコード集合から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 の下位語であるという情報を抽出 • 共通する単語が無い場合 複合語の上位下位関係をそのまま登録
適用事例 • 入力: Java で書かれたオープンソースソフトウェア集合 + JDK (85000ファイル) • 結果
1単語の名詞間の関係で,出現回数の上位からいくつか抜粋1単語の名詞間の関係で,出現回数の上位からいくつか抜粋 名詞の関係の例 WordNet にも存在
修飾語の関係の例 • 1単語の修飾語で,出現回数が100以上
まとめ • ソースコード中で用いられる単語のシソーラスを生成手法を提案 • 今後の課題 • 生成された辞書の評価 • どうやって? • ドキュメントコメントを利用して,単語の説明を生成 • 大規模な対象への適用