欢迎光临汤雪华的博客

一个人一辈子能坚持做好一件事情就够了!坚持是一种刻意的练习,不断寻找缺点突破缺点的过程,而不是重复做某件事情。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

四色原型的学习心得分享

Posted on 2011-03-05 23:38  netfocus  阅读(15925)  评论(12编辑  收藏  举报

在讨论四色原型之前,我想先狗胆讨论下什么是我所认识的“世界”?

我觉得世界由物质及其相互作用组成。“物质”是不以人的意识为转移的客观存在;而“相互作用”则是我们平时所理解的各种活动,比如人与人之间的交谈,打架,等等。还有一点需要特别分析一下,那就是“何为客观”?我觉得客观是一个相对的概念,可以这样简单的理解:如果A没有修改B的权利,也就是说B不以A的意识为转移,则认为B是A的客观存在;反之,则认为B不是A的客观存在。

举个例子,一家软件公司为一家金融机构做一个金融领域的软件。该金融软件需要满足一些和金融领域相关的一些业务规则。那么业务规则相对于这家软件公司来说是否是一个客观存在呢?回答是肯定的。为什么,因为这家软件公司无法修改该业务规则,也就是说,金融行业的业务规则是不以软件公司的意识为转移的;那么金融行业的业务规则在任何情况下就一定是客观存在了吗?不是!因为金融行业的业务规则是由全人类想出来的,只要全人类说我们要修改这个业务规则,那它就可以被修改,也就是说金融行业的业务规则相对于全人类来说是主观的,而不是客观的。因为全人类可以修改该业务规则。 

四色原型是什么?我觉得它是帮助我们分析物质世界中各种活动的一种科学的方法论。关于什么是物质世界我上面已经讨论过了,下面看看我所理解的四色原型是什么样子的:

1. 时刻-时间段原型(Moment-Interval Archetype)
表示在某个时刻或某一段时间内发生的某个活动。使用粉红色表示,简写为MI。
 
2. 参与方-地点-物品原型(Part-Place-Thing Archetype)
表示参与某个活动的人或物,地点则是活动的发生地。使用绿色表示。简写为PPT。
 
3. 描述原型(Description Archetype)
表示对PPT的本质描述。它不是PPT的分类!Description是从PPT抽象出来的不变的共性的属性的集合。使用蓝色表示,简写为DESC。

举个例子,有一个人叫张三,如果某个外星人问你张三是什么?你会怎么说?可能会说,张三是个人,但是外星人不知道“人”是什么。然后你会怎么办?你就会说:张三是个由一个头、两只手、两只脚,以及一个身体组成的客观存在。虽然这时外星人仍然不知道人是什么,但我已经可以借用这个例子向大家说明什么是“Description”了。在这个例子中,张三就是一个PPT,而“由一个头、两只手、两只脚,以及一个身体组成的客观存在”就是对张三的Description,头、手、脚、身体则是人的本质的不变的共性的属性的集合。但我们人类比较聪明,很会抽象总结和命名,已经把这个Description用一个字来代替了,那就是“人”。所以就有所谓的张三是人的说法。

4. 角色原型(Role Archetype)
角色就是我们平时所理解的“身份”。使用黄色表示,简写为Role。为什么会有角色这个概念?因为有些活动,只允许具有特定角色(身份)的PPT(参与者)才能参与该活动。比如一个人只有具有教师的角色才能上课(一种活动);一个人只有是一个合法公民才能参与选举和被选举;但是有些活动也是不需要角色的,比如一个人不需要具备任何角色就可以睡觉(一种活动)。当然,其实说人不需要角色就能睡觉也是错误的,错在哪里?因为我们可以这样理解:一个客观存在只要具有“人”的角色就能睡觉,其实这时候,我们已经把DESC当作角色来看待了。所以,其实角色这个概念是非常广的,不能用我们平时所理解的狭义的“身份”来理解,因为“教师”、“合法公民”、“人”都可以被作为角色来看待。因此,应该这样说:任何一个活动,都需要具有一定角色的参与者才能参与。

用一句话来概括四色原型就是:一个什么什么样的人或组织或物品以某种角色在某个时刻或某段时间内参与某个活动。 其中“什么什么样的”就是DESC,“人或组织或物品”就是PPT,“角色”就是Role,而”某个时刻或某段时间内的某个活动"就是MI。 

我觉得世界由很多的物质及其相互作用组成,而我们平时所说的软件则是一个由我们人类根据主观意识设计出来的对一个客观世界的一个虚拟映射。比如我们在做一个图书管理系统时,会分析需求,需求来自于客观世界。我们会将需求分析的结果用代码来实现。所以,我觉得因为世界由物质及其相互作用(即活动)组成;那么需求就是由虚拟的物质(OO中的对象)和虚拟的物质之间的相互作用(OO中的对象之间的交互)组成。所以可以引导出:当我们要设计一个软件时,主要的任务就是要弄清楚该软件由哪些对象组成,以及由哪些活动组成,并且重点应该是要分析出有哪些活动,一切设计的最原始需求都应该以为了完成某个活动为目标。那么该如何来理解和分析这些活动呢?比如假设一个图书管理系统中有100个活动,只要实现了这100个活动,那这个系统就自然完成了。那么如何用科学的方法来分析这些活动呢?答案之一就是我们可以用上面提到的四色原型的分析方法来分析。即我们总是可以用这样的方法来分析每一个活动:一个什么什么样的人或组织或物品以某种角色在某个时刻或某段时间内参与某个活动。

当我学习了四色原型后,虽然我不能确定它一定是科学的正确的认识世界的方法论,但至少可以让我在分析软件需求时有一种可选择的方法可以参考。而这已经够了,因为之前我根本没有任何方法可以参考。 接下来我准备学习DCI架构,一旦学的差不多了之后,就会用这两个新的武器来分析和设计一个论坛。分析论坛的业务逻辑用四色原型来做,而设计则用DCI架构来做。相信这会是我近期的一个正确的并且有意义的目标。

以下是关于四色原型的一些学习资料,仅供大家参考:

http://www.jdon.com/mda/archetypes.html 

http://www.jdon.com/mda/archetypes2.html 

http://www.cnblogs.com/ego/articles/1384212.html 

http://knol.google.com/k/object-modelling-in-colour#Class_Archetypes 

http://product.china-pub.com/209160