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によってドメイン・モデルを操作するコンポーネントを実装し、このコンポーネントをサブシステムとして仕上げて、ドメイン・ティアに配備します。

アプリケーション・ティア

複数の問題領域から複数のドメイン・サブシステムが作成されますが、これらを束ねてアプリケーションとして仕立てるのがアプリケーション・モデルの役割です。

ドメイン・モデルと同様に分析モデルのアプリケーション・モデルと設計コンテキストをパラメタとして、CozyによりScalaベースの設計モデルが生成されるので、このコードに肉付けしていきます。

基本的には、CBDによってアプリケーション・モデルを操作するコンポーネントを実装し、このコンポーネントをサブシステムとして仕上げて、アプリケーション・ティアに配備します。

プレゼンテーション・ティア

プレゼンテーション技術は、技術の進歩も早く、流行の変化も大きいため、SimpleModelingの直接のターゲットにはしておらず、連携方法を定義する方式になっています。

アプリケーション・モデル、ユースケース・モデル、UIコンテキストを入力にCozyがUIシナリオを生成します。

UIシナリオ生成以降の作業はUI開発側に委ねます。 この作業にはAI支援が有効に働くでしょう。

Expansion from Analysis Models
Figure 1. Expansion from Analysis Models

まとめ

SimpleModelingは、CMLによる分析モデルを中核とし、そこから概念モデル・設計モデルを展開することで、ソフトウェア開発全体を一貫して支援します。

ユースケース・モデルを起点としたモデル変換と、AIによる実装補助を組み合わせることで、分析・設計・実装のギャップを縮め、継続的で理解しやすい開発スタイルを目指しています。