SSR 産学戦略的研究フォーラム平成 25 年度プロポーザル

SSR 産学戦略的研究フォーラム平成 25 年度プロポーザル
提案者: 神谷年洋
2012-05-10
1 調査研究テーマ
リファクタリング作業および機会を検出する手法の実験
2 そのテーマの戦略的意義/位置付け
本テーマは、共同研究者の一人である神谷が今年開発したリファクタリングに適したコードクローンを検出
するための手法 [1][2] を、企業で開発されたソフトウェアプロダクト [3][4] を対象として適用し、プロダクト
の開発の当事者の視点から分析する。全体としては、ソフトウェア工学における基礎的研究を直接産の現場に
応用するテーマである。
本テーマは同検出手法の改善と応用を目的とし、以下のサブテーマからなる。
(T1) 同検出手法の適用性の向上のための実装の改良
(T2) 精度を向上させるためのフィルタリングやヒューリスティクスの提案・開発
(T3) リファクタリングを評価するためのプロダクト/プロセスのメトリクスの提案・開発
いずれの目的においても、企業で開発されているプロダクトを対象とした実験を通じて、一般的かつ現実的な
状況に適用可能な分析手法を目指す。
[1]Toshihiro Kamiya, “Agec: An Execution-Semantic Clone Detection Tool,” IEEE ICPC 2013 Tool-
Demo Track, 2013/05/21 (to appear).
[2]神谷年洋, “任意粒度機能モデルに基づくバイトコードからのコードクローン検出手法,” 電子情報通信
学会 SIGSS 2013 年 5 月研究会, 2013/05/10 (to appear).
[3]“Java のための 3D アプリケーション開発フレームワーク,” IPA 先端的情報化推進基盤整備事業に係る
採択テーマ一覧, http://www.ipa.go.jp/NBP/ FIIadopt9-j.html, 1998.
[4]Atsushi Aoki, Kaoru Hayashi, Kouichi Kishida, Kumiyo Nakakoji, Yoshiyuki Nishinaka, Brent
Reeves, Akio Takashima, Yasuhiro Yamamoto, “A Case Study of the Evolution of Jun: an ObjectOriented Open-Source 3D Multimedia Library,” Proc. IEEE ICSE 2001, pp. 524-533, 2001.
1
2.1 同検出手法の特徴
本テーマで扱う同検出手法は、従来手法のソースコードや構文要素や PDG の等価性により重複コードを検
出しようとするものとは異なり、可能な実行列のすべてを一種の抽象実行により静的に生成することにより同
じ実行列を検出する。実行列を用いることで、既存の手法よりもリファクタリングの定義に近いモデルに基づ
く解析をおこなう。すなわち「動作を変えずにソースコードの構造を変更する」作業であるリファ クタリン
グが行われた場合でも、リファクタリングの適用前と適用後のコード断片が等価とみなされることが期待さ
れる。
この特徴により、同検出手法が可能とする新しい応用として、以下のものがある。
• リファクタリングの作業の痕跡を発見する
• 等価なコード断片(リファクタリングを行うことができる部分)を発見する
特に、上記の2つが混在した状況として、
• 部分的にリファクタリングが行われ、等価なコード断片のいくつかが書き換えられ、他の物が書き換え
られていない状況において、等価なコード断片を発見する
最後の状況は、従来研究が想定しているような「検出されたコード断片を一度に全て修正する」といった理想
的な状況とは異なった、「同検出手法により発見されたコード断片が時間をおいて徐々に変更されていく」よ
うな、ソフトウェアプロダクトが長期間にわたって保守される現実的な開発プロセスを想定したものである。
プロダクト/プロセスメトリクスに関しても、従来の、プロダクトの規模メトリクスの変化からリファクタ
リングを推定するもの([5][6][7] 等)とは異なり、本テーマではより直接的に、リファクタリングの定義に基
づいてリファクタリングを検出することを目指している。これにより、従来の規模メトリクスの増減の評価
(たとえば「100 行減ったから何らかのリファクタリングがされている可能性がある」
)といったような 間接的
な尺度とは異なり、メトリクスの計測によって開発者の作業をより正確に把握することが可能になる。たとえ
ば「リファクタリングが可能な箇所が 20 箇所あり、その内の 5 箇所をリファクタリングした」といった分析
が可能になる。
[5]Serge Demeyer ら、”Finding refactorings via change metrics,” ACM SIGPLAN OOPSLA ’00.
[6]Godfrey, M.W. ら、”Using Origin Analysis to Detect Merging and Splitting of Source Code Enti-
ties,” IEEE TSE 2005.
[7]Kunal Taneja ら、”Automated detection of api refactorings in libraries,” IEEE/ACM ASE ’07.
3 調査研究の概要
SRA で開発されている「じゅん for Java」[3] を実験対象のプロダクトとし、上述の検出手法を適用し、当
事者による分析を行う。
SRA の「じゅん for Java」を選定した理由は、このプロダクトおよび開発プロセスが以下の特徴を持ち、本
テーマに必要となる条件を備えているためである。
2
(1) 大規模
同検出手法はまだ小規模なプロダクトへの適用実験しか行われていない。 実際の開発プロセスへの適用性
を評価するためには、大規模なプロダクトへの適用が必須である。
じゅん for Java は最新のバージョンでは 43 万行を超える大規模なソフトウェアプロダクトである。
(2) 複数の開発者による開発
適用対象のプロダクトの主要な開発メンバーによる当事者視点での分析を通じて、 (a) 検出された個々の変
更が開発者の意図に合致するかを確認すること、 また (b) 開発者が記憶しているが手法によって検出されな
かった変更を特定するといった検証が可能になる。
特に (b) は、従来のコードクローン検出手法の研究の多くにおいて欠落しているため、 このような検証が
行えることは同検出手法の改善はもとより、この分野の研究全般に大きく寄与すると考えられる。
(3) 長期間に渡る開発・保守プロセス (1998 年−)
じゅん for Java は非公開のものも含めると700以上のバージョン(リビジョン)がある。 特にメトリク
スの提案において保守期間が長いことは、メトリクスの性質を評価する上で重要である。長期間に渡るメトリ
クスデータを用いることで、たとえば、メトリクスの安定性や、長期的な変動傾向を分析することが可能と
なる。
(4) Smalltalk からの移植
将来的に Java 版と Smalltalk 版を比較することで、言語によるリファクタリングの差異を調べる等の展開
が可能になる。
4 調査研究の進め方 (共同研究者など)
共同研究者
神谷年洋 (公立はこだて未来大) ツールの開発、適用実験、メトリクスの開発
小田朋宏(SRA 先端技術研究所) 適用実験、分析
松原伸人(SRA 先端技術研究所) 適用実験、分析
研究協力者
西中芳幸 (インタセクトコミュニケーションズ、元 SRA 先端技術研究所) インタビューイ
スケジュール
全体を通して、サブテーマ T1, T2, T3 をこの順で行う。期間中、共同研究者によるミーティングを随時行
う。実施時期は研究の進捗によって変更するが、現在は以下を予定している。
3