2017 Fiscal Year Annual Research Report
Program comprehension based on feature identification using hybrid program analysis
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
(21 results)