ソフトウェア理解支援を目的とした 辞書の作成法 大阪大学 大学院情報科学研究科 ○早瀬 康裕, 市井 誠, 井上 克郎 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
© Copyright 2024 ExpyDoc