在讨论四色原型之前,我想先狗胆讨论下什么是我所认识的“世界”?
我觉得世界由物质及其相互作用组成。“物质”是不以人的意识为转移的客观存在;而“相互作用”则是我们平时所理解的各种活动,比如人与人之间的交谈,打架,等等。还有一点需要特别分析一下,那就是“何为客观”?我觉得客观是一个相对的概念,可以这样简单的理解:如果A没有修改B的权利,也就是说B不以A的意识为转移,则认为B是A的客观存在;反之,则认为B不是A的客观存在。
举个例子,一家软件公司为一家金融机构做一个金融领域的软件。该金融软件需要满足一些和金融领域相关的一些业务规则。那么业务规则相对于这家软件公司来说是否是一个客观存在呢?回答是肯定的。为什么,因为这家软件公司无法修改该业务规则,也就是说,金融行业的业务规则是不以软件公司的意识为转移的;那么金融行业的业务规则在任何情况下就一定是客观存在了吗?不是!因为金融行业的业务规则是由全人类想出来的,只要全人类说我们要修改这个业务规则,那它就可以被修改,也就是说金融行业的业务规则相对于全人类来说是主观的,而不是客观的。因为全人类可以修改该业务规则。
四色原型是什么?我觉得它是帮助我们分析物质世界中各种活动的一种科学的方法论。关于什么是物质世界我上面已经讨论过了,下面看看我所理解的四色原型是什么样子的:
举个例子,有一个人叫张三,如果某个外星人问你张三是什么?你会怎么说?可能会说,张三是个人,但是外星人不知道“人”是什么。然后你会怎么办?你就会说:张三是个由一个头、两只手、两只脚,以及一个身体组成的客观存在。虽然这时外星人仍然不知道人是什么,但我已经可以借用这个例子向大家说明什么是“Description”了。在这个例子中,张三就是一个PPT,而“由一个头、两只手、两只脚,以及一个身体组成的客观存在”就是对张三的Description,头、手、脚、身体则是人的本质的不变的共性的属性的集合。但我们人类比较聪明,很会抽象总结和命名,已经把这个Description用一个字来代替了,那就是“人”。所以就有所谓的张三是人的说法。
用一句话来概括四色原型就是:一个什么什么样的人或组织或物品以某种角色在某个时刻或某段时间内参与某个活动。 其中“什么什么样的”就是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