研究課題/領域番号 |
24650013
|
研究種目 |
挑戦的萌芽研究
|
研究機関 | 公立はこだて未来大学 |
研究代表者 |
神谷 年洋 公立はこだて未来大学, システム情報科学部, 准教授 (70415660)
|
研究期間 (年度) |
2012-04-01 – 2015-03-31
|
キーワード | ソフトウェア / 保守 / リバースエンジニアリング / リファクタリング / 静的解析 / 抽象実行 |
研究概要 |
本研究提案は、ソフトウェアの様々な構造を「具有的な構造」と「本質的な構造」に分類する。これらを区別することでプロダクトの本質的な構造に影響を与えずに具有的な構造を操作するとった応用可能にすることを目的とする。平成24年度は、本研究の提案書で示していた研究遂行の3つのステップ(1. 構造の要素の発見, 2. 構造の特定, 3. 構造の関係の定義)のうち、ステップ1を概ね実行できた。 ただし、当初のアプローチを若干修正し、提案書で「本質的な構造を特定する」としていたものを「本質的な構造と具有的な構造が混じっていることを前提として、ソフトウェアの修正作業をモデル化する」とした。理由は、ソフトウェアのモジュール構造は何重にも階層化されていて、構造が本質的か具有的かは静的に決まるのではなく、開発者がどの階層で作業(ソフトウェアの修正)を行っているかに依存して変化することが見て取れたからである。 修正したアプローチの基礎となるモデルを「任意粒度機能モデル」と名付けた。このモデルでは手続きあるいはメソッドが「構造」の要素であるが、手続きは任意の階層に入れ子になるため、それらの階層のすべてのメソッドが構造の要素の候補とみなされる。要素間の関係は呼び出しであるが、静的解析(プログラムの抽象実行)により起こりえるすべての呼び出しを要素間の関係とみなす。つまり、任意の階層の要素が可能なすべての実行に沿って多重に解釈され、その中で開発者にとって重要な(開発者の作業に必要な)解釈が「本質的な構造」とみなされる。 実験的な実装により、あるプロダクトの2つのバージョンを静的に解析し、それらの間で行われたリファクタリング作業を特定した。現在、この実装によって、簡単な例題プログラムからリファクタリング作業を特定できること、および、オープンソースプロダクトに適用してスケーラビリティを確認できたところである。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
3: やや遅れている
理由
H24年度に(上の「研究実績の概要」で述べた)研究遂行のステップ1を行う予定であったが、これを概ね達成できたと考えている。ただし、以下の理由により、達成度はやや低いと判断した。 (1)予定していた大規模なプロダクトに対する適用実験は未だに行えていない。(2)アプローチの若干の修正を行ったため、今後はステップ2、ステップ3についても修正を行う必要がある。(3)追加で、ステップ2, ステップ3の前に新たな検証のステップが必要であると考えている(この検証のステップでは、実際のソフトウェア開発プロセスにおいて提案手法がどの程度の有用性を持つかを定量的・定性的の両面から検証する)。
|
今後の研究の推進方策 |
H25年度は、(上の「達成度」で述べた)追加の検証ステップおよび当初計画のステップ2を進める。 追加の検証ステップではオープンソース及び企業のソースコードからリファクタリング作業を特定する実験を行い、検出精度を評価する。現在この追加の検証ステップのための共同研究の呼びかけをある企業に対して行なっているところである。この実験により、手法を改善・洗練し、検出精度(リファクタリングを特定できる精度)の改善を行う予定である。 当初計画のステップ2を修正し、前述の手法によって特定された本質的な構造(開発者にとって重要な要素)をそれ以外の構造を区別して開発者に提示する手法を提案するものとする。この提示手法の直接的な応用として、開発者は自身の作業によってプロダクトをどんな点で変化させたか、どんな点で変化させなかったかを同時に意識することができるようになる。この提示手法を、例えば、あるプロダクトの複数のバージョンに対して適用することで、開発者が開発作業の履歴を(単なるソースコードの差分ツールよりもより意味に近いレベルで)理解し、開発の方向性を考える作業をサポートできるのではないかと考えている。
|
次年度の研究費の使用計画 |
H25年度は、上記の「研究の推進方策」に従い研究を進めていき (1) 研究発表、 (2) 実験のための打ち合わせ(現在ある企業と共同研究の交渉中)、および実験が進めば (3) 実験のためのクラウド利用料金として研究費を使用する予定である。 (1) については、現在、以下の研究会・国際会議に投稿中である。 - 神谷年洋, "任意粒度機能モデルに基づくバイトコードからのコードクローン検出手法," 電子情報通信学会SIGSS5月研究会 - Toshihiro Kamiya, "Agec: An Execution-Semantic Clone Detection Tool," ICPC Tool-Demo Track (May 2013)
|