代码改变世界

【转】四色原型图的思考

2011-07-14 07:52  bugfly  阅读(629)  评论(0编辑  收藏  举报

此文转自http://yananay.iteye.com

学习四色原型图有一段时间了,磕磕碰碰一路走来,更有理解严重偏差的时候,不过近日总算有所领悟了,把一些想法写在这里,供大家共同讨论。

不过说到四色原型图,大家更愿意一起比较的是“领域驱动设计”,简称 DDD,因此这个讨论也就把 DDD 掺合在一起了。

(关于四色原型图的信息,大家可以自行google,有一个英文版的pdf文件。)

1、Moment-interval

这个图被作为是四色原型图中最重要的一个部分。我想也是最难理解的一个图。原文对它的定义是:某一个时刻,或者某一段时间内发生的业务。这种定义非常非常的抽象,导致我们在使用四色原型图去分析业务的时候,很难确定到底什么是 MI。

那么,到底什么是 MI 呢?去除抽象的定义,以及其他挠头的文字,揭开它的本质,其实它就是业务领域的关键性动词

例如,销售,报告,结算,确认订单 等等,这样关键性的动词,其实都表示一个 MI。

所以,我们也就知道如何发现一个 MI了,在一堆堆的需求文字中,我们要找到关键性的动词,那么它就是 MI,也就是当前这个业务的核心了。围绕着这个 MI,我们会继续发现 ppt,role,desc 等等。所以 MI 神奇吗?一点都不神奇。深奥吗?一点不深奥。

值得一提的是,虽然第一次找到了几个 MI,再经过分析后,很可能这些 MI 会合并到一起--这根据你的需求来设计。

另外一个网上流传甚广,害人不倦的信息是:很多人都说 MI 相当于 DDD 中的 service。这是绝对的误人子弟!通过上面的分析,我们已经知道 MI 必然包含业务的关键性动作,而这类关键性动作,通常是作为领域模型的一个方法,很少会作为 service 的方法。所以,说 MI 相当于 DDD 中的service是绝对的错误,正确的说来,应该是 MI 可能是 DDD 中的 service,更可能是 DDD 中的领域模型。

2、ppt(Party, Place, Thing) 和 role

对于 ppt ,大家都有一个共识,就是 ppt 一般相当于领域模型,而寻找ppt的方式也无外乎就是归纳名词的方式。不过,之前我们一定会先找到 MI,所以这个 ppt 也是围绕着 MI归纳出来的。

Role 是个迷惑大家的东西。因为一提到 role,大家基本都联想到“人”之类的有生命的东西。可是在四色原型里,Role也可能是没有生命的物体。例如,车是一个 ppt,坏掉的车则是车的一个role,良好的车也是车的一个role。虽然我们通常会认为这是车的两个状态,但是这里我们将它设计为车的两个Role。

3、desc
desc这个图的定义是类似目录的结构,起到描述性的作用。大家的共识是它相当于领域模型的值对象----我的理解也就达到这个程度,我觉得用值对象来类比它非常合适,容易让人理解。

4、四色原型,DDD 到底应该选择哪个?

四色原型其实正如其名字一样,是一种分析模式,而不是设计模式。
所以,分析阶段采用四色原型,而在设计阶段采用 DDD 应该是可以的。

其实四色原型也没有什么特别深奥的地方,面对需求文档,我们先找关键性动词,围绕它去找关键性名词,理清业务的逻辑。这是我们常用的思维方式,不过四色原型将这个过程更加科学化,并且用图的方式让这个过程更加清晰。

打个比方:以前我们分析需求是凭感觉,现在则是遵循一定的步骤做。

所以,需求分析,不用四色原型也ok,但是使用四色原型,会更加顺利和清晰。