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