Evans 书中 DDD 示例的 UML 图

banq


该Github项目使用 UML 图来展示 Eric Evans 著作(领域驱动设计:解决软件核心复杂性)中 DDD 示例(货物运输系统)的结构和行为。这些图基于GitHub 上dddsample-core项目的源代码创建。这些图旨在帮助我们理解该示例如何实现 DDD 的战略和战术设计及其运作机制。

如果您想深入了解 DDD 理论,可以参考 Evans 的书。如果您想了解实现细节,可以查看 dddsample-core 项目的源代码。此外,如果您想理解这些图背后的 UML 模型,可以使用建模工具Astah Professional/UML/Viewer打开模型文件 (ddd-example-in-evans-book.asta) 。

用户-系统交互

此序列图展示了用户与系统之间的关键交互,并参考了其他图表。这些交互展示了两个用例:
(1) 跟踪指定货物的处理;
(2) 预订新货物并为其分配运输路线。

领域模型概述
此类图展示了领域模型的基本元素及其关系。领域模型元素的布局基于 dddsample-core 项目中的图表。属性和操作已隐藏,以便于您更好地理解元素及其关系。如果您想查看它们,请使用建模工具 Astah 打开模型文件 (ddd-example-in-evans-book.asta)。

“ABC123”货物的域对象
此对象图展示了基本领域对象及其连接。特别地,它展示了与预设为示例数据的货物对象“ABC123”关联的对象快照。货物“ABC123”正从香港前往赫尔辛基,目前抵达纽约港,卸货已完成。

总体结构
该类图展示了货物运输系统的整体结构:它由两个上下文组成:预订上下文和运输网络上下文。

该系统使用 Spring Boot / MVC / Data JPA 等 Spring 项目实现。请注意,此图重点关注可能需要考虑的元素和关系,并不反映整个实现。属性和操作也被隐藏,以便于理解元素及其关系。如果您想查看它们,请使用建模工具 Astah 打开模型文件 (ddd-example-in-evans-book.asta)。

网友:
以前做过很多这种系统建模的活儿(就是给系统开发工具和做内部测试),现在遇到需要搞懂或者向别人解释系统某个部分的时候,我还是会用这个方法。
这儿有个小挑战能帮咱们看透本质:试试从图表里找出错误。
这事儿可比你以为的难多了!因为就算你懂这些符号和规则,想把一个专业领域说明白也得堆满信息量。
通常你得先自己恶补一堆专业知识,或者拉着行业专家给你掰开揉碎讲明白,这才有可能发现错误。
有些错误能要命:少画一条线、连错两个点、标错个符号,都可能引发大地震。
比如:活儿全得返工、项目直接黄掉、代码写得比预期慢十倍,还可能因为设计烂或者埋着安全漏洞,导致后期要填的坑多出十倍。
好多人会犯个傻——把规范图表当"花架子"用,就像做销售PPT那样随便挥挥手,觉得每个概念只要能指给客户看就行。
醒醒吧!要是你家程序员和行业专家全靠销售汇报那套模糊说辞来讨论系统,那根本就是在自己骗自己!