AtlanMod Research TeamのHugo Bruneliere氏、Jordi Cabot氏、Frederic Jouault氏、およびMIA SoftwareのFrederic Madiot氏が、最近、汎用的で拡張可能なオープンソースリバースエンジニアリングソリューションであるMoDiscoプロジェクトに関する簡潔な紹介を公開した。彼らはこう説明している。
ほとんどすべての企業は、レガシーシステムを管理し、保守し、リプレイスしなければならないという問題に直面しています。多くの場合、最初に解決しなければならない課題は、多くの場合巨大なレガシーアプリケーションの、機能、アーキテクチャ、データなどがどのようなものかを正しく理解することです。
主な課題は、レガシーシステムの機能、アーキテクチャ、データを発見し、理解することであり、またそれに対してリバースエンジニアリングを行うことで、後に操作したり再実装できるような意味のある表象に置き換えることです。
MoDiscoはモデル駆動エンジニアリング("MDE")の原則とテクニックを徹底的に用いて、リバースエンジニアリングにおける既存の手法を改善します。
彼らの説明によれば、リバースエンジニアリングにおける主要な論点の1つがレガシーシステムの不均質性("heterogeneity")であり、そこから、MoDiscoの主要な目的の1つが以下のものとなる。
モデル駆動リバースエンジニアリング("MDRE")は、実装技術という不均質な世界からモデルという均質的な("homogeneous")世界への転換に関するものです。
MoDiscoは2つのフェーズをめぐって構築されている。それが、モデル発見("Model Discovery")とモデル理解("Model Understanding")である。
[モデル発見は、]レガシーシステムがどのようなものか(あるいは少なくともその一部がどのようなものか)という見方を表すモデルを手に入れることから構成されます。その時に用いるのはソースコードや生のデータ、入手可能なドキュメントなどです。このモデルはシステムの統一的な表象を提供してくれます。
[モデル理解]フェーズでは、こうしたモデルの内容が分析、処理されます。特にモデルの変換が行われ、システムの、あるいはシステムに関する、最終的に求められる表象ないしデータ(つまり、ソースコード、文書、構造化データなど)が得られます。
MoDiscoはEclipseのオープンソースプロジェクトで、モデル駆動ツールを開発するための拡張とカスタマイズが可能なMDREフレームワークを提供する。これは、レガシーのマイグレーションやモダナイゼーション、品質保証、事後の文章化といった様々なリバースエンジニアリングシナリオをサポートする。
現在、MoDiscoのコンポーネントは以下を含んでいる。
- モデルブラウザ(巨大なモデルを対象としたもの)
- モデルを拡張し、カスタマイズする機構
- モデルのクエリマネージャ
- モデル発見の管理と、関連したワークフロー
- メトリクス可視化機能
MoDicsoは知識発見メタモデル(KDM:Knowledge Discovery Metamodel)とソフトウェアメトリクスメタモデル(SMM:Software Metrics Metamodel)を提供する。また、特定技術については拡張した機能をサポートしており、Javaのリバースエンジニアリング(Javaメタモデル全体とそれに対応する発見を含む)とXMLのリバースエンジニアリング(StrutsやHibernateのようなJEEフレームワーク定義ファイル向けのもの)がある。