Skip to main content
QUICK REVIEW

[論文レビュー] Refactoring Composite to Visitor and Inverse Transformation in Java

Akram Ajouli, Julien Cohen|arXiv (Cornell University)|Dec 19, 2011
Software Engineering Research参考文献 20被引用数 5
ひとこと要約

本稿では、JavaプログラムにおけるComposite設計パターンとVisitor設計パターンの間で、外部的動作を保持したまま相互に変換可能な体系的でツール支援型のリファクタリング手法を提示する。主な貢献は、IntelliJ IDEAおよびEclipseにおける自動リファクタリング操作を伴う形式的に規定された変換スキームであり、JHotDrawフレームワーク上で正しく逆方向の整合性(round-trip semantics)と事前条件の生成が確認された。

ABSTRACT

We describe how to use refactoring tools to transform a Java program conforming to the Composite design pattern into a program conforming to the Visitor design pattern with the same external behavior. We also describe the inverse transformation. We use the refactoring tool provided by IntelliJ IDEA.

研究の動機と目的

  • JavaにおけるComposite設計パターンとVisitor設計パターンの間で、自動的かつ動作を保持した変換を可能にすること。
  • 逆方向変換の正しさ(すなわち、CompositeからVisitorに変換して元に戻しても元のプログラム構造が得られること)を保証すること。
  • 各変換ステップの安全性和正しさを保証する最小事前条件を生成すること。
  • 具体的には、JHotDrawフレームワークという実世界のシステムを対象として、アプローチの妥当性を検証すること。
  • オブジェクト指向システムにおけるパターン移行のための再利用可能で形式化されたリファクタリング操作のセットを提供すること。

提案手法

  • 著者は、原子的なリファクタリング操作の系列を用いて、Composite設計パターンとVisitor設計パターンの間で双方向の変換スキームを定義する。
  • 変換は、IntelliJ IDEAおよびEclipseの自動リファクタリングツールを用いて実装され、構文的および意味的正しさが保証される。
  • 変換の安全性を確保するため、記号実行と静的解析を用いて最小事前条件を生成する。
  • 複雑なクラス継承階層とメソッドの重複を扱うために、33個の原子的リファクタリング操作(例:MoveMethod、PullUpImplementation、InlineClass)の形式的規定が行われる。
  • 本アプローチは、パラメータ付きメソッド、異なる戻り値型、インターフェースベースの継承階層といった変種に対しても対応可能である。
  • 変換はJHotDraw上で検証され、前向きおよび逆方向の変換が正しく適用・検証された。

実験結果

リサーチクエスチョン

  • RQ1標準的なIDEツールを用いて、JavaにおいてCompositeからVisitorへの完全自動的かつ動作を保持したリファクタリングを達成できるか?
  • RQ2CompositeからVisitorへの変換の正しさを保証するために必要な最小事前条件は何か?
  • RQ3VisitorからCompositeへの逆変換も、同等の動作保証を満たすことができるか?
  • RQ4パラメータ付きメソッド、異なる戻り値型、インターフェースベースの継承階層といった変種は、変換プロセスにどのように影響を与えるか?
  • RQ5本変換スキームは、JHotDrawのような実世界のシステムに成功裏に適用・検証可能か?

主な発見

  • CompositeからVisitorへの変換およびその逆変換により、外部的動作が保持され、逆方向整合性(round-trip correctness)が確認された。
  • 基本的な変換に対して、最小事前条件が正しく生成され、変換の安全性と正しさが保証された。
  • 本アプローチはJHotDrawに成功裏に適用され、複雑なクラス継承階層を持つ実世界アプリケーションでも実用可能であることが示された。
  • 変換スキームは、パラメータ付きメソッド、異なる戻り値型、多重継承構造といった複雑な変種に対しても適切に処理できた。
  • 形式的なリファクタリング操作(例:MoveMethod、PullUpImplementation)の使用により、コードの正確かつ信頼性の高い再構築が可能になった。
  • 生成された事前条件は記号実行と静的解析を用いて検証され、変換パイプライン全体の正しさが保証された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。