四色原型总结
Aaron
1. 四色原型
1.1. 时刻-时段原型(Moment-Interval Archetype)
表示事物在某个时刻或某一段时间内发生的。
使用红色表示。简写为MI。
1.2. 描述原型(Description Archetype)
表示资料类型的资源,它可以被其它原型反复使用,并为其它原型提供行为(用作方法的参数)。
使用蓝色表示。简写为DESC。
1.3. 参与方-地点-物品原型(Part-Place-Thing Archetype)
表示参与扮演不同角色的人或事物。
使用绿色表示。简写为PPT。
1.4. 角色原型(Role Archetype)
角色是一种参与方式,它由人或组织机构、地点或物品来承担。
使用黄色表示。简写为Role。
2. 原型提炼
2.1. MI
MI就是一段时间内发生的业务,包括与业务相关的数据以及行为(方法)。
MI类似DDD中的Service,但与DDD的Service不同之处在于,MI是充血模型,Service是失血模型。
比如“一次销售”就是一个MI,“一次销售”是一段时间(从开单到审批)内的业务活动。
2.2. PPT
PPT是指一个具体的,可以作为单个个体(每个单个个体之间有唯一标识符)被识别、区分出来的对象。
2.3. Desc
Desc是PPT的抽象概念,它是PPT的特性的总结,每一个PPT都属于一个(种)Desc。
比如“一台电脑”就是一个PPT(每台电脑都有唯一编号),而“一个硬盘”也是一个PPT(每个硬盘也有唯一编号)。
但是“硬盘”就是Desc(硬盘是每个硬盘的泛指,也是每个硬盘的类型)。并且硬盘是可以再分类的,IDE硬盘和SCIS硬盘等,也就是说,Desc可以是一个树形结构。
2.4. Role
Role是PPT在参与业务行为时的身份,PPT不直接与MI打交道,PPT必须拥有指定的角色(Role),才能使用MI操作业务。
Role存在的作用是为了隔绝MI直接使用PPT。
2.5. 举例
比如,“人”就是一个Desc,而“亚洲人”、“黄种人”也是一个Desc,亚洲人和黄种人都属于“人”这个Desc的子Desc,即Desc可以是一个树结构。
具体到每一个人的时候,“张三”、“李四”就是一个PPT了。因为张三和李四是独一无二的,他们都有唯一标识符可以被识别、区分(比如身份証号、指纹等,视不同的系统需求采用不同的唯一标识)。
2.6. 总结
如果以PPT为中心,那么以上概念可以总结为:什么东西(人或事物)通过什么方式(身份)进行什么操作(业务)。
即当 PPT是Role时,可以调用MI。例如当张三是学生时,可以去上课。
如果以Desc为中心,那么以上概念可以总结为:什么什么类型的东西进行什么操作(业务)。
即MI调用Desc。例如人都可以睡觉。
规则1:PPT不能直接与MI打交道,它必须通过Role或者Desc才能操纵MI。
为什么要隔绝MI直接访问PPT?
如果MI直接访问PPT会带来以下问题:
1. PPT如果直接参与MI,那么PPT就会拥有MI环境中的属性,比如电脑在维修时必须记录维修结果,在销售时必须记录售价,那么PPT随着MI的增加会不断地膨胀,每增加一种MI,PPT就要修改一次。
2. 两个MI之间业务是完全不同的,PPT中有些属性对某一个MI来说,根本是无用的。例如电脑的价格,对维修来说是无用的。
3. MI直接使用PPT,还会带来MI之间的资料隔绝性问题。有些PPT的属性对某一MI是不允许访问的,如果MI直接使用PPT,那么就无法保密资料。
例如,电脑的折扣可能是保密的,不应该让维修知道。
增加Role之后,上述问题迎刃而解:
每增加一种PPT,就相应地增加一个Role,凡是与此MI相关的属性,都放在Role中。这样既避免了PPT的频繁修改,也避免了资料访问的问题。
可以这么描述Role:只有当事物(PPT)具有某个身份(Role)时,它才拥有与业务(MI)相关的属性(字段和方法)。
4. 特征驱动开发
4.1. 特征
特征是一个具有客户价值的功能。
特征描述的模板:
<action> the <result> <by | for | of | to> a(n) <object>
object表示一个人、地点或物品,即包括角色、时刻时段、分类目录条目的描述。
例如:
Calculate the total of a sale(计算一次销售的总额)。
Calculate the total purchase by a customer(计算一个客户总采购额)。
4.2. 特征集
特征集是一组业务上相关的特征。
特征集描述的模板:
<action><-ing> a(n) <object>
<object> management
例如:
making a product sale(进行一次产品销售)。
5. 为什么需要四色原型分析
一个模块,必须有活动(MI)、参加活动的对象(Role),以及活动资源(PPT),才能组成一个有业务含义的模块。