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

Slides:



Advertisements
Similar presentations
API 呼び出し列の差分を利用した Android アプリケーション比較ツールの 試作 井上研究室 神田 哲也.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
大規模コーパスから獲得した 名詞の出現パターンを用いた 事態名詞の項構造解析
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
シーケンス図の生成のための実行履歴圧縮手法
ソースコード中の識別子に基づく カテゴリ階層構築手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
LZ符号化 森田 岳史.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
メソッド周辺の識別子と メソッド本体のAPI利用実績に基づいたAPI集合推薦手法
ソースコードの編集内容を入力とした ソフトウェア部品の自動検索
利用実績に基づくソフトウェア部品検索システムSPARS-J
情報伝播によるオブジェクト指向プログラム理解支援の提案
T17E011 大塚 恭平 T17E046 柳下 慶輔 顧問 高橋 宗雄教授
プログラムの動作を理解するための技術として
デバイスからの異常注入が指定可能なCPUエミュレータ
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
コンポーネントランクを用いた ソフトウェアのクラス設計に関する 分析手法の提案
アスペクト指向プログラミングを用いたIDSオフロード
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
ソースコードに対する適用可能な修正手順を 可視化するリファクタリング支援手法の提案
Javaソフトウェア部品検索システムのための索引付け手法の提案と実装
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
ソフトウェア部品検索システムを 対象とするソフトウェアライセンス 特定手法
動的依存グラフの3-gramを用いた 実行トレースの比較手法
実行時情報に基づく OSカーネルのコンフィグ最小化
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
利用実績に基づくソフトウェア部品検索システムSPARS-J
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
メソッドに用いられる 動詞-目的語関係を収録した 辞書構築手法の提案
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア工学 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コードクローン解析に基づく デザインパターン適用候補の検出手法
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
オブジェクト生成の観測に基づく プログラム実行の要約の抽出
Presentation transcript:

ソフトウェア理解支援を目的とした 辞書の作成法 大阪大学 大学院情報科学研究科 ○早瀬 康裕, 市井 誠, 井上 克郎

背景 ソフトウェア保守のコストは膨大 保守の過程でドキュメントがしばしば更新されない → 保守作業への新規参加者に負担がかかる ソフトウェア理解とテストの占める割合が大きい 保守の過程でドキュメントがしばしば更新されない ソースコードを読んで理解しなければならない → 保守作業への新規参加者に負担がかかる

理解の手がかり: 識別子 保守作業者はどうやってソースコードを理解しているのか? 識別子は非常に重要な手がかりの1つ ドメインの知識とプログラム要素との対応付けに識別子の名前を用いる[3,4] 識別子に適切な名前が付けられていない場合には,ソースコードを理解するためにより長い時間が必要となる[5] 新規参加者に識別子に使われている単語の意味を教えれば,生産性を改善できるのでは? しかし,一般の辞書に載っているような意味を教えても意味がない

開発者向けの辞書 ドメイン固有の単語について書かれた辞書を作成する どんな辞書? ソースコードから自動的に 単語間の関係を記録した辞書 (シソーラス) 上位下位関係 修飾関係 馴染みのない アプリケーションの ソースコード is-a 関係 List Component JList JComponent Collection LinkedList … collection component 共通する j linked 特化する list 名詞の上位下位関係 修飾語の目録

辞書の生成方法 ソースコード集合からis-a関係を取得 複合語を分割し,小文字に統一 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単語 2単語以上 名詞 2777 66701 101867 修飾語 2062 3845 13699

名詞の関係の例 1単語の名詞間の関係で,出現回数の上位からいくつか抜粋 上位語 下位語 出現回数 listener handler 202 adapter 116 collection list 29 case all 26 set 16 component delegate 11 thread worker 7 WordNet にも 存在

修飾語の関係の例 1単語の修飾語で,出現回数が100以上 修飾語 関係の出現回数 i 1559 abstract 528 default 280 base 192 basic 179 test 153 my 142 string 108 simple 107 multi 105 file 101

まとめ ソースコード中で用いられる単語のシソーラスを生成手法を提案 今後の課題 生成された辞書の評価 どうやって? ドキュメントコメントを利用して,単語の説明を生成 大規模な対象への適用