ドメイン固有モデリング(DSM)とは
ドメイン固有モデリング(Domain-Specific Modeling, DSM)は、
ソフトウェア開発などのITシステム開発で用いられるシステム設計手法の一つです。これは、特定の分野(ドメイン)に特化したグラフィカルな言語(
ドメイン固有言語, DSL)を用いてシステムの様々な側面を表現するアプローチです。DSM言語は、汎用的なモデリング言語と比較して抽象度が高く、システムの詳細な記述を必要としないため、より効率的な開発が可能になります。
DSMの概要
DSMの重要な概念として、コード生成があります。これは、DSMで作成したモデルから実行可能なコードを自動的に生成する機能です。これにより、開発者はソースコードの記述や保守から解放され、開発効率が大幅に向上します。また、自動生成されたコードは手書きコードよりもバグが少なく、品質が高い傾向があります。
従来のCASEツールやUMLツールによるコード生成とは異なり、DSMでは、モデリング言語とコード生成機能は、通常、それを使用する組織自身が開発します。これは、ごく少数の専門開発者がモデリング言語とコード生成機能を開発し、他の開発者がそれを利用する形です。組織が自ら開発することで、その組織のドメインとニーズに合致したツールを構築でき、開発者は親しみやすい用語や概念を使い、学習時間も削減できます。さらに、組織の要求だけを考慮すれば良いため、モデリング言語の修正も迅速に行えます。
DSM言語のツールサポート
汎用的なモデリング言語は、CASEツールとして様々なツールが提供されています。しかし、DSM言語は、それぞれの市場が非常に小さいため、同様のツールを一から作成することはコストがかかり現実的ではありません。そのため、DSM言語をサポートするツールを構築するためのDSMフレームワークやDSM環境が用いられます。
DSM環境は、メタモデリングツールの一種であり、モデリングツールやCASEツールを定義するためのツールです。DSM環境で作成されたツールは、同じ環境で動作することもあれば、独立したプログラムとして動作することもあります。一般的に、DSM環境は通常のCASEツールよりも抽象レベルが一段高く、より柔軟なツール開発が可能です。
DSM環境を利用することで、DSM言語用ツールの開発コストを劇的に低減できます。優れたDSM環境は、手間のかかるプログラム部品の生成を自動化し、ドメイン固有のエディタ、ブラウザ、部品などを備えています。ドメインの専門家は、ドメイン固有の構成要素と規則のみを使用し、DSM環境は対象ドメイン向けに最適化されたモデリングツールを提供します。
多くのDSMは、DSM環境として提供されており、商用製品では MetaEdit+、オープンソース製品ではGEMS、学術向けではGMEがあります。DSMの普及に伴い、既存の
統合開発環境にDSMフレームワークを追加する動きも出ており、例えば、EclipseのEMFやGMF向けのEclipse Modeling Project (EMP)、マイクロソフトの
ソフトウェアファクトリー向けのDSL Toolsなどがあります。
DSMの例
DSM言語は、特定のドメインにおける複数の抽象化レベルを適用範囲とします。例えば、携帯電話向けのDSM言語では、ユーザーインターフェースの高度な抽象的定義から、
論理回路の低レベルの実装までをサポートします。また、金融サービス向けのDSM言語では、顧客に関する高度に抽象化された定義や、各種取引に関するアルゴリズムの実装までをサポートします。
DSM言語とUMLの比較
[統一モデリング言語]は、
ソフトウェアを中心とした汎用的なモデリング言語であり、主に
オブジェクト指向プログラミングをサポートするように設計されています。DSM言語とは異なり、UMLは非常に広範囲の領域で利用可能ですが、特定のドメインに特化しているわけではありません。
UMLにはプロファイル機構があり、これによって特定のドメインやプラットフォーム向けにカスタマイズや制限が可能です。UMLプロファイルは、
ステレオタイプと呼ばれるタグ付き値と制限により、UMLを特定ドメイン向けに拡張します。UMLのカスタマイズ例として有名なのはSysMLで、これは
システム工学向けのDSM言語として利用されています。
DSM言語の定義
言語を定義するには、その定義を記述するための言語が必要です。言語のモデルは
メタモデルと呼ばれますが、モデリング言語を定義するための言語はメタ
メタモデルと呼ばれます。メタ
メタモデルは、既存言語のカスタマイズによって生まれた言語と、当初からメタ
メタモデルとして開発された言語の2種類に分類されます。
既存言語から派生したメタ
メタモデルとしては、実体関連モデル、
形式言語、
EBNF、オントロジー言語、
XML Schema、MOFなどがあります。一方、DSMは特定タスクのために新たな言語を作成することを特徴としているため、メタ
メタモデルとして新たに設計された言語があるのも自然なことです。その種の言語で有名なものとしては、OPRR、GOPRR、GOPPRRなどがあります。
メタモデル定義用の
ドメイン固有言語として、単純な変換言語を指向したATLがあります。ATL変換の巨大なライブラリがEclipse metamodel open source libraryに存在します。ATLはドメイン固有変換言語の典型例です。
参考文献
DSM Forum
Domain-Specific Modeling Resources
Generic Eclipse Modeling System (GEMS)
Eclipse Graphic Modeling Framework
Eclipse Modeling Framework
MetaEdit+
関連項目
汎用モデリング (GPM)
モデル駆動工学 (MDE)
ドメイン固有言語 (DSL)
モデル駆動型アーキテクチャ (MDA)
Meta-Object Facility (MOF)
Systems Modeling Language (SysML) -
システム工学用のDSM
Computer Aided Software Engineering (CASE)
外部リンク
DSM Forum - DSMツールベンダー各社などによる団体
Domain-Specific Modeling Resources - 各種リソース
Generic Eclipse Modeling System (GEMS) - ビジュアルメタモデリング言語やEclipse向けDSM編集プラグインを使ったグラフィカルDSM言語記述ツール。
Eclipse Graphic Modeling Framework - DSMエディタ作成用オープンソースツール群。
Eclipse Modeling Framework - DSMの一部サポート
*
MetaEdit+ - MetaCase によるDSM環境