タイトル
Executable UML MDAモデル駆動型アーキテクチャの基礎
著者
スティーブ J.メラー (著), マーク J.バルサー (著), 株式会社テクノロジックアート (編集), 二上 貴夫 (翻訳), 長瀬 嘉秀 (翻訳), Executable UML研究会 (翻訳)
出版社
翔泳社
Amazonで購入する

「Executable UML」とは、実行可能なモデルという意味です。Executable UML の目的は 「ソフトウェア実装上の構成を決定せずに、問題領域の解決に向けての分かりやすいモデルを提供すること」です。ソフトウェア実装とは例えば、プログラミング言語やプラットフォームといったいわゆる、問題領域の解決につかう道具のことです。逆に問題領域の解決とは、ビジネスモデルやビジネスルールと言われる、ソフトウェアの目的の部分です。

Executable UML は、UML のアクションセマンティックス(動作意味論) を提供します。これにより、ソフトウェア実装を決定せずともソフトウェアの動作を表すことができます。しかも、厳密に定義することで、ツールによる解釈・実行が可能になります。 (モデル駆動アーキテクチャ)は、こうしたExecutable UML によって書かれたモデルを解釈し、コードを自動生成しようとしています。モデルの解釈を行うためには、厳密なセマンティックスが必要とされます。

本書は、Executable UML を理解するためのよい書籍だと思います。Executable UML 自体は、新しいモデリング言語と言うわけではありません。UML の一つの拡張(プロファイル)であり、実行可能なモデルを生み出すためのただの表記法です。

最近は、「モデリング」という言葉をいろんなところで聞けるようになりました。書籍もたくさん出ています。今後は、プログラムだけではなくモデリングも出来なくてはならない時代が来るかもしれません。そうすると、自然とモデルからコードを生成するという発想が生まれてきます。今後は MDA のようなモデルからコードを生成する手法が一般的になってくるかもしれません。Executable UML は次世代のための必須知識と言えるのではないでしょうか。

特徴

Executable UML は、UML に厳密なアクションセマンティックスを拡張したものです。プログラミングコードによる実装なくして、モデルの解釈・動作を行うことが出来るようになります。本書は、Executable UML の表記法や仕様を理解するのにとても分かりやすいと思います。現時点で、Executable UML に関する和書が少ないということも事実ですが、とりあえず本書を理解できれば Executable UML の基本は完璧だと思います。

目次

目次を見ると分かりますが、UML の解説書と見間違うほどです。UML を読めるだけの基本知識があるほうが読み進めやすいと思います。

  1. 序論
  2. Executable UMLの利用
  3. ドメインとブリッジ
  4. ユースケース
  5. クラスと属性
  6. 関係と関連
  7. クラスのアクション
  8. 制約
  9. ライフサイクル
  10. オブジェクト間の通信
  11. オブジェクト間の同期
  12. ライフサイクルの利用法
  13. 関係の動的変化
  14. ドメインの動的振る舞い
  15. ドメインの検証
  16. モデルの管理
  17. 複数ドメインの結合
  18. モデルコンパイラ

Executable UML の利用

Executable UML の目的は 「完全な製品を組み立てずに、問題解決を試作する方法を提供すること」です。これは、モデルを書くことで動作検証を行えるということを意味しています。つまり、実際にプロトタイプや擬似コードを書くことなく、モデルのみでソフトウェアのテストが可能になると言うことです。

考え方自体は、とてもすばらしいものだと思います。プログラミング言語に依存せずにソフトウェアがテストできると言うことは、どんなプラットフォーム上でも同じソフトウェアが作成可能になります。しかも、テスト済みのモデルであれば、モデルから自動生成したコードをそのままソフトウェア成果物として納品することも可能になるはずです。

モデルの検証は2種類の方法があります。静的検証と動的検証です。

静的検証
静的検証はモデルコンパイラが行う構文検査のようなものです。モデルが解釈可能かどうかを検証します。
動的検証
動的検証は、実際の値を使用してモデルを検証するものです。検証するためには「実際のオブジェクト」と「シナリオ」が必要になります。テストシナリオは、モデルごとに作成する方が向いているが、ユースケースには一致している必要があります。

作成したモデルは、モデルコンパイラを使って実装に変換します。モデルコンパイラの種類によって実装コードが変わるため、パフォーマンスのよいものを選択する。よいパフォーマンスが得られない場合は、その部分だけ手でコードを書き、コンパイラによって吐き出されたコードとリンクする措置をとる。

本書の総括

全体的に、UML の解説書のような印象を受けました。実行可能なUMLと言っても、結局 UML (モデリング言語) ですから自然なことかもしれませんが。アジャイルプロセスを好む人は、モデリングはコミュニケーションの手段だと考えていると思います。そういう意味では、Executable UML はとっつきにくい分野かもしれないし、なにより胡散臭い感じがしていました。

本書を読んだ後、モデル駆動の開発は近い将来ありえるかもと言う気持ちになりました。確かに、ツール依存という点は否定できませんが、大きな期待はもてるかと思います。

Executable UML は厳密なセマンティックスを要求するので、通常の UML よりも制限や制約が多いです。それでも、UML を書く上で参考になる部分が結構あるので、読んで損はないはずです。

今後、「モデリング」の重要性がさらに高まると、MDA (モデル駆動アーキテクチャ) のようなモデル主体の開発が多くなってくるかもしれません。それには、Executable UML のような厳密な表記法が欠かせません。将来を見越して早くからこういった知識を蓄えておくことは、よいことではないでしょうか。本書は、Executable UML を理解するには、とても参考になり、とりあえず持っていれば何かあったときにも怖くないです (何かってなんだ・・・ (^^; )

覚書き

ドメイン

ドメインとは
ドメインとは、特徴的な規則と方針に従って振る舞う概念的エンティティによって形成される、自立した、現実的、仮想的、抽象的な世界である。

システムに対して最初に行う作業は、システム全体を構成するいくつかのドメインを識別することです。概念的エンティティはたった一つのドメインの中に定義される。例えば、注文、発注、顧客、会社といった概念エンティティは物流ドメインの一部である。

異なるドメインにおけるエンティティは、たとえ同じ名前だとしても別の概念を意味していなければならない。また、ドメイン内の概念エンティティは同じドメイン内の別の概念エンティティの存在が必要になる。例えば、注文は、顧客がいなければほとんど意味を成さない。ドメイン内の概念エンティティは、別ドメインの概念エンティティの存在を必要としない。

ドメインをモデル化するときは、そのドメインについての用語だけを使う。ドメインのモデルは、Executable UML において重要な意味をもつ。ドメインの振る舞いが Executable UML におけるモデル群になるからである。Executable UML モデルを構築するには、要件を理解して収集することが必要。そのために、ユースケースをつかう。

参考

  • Executable UML の実践的な使い方を解説した本です。
  • モデル駆動アーキテクチャ (MDA) に関しての導入ガイドです。概念がよく分かります。
  • モデル駆動アーキテクチャ (MDA) の技術的側面を解説しています。結構難しいです。