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