Software Factories メタモデル

Software Factoriesのメタモデルに関連する技術には大きく3つの分類が存在します。

1つはPractical Software Factories in .NETに示される、開発プロセス上のメタモデルです。
これはIEEE 1471をベースとし、プロダクトライン開発におけるプロダクト開発のプロセスを記述します。
一般に開発方法論は、ロール、タスク、アセットで抽象的に記述可能であって、それをプロダクトライン開発に適用し、Software Factoriesスキーマとして定義しています。ここでは、マイクロソフト社はツールに基づき開発方法論を提供するので、それをかなり意識した構造となっています。

しかし、一般的なメタモデルという意味でいうと、これは開発者が求めるメタモデルではありません。というのは、方法論で利用するアーティファクトやワークプロダクト自体を定義するメタモデルの記述はカプセル化されていて、それらを利用し、あるいは、生成するためのプロセスについてのみ扱っているからである。開発者が求めるメタモデルは、アーティファクトを記述する属性やクラス構造の方であるからです。その点をこの本は表現できていません。

次に、UML 2.0のsuper structureのメタモデルは、従来のUMLの図や、その他のプロファイル拡張での構造と属性の意味を定義する汎用的な表現法の意味を定義します。数学でいうと、道具の定義をしている部分に相当します。したがって、これだけで方法論のメタモデルとして十分であるわけではありません。UMLを利用する方法論は無数にあってもよいわけで、したがって、UML標準としてはそうした特定の方法論に特化した表現をするわけにはいきません。Software FactoriesはUMLによるモデル駆動をを使わずDSLを使うのですが、DSLのモデル定義は、このUMLの汎用性の高いメタモデルを基盤とすることはできます。

しかし、実際の開発を進める段階で、どのモデル要素を基本として定義し、その基本要素が開発プロセス上、他のモデル要素とどう関連を持つかを表現できなければならなりません。そこには、開発段階の前提条件、開発手順、モデル要素間の影響や依存関係が含まれます。こうした関係こそが開発者が意識し、ツールがガイダンスすべき指針の基礎となります。このメタモデルは方法論に依存します。

つまり、メタモデルとしては、

(1) 開発プロセスのメタモデル
(2) 方法論に非依存なモデル要素記述のための基礎的な構造や属性を定義するメタモデル
(3) 方法論に依存し、実際にモデル要素を開発でどう操作するかを規定するメタモデル
(4) 補助的に、(3)で利用するDSLの抽象構文を(2)を使い定義するメタモデル

が存在します。特に、Software Factoriesスキーマで重要なのは(3)を規定するものでなくてはなりません。この部分こそがインパクト分析、すなわち、影響波及の範囲を制御し、また、モデルの分析や定義における基準を決め、方法論の根幹となります。