機能的関心事を抽出するための プログラムスライシングの拡張 井上研究室 仁井谷 竜介 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 概要 ソフトウェアは多くの機能的関心事(≒一連の処理、以 降単に関心事)で構成 関心事は複数のモジュール(クラスやメソッド)のコラボレー ションで実現 関心事を理解するのはコストが高い 手がかりを見つける(単語検索, 関連するモジュールを探す モジュール間の関係を理解 Feature locationなど) ここを支援したい 関心事の抽出手法を提案 ヒューリスティクスで拡張したプログラムスライシング 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 2 プログラムスライシング スライシング基準と関連のあるプログラム要素、およ び要素間の関係の抽出を自動で行う技術 1. プログラム P をプログラム依存グラフに変換 2. P に対してスライシング基準 <s, v> を指定 3. 頂点 : 文(など) 辺 : 依存関係(データ依存/制御依存) s : P 中の文 v : 変数 P 上の頂点の訪問により v に影響する/される文の集合と その間の関係を特定 データ依存 修士論文発表会 1 i = 3; 2 if (a > 0) { 3 print i; <3, i> 4 } 制御依存 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 3 理解支援でのスライシングの問題点 関心事との関連の弱い箇所が多く含まれる 例:main()やライブラリの詳細 スライスのサイズが大きくなる 異なる関心事についての出力が重複する 例: 「ドキュメントを開く」と「ドキュメントを保存」 Main.main(args) App.run() Menu.onClick(buttonID) FileDialog.getPath() Document.open(path) File.read(path) MDI.add(document) Log.debug(message) FileDialog.getPath() Document.save(path) File.write(path) 修士論文発表会 依存 制御フロー 関心事(開く) スライス(開く) 関心事(保存) スライス(保存) App.quit() 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 4 提案手法 関連の強い / 弱い箇所の境界(バリア)をヒューリスティックに 見つける [1] では手動で設置される 頂点 提案手法では自動で設置される 依存辺 適切な関連の強さの箇所にバリアを配置することで、関心事に 固有の部分が抽出できる Main.main(args) App.run() Menu.onClick(buttonID) FileDialog.getPath() Document.open(path) File.read(path) MDI.add(document) Log.debug(message) FileDialog.getPath() Document.save(path) File.write(path) バリア 依存 制御フロー 関心事(開く) スライス(開く) 関心事(保存) スライス(保存) App.quit() 2007/02/19 修士論文発表会 [1] Krinke, J.: Slicing, Chopping, and Path Conditions with Barriers. Software Quality Vol.12, No.4, Department of Computer Science, GraduateJournal, School of Information Sciencepp.339-360,December & Technology, Osaka University2004. 5 提案手法の手順 プログラム依存グラフの構築 開発者による入力(スライシング基準) 関心事に関連の強いメソッドと関係の抽出 1. 2. 3. i. ii. 4. 5. ヒューリスティクスによるバリアの特定 バリアと開発者の入力を用いたスライシング 結果からライブラリに属すものをフィルタリング 開発者に提示 関心事グラフを用いた可視化 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 6 3.i. ヒューリスティクスによるバリアの特定 フィールドへのアクセス 引数がないメソッド呼び出し辺 引数が callee の制御を変更しないメソッド呼び出し辺 入次数の大きい頂点に入る辺 キーワードマッチと距離に基づく境界 ここだけ紹介 Name Context(メソッド m からアクセスできる型や識 別子を構成する単語の集合)の類似度が低い頂点と の境界 Name Context の類似度と距離に基づく境界 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 7 3.i. キーワードマッチと距離に基づく境界 1. キーワードと閾値を与える 2. 頂点にマークをつける 3. キーワードにマッチするメソッドに含まれる頂点 各頂点の重みを決める 4. 下の例は autosave と buffer と閾値1.0 マーク付き頂点からの距離から以下の式で決定 単純な距離とは異なり、同じ距離でも中間の方が重みが高い 閾値以下の頂点の辺をバリアにする autosave() 1.70 0.93 修士論文発表会 getBuffers() 1.46 0.93 1.28 1.46 0.75 距離2 1.70 1.16 0.93 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 8 3.ii. バリアと開発者の入力を用いたスライシング 開発者の入力からの依存関係を順/逆両方向に辿る バリアで訪問を停止 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 9 5. 関心事グラフを用いた可視化 頂点 クラス(メソッド・フィールドを内包) メソッド フィールド 辺 呼び出し辺 フィールドに対するデータフロー辺 インスタンス生成辺 親子クラス辺 org.gjt.sp.jedit.Autosave org.gjt.sp.jedit.jEdit getIntegerProperty(java.lang.String, int): int propertiesChanged(): void call actionPerformed(java.awt.event.ActionEvent): void init(): void setInterval(int): void javax.swing.Timer timer 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 10 評価実験 目的 : 関心事の理解支援における有効性の評価 対象 : jEdit (テキストエディタ) Java / 777 class / 144,692 LOC 関心事 : ファイルの自動保存 Undo : 変更取り消し Autosave マニュアルに機能として存在する単語 VFS Search : 仮想ファイルシステム上のディレクトリ検索 版管理システム上で見つかった、追加された機能 スライシング基準 : grep により得られた文 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 11 評価内容 「キーワードマッチと距離に基づく境界」のみ紹介 (Autosave, Undo に関して単体で一番良かった) スライスサイズの変化 grep の適合率/再現率との比較 異なる関心事間のスライスの共通箇所 ヒューリスティクスを組み合わせたもの 長さ制限付きスライシングとの比較 関心事グラフの評価 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 12 スライスサイズの変化 スライシング基準~従来手法のサイズまで変えられる 再現率(メソッド単位)もスライシング基準~従来手法で変化する ただしサイズに比例よりは良い 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 13 grep (スライシング基準) の 適合率/再現率との比較 前提 抽出されたメソッドにのみ着目(メソッド間の関係は考慮しない) grep ⊆ スライス (メソッドの集合として) スライスの再現率は必ず grep 以上 適合率は下がる可能性が高い 提案手法は抽出したメソッドだけでも grep より良い 0.95 Autosave について メソッド単位での適合率/再現率 1.20 1.25 横軸: 適合率 縦軸: 再現率 丸: スライスの適合率/再現率 曲線の右上は grep より性能が良い 1.35 閾値:1.45 破線: grep の適合率/再現率 曲線: grep のF値 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 14 異なる関心事間のスライスの共通箇所 互いに共通箇所の小さなスライスが得られた AutosaveとUndoに共通するメソッド(うち2つ)は、共通して 登場する 「ファイルが変更されたかどうか」 のフラグを扱う 他の組にはもとから共通箇所がない 共通箇所 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 15 まとめ 機能的関心事の理解支援に適切な、プログラ ム要素とその間の関係を抽出 ヒューリスティクスにより関連の強い箇所のみ抽出 評価実験により理解支援に適したスライスが抽出 ができたことが確認された 今後の課題 複数の関心事間の相互作用の調査 閾値の自動計算手法の確立 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 16 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 17 3.i 入次数の大きい頂点に入る辺 ライブラリやユーティリティや複数の関心事の 合流点 以下の入次数を個別に扱う 全ての依存辺の入次数(頂点単位) 呼出辺の入次数(メソッド単位) 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 18 実装 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 19 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 20 長さ制限付きスライシングとの比較 提案手法(17クラス)上 適切なものが抽出できた 長さ制限付き 同程度のクラス数(16)下 関連の弱いクラスが多い 関心事グラフ的に接続され ない 同程度の頂点数(175) 大きすぎるため不適 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 21 関心事グラフ変化の考察 閾値が大きい 重要なクラスや関係のみを抽出 閾値が小さい 重要なクラスの周辺の振る舞いも抽出 ソフトウェア構造の段階的な理解を支援する Storeyら[2]の提案する、ソフトウェア理解支援ツールが満た すべき項目の1つ「E5: システムの構造を表すオーバー ビューが抽象度を変化させながら使えること」とも合致 [2] M.-A. D. Storey, F. D. Fracchia, and H. A. M¨uller. Cognitive design elements to support the construction of a mental model during software exploration. The Journal of Systems and Software, Vol. 44, No. 3, pp. 171–185, 1999. 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 22 フィールドへのアクセス グラフの説明 白がヒューリスティクス有効 / 灰色が無効の従来手法を 1.0 とした時の スライスサイズ(以降同様) 左から頂点数、メソッド数、クラス数 呼出辺の入次数の大きいメソッドのヒューリスティクスとの組み 合わせによりスライスサイズが目立って減少 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 23 引数のないメソッド 何と組み合わせても少し減っているだけ 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 24 入次数の大きい頂点(全ての辺) 入次数の制限次第(この図は >4) ただし閾値の小さなところでスライスサイズが激減するため、単一使用 には向かない(べき乗則参照) 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 25 入次数の大きい頂点(呼出辺) 辺の総数が少ないので、全ての辺に比べてスライスは大きめ ただし、フィールドへのアクセスとの組み合わせは全ての辺の 時よりスライスが小さい 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 26 キーワードマッチした頂点との関連が弱い頂点との境界 閾値次第でサイズの調整が容易(この図は1.25) 他のヒューリスティクスと比べメソッド数が減る傾向に ある 修士論文発表会 2007/02/19 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 27
© Copyright 2024 ExpyDoc