四色原型总结


  1. 四色原型
    1.1. 时刻-时段原型(Moment-Interval Archetype)
    表示事物在某个时刻或某一段时间内发生的。



使用红色表示。简写为MI。



1.2. 描述原型(Description Archetype)
表示资料类型的资源,它可以被其它原型反复使用,并为其它原型提供行为(用作方法的参数)。



使用蓝色表示。简写为DESC。



1.3. 参与方-地点-物品原型(Part-Place-Thing Archetype)
表示参与扮演不同角色的人或事物。



使用绿色表示。简写为PPT。



1.4. 角色原型(Role Archetype)
角色是一种参与方式,它由人或组织机构、地点或物品来承担。



使用黄色表示。简写为Role。



  1. 原型提炼
    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)相关的属性(字段和方法)。




  1. 特征驱动开发
    4.1. 特征
    特征是一个具有客户价值的功能。



特征描述的模板:



the <by | for | of | to> a(n)



object表示一个人、地点或物品,即包括角色、时刻时段、分类目录条目的描述。



例如:

Calculate the total of a sale(计算一次销售的总额)。

Calculate the total purchase by a customer(计算一个客户总采购额)。



4.2. 特征集
特征集是一组业务上相关的特征。



特征集描述的模板:

<-ing> a(n)

management



例如:

making a product sale(进行一次产品销售)。

5. 为什么需要四色原型分析
一个模块,必须有活动(MI)、参加活动的对象(Role),以及活动资源(PPT),才能组成一个有业务含义的模块。

Category architect