DDD四色建模法

四色建模法来源于Peter Coad的 《Java Modeling In Color With UML》,中文版:《彩色UML建模》(末尾处有书籍领取方式,仅用于学习)

Peter Coad和Mark Mayfield奠定了4种架构型(一种形式,所有的东西都或多或少地遵守)的早期工作。

4种架构型 Archetype:

  1. 时刻时段 MomentInterval :一个时刻或一段时间,粉红色表示。
    • 一次销售是在一个时刻完成的——这次销售的日期和时间。
    • 一次租赁发生在一个时间段——从登记入住到归还。
  2. 角色 Role :角色是一种参与方式,它由参与方(人或组织机构)、地点或物品来承担,黄色表示。
  3. 描述 Description :它是“分类目录条目似的”描述,它是一组反复应用的值,它也为所有对应到某个描述的东西提供行为,蓝色表示。
  4. 参与方-地点-物品 PartyPlaceThing :参与方(意味着人或组织机构)、地点或物品是扮演不同角色的人或物,绿色表示。

这4种颜色中每一种都对应一种架构型的特征(属性、链接、方法、插入点和交互),对应的类或多或少都包含了这些特性。

确定一个类的颜色和架构型。
  1. 它是时刻或时段,是出于业务原因或法律原因,是系统需要追踪的东西吗?如果是这样,那么它是粉红色的时刻时段。
  2. 否则,它是一个角色吗?如果是这样,那么它是黄色的角色。
  3. 否则,它是一个分类目录似的描述,包含了一组可以反复应用的值吗?如果是这样,那么它是蓝色的描述。
  4. 否则,它就是绿色的参与方-地点-物品。

客户账户管理系统

许多业务利用账户来追踪客户在给定的业务交易背景下的借款项和贷款项。

客户账户管理以申请为起点,终止于账户交易。

在客户账户管理中,我们建立并维护账户,这样就可以从客户的角度来追踪和呈现正在发生的业务。

时刻时段。 客户账户管理的主要时刻时段包括

  • 客户账户申请(CustomerAccountApplication)。
  • 客户账户交易(CustomerAccountTransaction)。
客户账户申请

客户账户申请组件有一个粉红色的时刻时段: “客户账户申请”

粉红色的**“客户账户申请”** 链接到3个黄色的角色:

  • 客户账户申请者
  • 申请审批者
  • 负责账户的组织机构实体

“客户账户申请” 链接到蓝色的 “客户账户描述” ,表明这次申请对应哪种类型的账户。
也链接到其蓝色的**“客户账户特征描述”**,分别是选择的特征和附加的特性。

对于一个**“客户账户申请” ,它的后续粉红色时刻时段是 “客户账户交易” (通过绿色的 “客户账户”**)。

关键方法:

  1. 创建客户账户申请。
  2. 检查特征的适用性。
  3. 生成账户。
  4. 评估得到的账户的质量。

绿色的**“客户账户” 链接到两个黄色的角色, “客户账户持有者” “负责账户的组织机构实体” ,它也链接到一个或多个蓝色的 “客户账号特征描述”**。

对于**“客户账户” ,它的前驱粉红色时刻时段是 “客户账户申请” ,它的后续粉红色时刻时段是 “客户账户交易”**。

关键方法:

  1. 创建客户账户。
  2. 计算日平均账户余额。
  3. 计算日平均容量。
客户账户交易

“客户账户交易” 有一个粉红色的时刻时段: “客户账户交易”

粉红色的**“客户账户交易” 链接到3个黄色的角色: “客户账户持有者”、“负责账户的组织机构实体”、“作为业务地点的设施” (给定的客户账户事务发生的地点)。它也链接到粉红色的 “客户账户交易明细”**。

“客户账户交易明细” 链接到绿色的 “客户账户”

对于**“客户账户交易” ,它的前驱粉红色时刻时段是 “客户账户申请” ,它的后续粉红色时刻时段是针对该交易的 “会计过账”**。

关键方法:

  1. 创建客户账户交易。
  2. 计算客户账户平均交易金额。

最终生成的完整组件模型如图二:

四色建模是建立在UML基础之上的一种新型建模方式,在建模过程中需要按照4个步骤来完成业务领域的建模工作:

  1. 分析业务流程,确认流程中的关键名词,抽象出业务实体。
  2. 从用例入手,找出其中的红色(时刻时段)。
  3. 找出其中的相关元素。
  4. 细化每一个类的方法和属性。
  1. Peter Coad:《Java Modeling In Color With UML》
四色 建模 用来干什么?在「系统分析」阶段, 四色 原型 不要求必须先有需求才能 建模 ,可以在对业务的熟悉和理解过程中,直接采用 四色 原型分析和表达业务,它可以用于任何了解业务的过程中对业务概念进行抽象和组织。 四色 原型是一种思考工具,就是让系统分析员戴上有色眼镜来看世界,通过把被分析对象分成四大类,来快速发现隐藏的概念并分离职责,将模型对象成为概念内聚、职责单一的对象,它是系统分析过程中最具有意义的思考工具。 四色 建模 有四部分: MomentInterval:淡红色;表示在一刻或者一段时间内发生的一件事 我们软件工程师实际上只在做一件事情,即把现实中的问题搬到计算机上,通过信息化提升生产力。信息化的过程就是从“问题空间”到“解决方案空间”的过程。然而,“问题空间”和“解决方案空间”之间有一... 命名:模型、结构特征、行为特征、场景(及其规约)。释义:模型,描述事物为一组时间函数,蕴藏了与事物相关的所有事实。特征,从模型上剥离的一组时间函数。特征分为两大类,一类是结构特征,一类是行为特征。场景,模型凝聚相应的特征持续一段时间,描述一段时间内与模型相关的事实。场景中隐藏的一些规则、约定,称之为场景规约。用 :一笔一纸,一横一竖,四象顿生。一象画景,三象画物,物在景中。二象画形,四象画神,形神兼备。万象入画,浑然一体,一目了然。注:第一象限画景,即描述场景;第三现象画物,即描述模型。第二现象画物之形,即描述模型的结构特征;第四象限画物之神,即描述模型的行为特征诸子百家:如果你熟悉 四色 原型, 数据架构重要的输出是数据 - 实体关系图,简称 ER 图。ER 图中包含了实体(数据对象)、关系和属性 3 种基本成分。ER 图可以用来建立数据模型。如何准确的建立产品的数据模型,需要分解出业务需要什么样的数据。数据域的分解过程是站在业务架构的基础上,对业务域进行模型分析的过程。说起业务 建模 ,大家很快会想到领域模型这个概念。这里的思路是通过 领域建模 来逐步提取系统的数据架构图。 说到领域模型,这里采用 四色 原型 进行业务模型的抽象。在进行 四色 模型分析前,我们先了解下 四色 模型的一些基本概念。 四色 模型,顾名思 在之前的文章中已经介绍了 DDD 相关的概念模式, DDD 相关的业务技术架构,但是我们还没有找到一个核心的抓手去实践 DDD DDD 的一个核心本质就是对业务 建模 ,或者 领域建模 。说的很简单,但是做好确实很难,一个需求过来意淫几个实体对象就差不多解决了。深入看,全局看只在脑海中进行的 建模 实际上并不一定正确和稳定。因此我们需要找到正确的方 帮助对业务领域进行分析,得到 建模 结构,共享 建模 成果。 二、 四色 建模 2.1 起源&概念&要素 关于 四色 建模 的概念我们可与追溯到90年代,起源于 四色 原型。 四色 作者:徐昊 2011/11/07 领域建模 有很多种方 ,对于同样的问题域使用不同的 建模 手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证 建模 的正确性? 这听起来是个合理的质疑,但实际上却不是那么有道理。首先我们需要明白 建模 的目的是什么... 一般的需求,我们利用用例图就可以表达清楚了,如果再复杂些,我们可能还得再配合序列图、状态图等加于说明。但是,在非常复杂的业务逻辑中,怎么样才能找出它们的联系?而且还能更好地拥抱OO(面向对象),OO的优点不是我们本文的话题。这里笔者介绍一种很灵活很实用的分析方 -- 四色 原型图,也叫彩色 UML 。(图片引自JDON的BANQ大师之手)四个元素的介绍:moment-interval:粉红色的时刻—时段:一个时刻或一个时段,您需要追踪它或做某事,通俗地说其实就是关键动词,就是服务,很容易在这里面抽象出事物逻辑类。例如:计算、补偿、结算等。mi-detail:通常,粉红色的时刻时段会有一些组成部分,称为 Richie Sometimes at night when I look up at the stars, and see the whole sky just laid out there, don't you think I ain't remembering it all. I still got dreams like anybody else, and ever so o...