astah*の長年のユーザーであり、「Friends of astah*」のメンバーでもある手嶋高明様が、エリック・エヴァンス著『ドメイン駆動設計(Domain-Driven Design: Tackling Complexity in the Heart of Software)』に登場する貨物配送システムを題材に、その構造と振る舞いをUMLで図示されました。
作成されたUML図を、ご自身で開発されたm+プラグインのダイアグラムマップを使って公開されたので、ここでご紹介させていただきます。
m+プラグインとは?
m+プラグインは、モデル駆動開発を支援するための拡張ツールです。
UMLモデルからのコード生成をはじめ、構造ダイアグラム、有向グラフ、ダイアグラムマップ、リレーションマトリックスの自動生成、さらには追加ドキュメントの作成まで、6つの主要機能を備えています。これらの機能により、モデルの可視化や分析を通じて、設計の理解を深め、効率的かつ効果的な開発を実現します。
※対象エディション:astah* professional , UML
m+プラグインの詳細は下記より
DDD本のサンプルアプリケーションのUML図
手嶋様が作成された、エリック・エヴァンス著『ドメイン駆動設計(Domain-Driven Design: Tackling Complexity in the Heart of Software)』に登場する貨物輸送システムのDDDサンプルのUML図を一部ご紹介します。全図をご覧になりたい方は、手嶋様のGithubリポジトリuml-diagram-for-ddd-example-in-evans-bookをご参照ください。なお、これらの図は、GitHub上で公開されているdddsample-coreプロジェクトのソースコードをもとに作成されたものです。
UMLで視覚化することにより、ドメイン駆動設計における戦略的設計と戦術的設計がどのように実装されているのか、そしてその背後にある設計の仕組みをより深く理解することができます。
・ユーザーとシステムのインタラクション
このシーケンス図は、ユーザーとシステムの主なやり取りを示しており、以下の2つのユースケースに対応しています。
1. 貨物の取り扱い状況の追跡
2. 新規貨物の予約と配送ルートの割り当て

・ドメインモデルの概要
このクラス図は、ドメインモデルの基本要素とその関係を示しています。

・ABC123貨物のドメインオブジェクト
このオブジェクト図は、基本的なドメインオブジェクトとその関係を示しています。特に、サンプルデータとして用意された貨物「ABC123」に関するスナップショットを表しています。

・全体構造
このクラス図は、貨物輸送システムの全体構造を示しており、BookingコンテキストとTransport Networkコンテキストの2つで構成されています。
実装にはSpring Boot / MVC / Data JPA などのSpringプロジェクトが使われています。図は主に要素間の関係の理解を目的としており、すべての実装を反映しているわけではありません。

・振る舞いのダイアグラム
初期化、貨物追跡、貨物予約、ルート提案と割り当てのシナリオを示す通信図。
・有向グラフ
この有向グラフは、BookingコンテキストとTransport Networkコンテキストに関連する構造要素(クラスなど)とその関係を表しています。
さまざまなレイアウトで要素間の関係を視覚化でき、複雑に入り組んだエッジに驚かれるかもしれません。しかし、これは現実をよく反映しており、適度な規模のアプリケーションでは関係がこれほど複雑になるのが普通です。

m+プラグインを使ってみよう
ドメイン駆動設計(DDD)を学び、実践したい方や、UMLを通じてシステム設計の理解を深めたい方にとって、手嶋様のプロジェクトは、非常に有用な資料です。特に、astah*で作成されたUML図を、m+プラグインを使って簡単にWebブラウザ上で共有できる点は大きな魅力で、設計レビューやチーム間での認識共有を効率化するのに非常に便利です。
さらに、m+プラグインは無料で利用可能なため、手軽に導入し、その利便性を体感いただけます。
m+プラグインを試してみたい方や、ドメイン駆動設計に興味のある方は、ぜひ以下のリンクからご覧ください!




