注意,这篇文章是初学四色原型时的读书笔记,其中不乏错误。时隔一年,在实践中领悟到了四色原型的真正意义,特此修订。可以与后来写的《四色原型札记系列》参照对比。2010年3月27日零时。

 

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可以是一个树形结构。


四色原型总结(优秀)_或事物_02

注意,以上的理解是错误的,正确的理解请参照《四色原型札记(一)》,下图是纠正后的表示:


四色原型总结(优秀)_或事物_03

2.4. Role

Role是PPT在参与业务行为时的身份,PPT不直接与MI打交道,PPT必须拥有指定的角色(Role),才能使用MI操作业务。

 

Role存在的作用是为了隔绝MI直接使用PPT。

2.5. 举例

比如,“人”就是一个Desc,而“亚洲人”、“黄种人”也是一个Desc,亚洲人和黄种人都属于“人”这个Desc的子Desc,即Desc可以是一个树结构。

 

具体到每一个人的时候,“张三”、“李四”就是一个PPT了。因为张三和李四是独一无二的,他们都有唯一标识符可以被识别、区分(比如身份証号、指纹等,视不同的系统需求采用不同的唯一标识)。


四色原型总结(优秀)_直接访问_04

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)相关的属性(字段和方法)。


四色原型总结(优秀)_直接访问_05

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),才能组成一个有业务含义的模块。