目次


実践!EclipseベースのMDDツール環境の開発

Rational Software Architect拡張プラグインの作成

Comments

第1回「モデル駆動型開発を支えるMDDツール」

モデル駆動型開発(MDD)

モデル駆動型開発 : Model Driven Development(以下、MDD)は、ソフトウェアの設計と開発のすべての段階でモデルが開発を駆動し、モデルが中心的な成果物となる開発です。モデリングは抽象度の高い領域で始まり、開発作業が進むにつれて、詳細なモデルへと洗練されていきます。MDDをサポートするアーキテクチャーとしてObject Management Group(OMG)が発案したModel Driven Architecture(以下、MDA)があります。MDAにおけるモデルは、大きく3種類に分類され、最も抽象度が高くドメイン・レベルのモデルであるComputation Independent Model(以下、CIM)、CIMより抽象度が低くシステム化の要素が入ったPlatform Independent Model(PIM)、より詳細でプラットフォームの要素が入ったPlatform Specific Model(PSM)です。これらのモデルは、抽象度の高いモデルから抽象度の低いモデルへと変換されていきます。モデル駆動型開発を支える重要な要素として次の要素を説明していきましょう。

  • モデルおよびメタモデル
  • トランスフォーメーション
  • パターン

モデルおよびメタモデル

モデルは特定の視点からみたシステムの表現であり、関連のない詳細を排除することで興味のある特性をより明確化したものです。モデルを使用することで、ある開発の時点で、その時点で必要な詳細さのみを議論することが可能となり、複雑さに対処しつつ効率よく開発を行うことができるようになります。
Unified Modeling Language(以下、UML)はソフトウェアのモデリングに利用される代表的なモデリング言語です。UMLはソフトウェア・モデルに図による表記とセマンティクスを提供します。さらにUMLは標準化されたフォーマットを持ち、自動化に利用できます。 メタモデルはモデリング言語のモデルです。たとえばUMLはUMLメタモデルによって定義されています。メタモデルは作成されたモデルに対して意味を与えます。MDDではメタモデルの定義を使用してモデルから意味を読み取り、成果物を自動生成します。

トランスフォーメーション

モデル駆動型開発では抽象度の異なるモデル間や、モデルからコードへの変換を自動でおこないます。この自動変換の仕組みをトランスフォーメーションと呼びます。トランスフォーメーションを利用することで、開発の生産性や品質を大きく向上させることができます。トランスフォーメーションによって生成される成果物はモデルやコードに限られたものではなく、ドキュメントやテストケース、ビルドスクリプトなどさまざまな成果物が生成されます。

パターン

パターンは実証済みのベストプラクティスを定式化したものであり、特定の目的を実現すためにモデルやモデル要素に適用することができます。パターンの適用によってあるモデル要素からより洗練されたモデル要素が生成されることから、パターンはトランスフォーメーション一種であると考えることもできます。トランスフォーメーションとパターンは、ソースとなるモデルと生成されるモデルの抽象度の点で異なります。トランスフォーメーションではより低い抽象度のモデル要素が生成されますが、パターンの場合は同じ抽象度のモデル要素が生成されます。パターンはトランスフォーメーションと組み合わせて使用されることもあります。

モデル駆動型開発ツール環境(MDDツール環境)

モデル駆動開発の自動化の側面をサポートするツール環境を、本連載ではモデル駆動型開発ツール環境(以下、MDDツール環境)と呼びます。MDDツール環境は、前述したように、モデル、トランスフォーメーション、パターンから構成されます。MDDツール環境は特定のアーキテクチャーに特化した機能を提供します。アプリケーションの全ての側面をサポートする単一のMDDツール環境というものはありません。そのためMDDツール環境には以下のようなレベルのものが存在します。

  • 商用および業界標準
    商用ベンダーが提供し、業界で共通する問題を解決するために使用される。
  • 企業もしくは事業レベル
    ある企業やある事業の中で開発され、共通の特性をもった複数のプロジェクトで使用される。
  • プロジェクト特化
    特定のプロジェクトの中で開発され、使用される。

補足 : RSAにおけるJ2EE開発を対象としたMDDツール環境

商用製品としてのRSAはJavaやJ2EEによるエンタープライズ・アプリケーションの開発をサポートするMDDツール環境としての機能を提供します。

  • モデル
    RSAに含まれるEJBTransformationプロファイルはEnterprise Java Bean(以下、EJB)開発に特化した拡張情報を定義可能にするUML拡張です。このプロファイルを使用することで、開発者はUMLモデル上でEJB Session BeanやEntity Beanを実装すべきものを識別してモデル化することができるようになります。
  • トランスフォーメーション
    RSAはEJBTransformationプロファイルを使用して定義されたモデルからEJBコードおよび配置記述子を生成する「UMLからEJBへの変換」トランスフォーメーションを提供します。開発者はこのトランスフォーメーションを使用することで、EJBの配置記述子やEJB開発に使用するJavaインターフェースなどの詳細を意識せずに、モデル上で行った決定を容易かつ確実に実装することができます。
  • パターン
    developerWorksのReusable Asset Specification(RAS)リポジトリーにおいて「エンタープライズ・パターン」としてJ2EEアプリケーションの開発において使用される設計パターンが提供されています。エンタープライズ・パターンを利用することで、パフォーマンスなどを考慮した設計へとモデルを洗練させることができます。またエンタープライズ・パターンは「UMLからEJBへの変換」トランスフォーメーションと連携することで、パターンを実装するコードの生成も行います。

RSAの拡張によるMDDツール環境の構築

RSAの持つ既存のMDDツール環境を利用することに加えて、企業や事業独自の特性を加味してより特化したMDDツール環境を構築し利用することで、より高いレベルでモデル駆動型開発の利点を得ることができるようになります。RSAは以下の機能を提供し、MDDツール環境の構築を含めた企業レベルでのモデル駆動型開発をサポートします。

  • UML 2モデリング機能
  • 目的に応じてUMLの拡張を可能にするためのUMLプロファイルの作成機能
  • トランスフォーメーション作成のためのフレームワークおよびAPIの提供
  • パターン作成のためのエディターおよびAPIの提供

RSAの拡張とは、あるプロジェクトや開発組織などの環境や目的にあわせて、上記の機能を使用してRSAの持つモデリング機能やトランスフォーメーション機能をカスタマイズすることをさします。

下記の図にMDDツール環境を構築する中でのRSA拡張の全体像を示します。

図:MDDツール環境の構築におけるRSA拡張の全体像
図:MDDツール環境の構築におけるRSA拡張の全体像
図:MDDツール環境の構築におけるRSA拡張の全体像

まとめ

今回は、モデル駆動型開発の概念について説明し、モデル駆動型開発を行うためのMDDツール環境の構成要素について説明しました。さらにRSAの拡張機能を使用して企業やプロジェクトに特化したMDDツール環境を開発していく流れの全体像を説明しました。
次回も、どうぞお楽しみに!

第2回 「Rational Software Architect拡張によるMDDツール環境開発のサンプル事例」


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Rational
ArticleID=311648
ArticleTitle=実践!EclipseベースのMDDツール環境の開発
publish-date=05102006