SimpleModelingの運用イメージとモデル展開
CML(Cozy Modeling Language)で作成した分析モデルから、分析モデル・アップ・ダウンによる概念モデル、設計モデルの生成を経ての最終的な運用イメージです。SimpleModelingでは、議論を具体的にするために開発環境、実行環境のリファレンス・モデルを定め、このリファレンス・モデルを対象にSimpleModelingでの具体的な手順を考えています。(リファレンス・モデルの内容は順次、紹介していく予定です。)
3ティア・モデル
システム・アーキテクチャには以下の3ティア・モデルを採用しています。
-
プレゼンテーション・ティア
-
アプリケーション・ティア
-
ドメイン・ティア
各ティアはサブシステムとしてモデル化され、マイクロサービスとして配備・運用されるのが基本イメージです。
ただし、SimpleModelingはCBD(Component-Based Development)による開発であり、最近の用語法ではモジュラー・モノリス(Modular Monolith)を指向しているので、アプリケーション・ティアとドメイン・ティアを統合したマイクロサービスを配備して運用するという可能性もあります。
分析モデル
分析モデルは以下の3つのモデルから構成されます。
-
ドメイン・モデル
-
アプリケーション・モデル
-
ユースケース・モデル
ドメイン・モデルは、システムが扱う問題領域の本質的な構造とルールを記述します。
アプリケーション・モデルは、ユースケースの実行に必要なアプリケーションサービスやその責務・オペレーション、ドメインの状態遷移を記述します。
ユースケース・モデルは、アクターの目的とそれに対応するシステムの振る舞いをモデル化します。 SimpleModelingはユースケース駆動のアプローチを採用しており、このモデルを中核として分析モデルを構成します。
ユースケース・モデルはそれ自体はソースコードの生成の入力モデルにはなりません。 ユースケース・モデルは、アプリケーション・モデル、ドメイン・モデル作成の元ネタになるとともに、それぞれの整合性を保つ役割をになっています。
SimpleModelingではビジネス分析については、ニュートラルな立場をとっており任意のビジネス分析手法と連携できる構成になっています。
連携の際の核となるモデルがユースケース・モデルです。
ビジネス分析の結果をCMLによって分析モデルのユースケース・モデルとドメイン・モデルとして記述することで、ビジネス分析の結果をアプリケーション開発に取り込むことができます。
分析モデルからの展開
分析モデルは分析モデル・アップ・ダウンによって上下2方向に展開します。
-
概念モデル
-
設計モデル
概念モデル
概念モデルは以下の目的で使用されます。
-
アプリケーションが扱う問題を概観
-
非技術系のステークホルダーと情報共有
図では代表的な成果物を挙げています。
-
用語集
-
アクター・ゴール・リスト
-
ユースケース図(UML)
-
クラス図(UML)
-
コンポーネント図(UML)
ユースケース図はアクター・ゴール・リストをオブジェクト・モデルとして図示したものです。全体像を外観するのに適しています。
クラス図は用語集で定義したドメイン・オブジェクト間の関係を図示します。
コンポーネント図はアプリケーション・モデルやドメイン・モデルを一定の基準で切り出した、サブシステムやコンポーネントの関係を図示します。 概念モデルとしては、アプリケーションのシステム構成というよりは境界化コンテキスト(Bounded Context)という扱いを意図しています。
設計モデル
設計作業分野では分析モデルから以下のティアをターゲットにした設計モデルを作成します。
-
ドメイン・ティア
-
アプリケーション・ティア
-
プレゼンテーション・ティア
ドメイン・ティア
ドメイン・ティアをターゲットにしたドメイン・モデルの設計モデルを作成します。
ドメイン・モデルの設計モデル生成時には分析モデルのドメイン・モデルに加えて設計コンテキストをパラメタとして与えます。
設計コンテキストには、実行プラットフォーム、品質属性などが定義されています。
CozyによってScalaベースの設計モデルが生成されるので、このコードに肉付けをしていきます。
基本的には、CBDによってドメイン・モデルを操作するコンポーネントを実装し、このコンポーネントをサブシステムとして仕上げて、ドメイン・ティアに配備します。