2016 Fiscal Year Annual Research Report
ハイブリッドプログラム解析を利用した機能識別に基づくプログラム理解支援技術
Project/Area Number |
15H02683
|
Research Institution | Tokyo Institute of Technology |
Principal Investigator |
小林 隆志 東京工業大学, 情報理工学院, 准教授 (50345386)
|
Co-Investigator(Kenkyū-buntansha) |
林 晋平 東京工業大学, 情報理工学院, 助教 (40541975)
石尾 隆 奈良先端科学技術大学院大学, 情報科学研究科, 准教授 (60452413)
渥美 紀寿 京都大学, 情報環境機構, 助教 (70397446)
|
Project Period (FY) |
2015-04-01 – 2019-03-31
|
Keywords | ソフトウェア学 / ソフトウェア工学 / プログラム理解 |
Outline of Annual Research Achievements |
本研究は,ソフトウェアが提供する外的機能とその実現方法である内的機能とを区別して識別することでソフトウェア更新を効果的に行うためのプログラム理解を支援する手法の開発を目指す. 適切にソフトウェア更新をするためには,システムが提供する機能の実現方法をプログラムから正確に読み取る必要がある.本研究では,外的機能の組み合わせを実行トレースおよびソースコードの静的構造特徴,改版履歴を対象としたハイブリッドプログラム解析を行うことで,外的機能を実現する内的機能およびその関係を識別し開発者のプログラム理解を支援する.段階的な抽象化を可能にすることで,従来困難であった中間の抽象度の設計情報復元を可能にする手法を確立する. 本年度は,ハイブリッド解析で用いる静的解析および動的解析の解析基盤を整備した.また,動的解析に基づく機能捜索手法に対して,欠陥箇所特定手法を応用することにより外的機能と関連の強いモジュールの特定を支援する手法を提案した. また,機能を理解する上で重要なプログラム中のクラスを発見する手法として,「詳細な動的解析基盤」を用いて取得した実行履歴を分析することによって重要度を算出し,オブジェクト間の関係からクラスタリングする手法について研究を行った. さらに,「新しい進化結合の算出方法」を発展させ,改版履歴だけでなくプログラムの機能に対する設定情報とプログラムとの関係の解析を行うことで,特定の機能に関連した進化結合を抽出する手法を研究した.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
「内的機能構造の識別」については,本年度の提案手法によって外的機能を実現するモジュール群の特定精度を向上させることができ,静的依存関係や重要オブジェクト特定の情報と合わせることで,それらのモジュール群から,外的機能を構成する内的機能構造として抜き出すべき重要なモジュールの抽出と構造の復元に一定の効果を持つと考える. また,「外的機能の復元・詳細補完」については,形式概念分析によって得られる形式概念のグループ化までは至らなかったが,前処理解析と改版履歴分析によって抽出した進化結合の情報を用いることで,静的な実装モジュール特定,外的機能間の関係復元を支援することが可能であると考える.
|
Strategy for Future Research Activity |
引き続き,「内的機能構造の識別」に関する手法を改善する.外的機能の組み合わせを実行した複数の実行トレースに対して共通性分析を適用した結果と,プログラム中のモジュールの利用関係の双方を利用したハイブリッド解析を行うことで形式概念のグループ化を行い,外的機能を構成する内的機能の関係を抽出する.また,この関係を利用することで,外的機能を復元する手法を検討する. また,静的解析に基づく設計意図抽出手法を応用し,段階的抽象化のためのグループ化手法に関して研究を行う.設計時の情報と,提案手法の可視化の差異を確認するために,クラス責務割り当て問題やコアクラス発見の例題を題材に,抽象化の品質を評価する実験を行う. プログラムの開発履歴に着目し,開発履歴中の改版履歴と操作履歴から進化結合を抽出し,静的な依存関係のみでなく進化結合を利用した外的機能の抽出手法について検討を行う.前述の例題のうちいくつかは進化結合が抽出できる改版履歴を有するため,まず共変更のみの進化結合を抽出し有用性を調査する. さらに,静的情報の活用だけでなく,実行されていないソースコードおよびその呼び出し情報と,ここまでに開発した手法による内的機能構造の出力結果をもとに,識別されていない外的機能のための実行シナリオの追加・修正を支援する手法を検討する.
|
Research Products
(14 results)