四色原型图的思考
学习四色原型图有一段时间了,磕磕碰碰一路走来,更有理解严重偏差的时候,不过近日总算有所领悟了,把一些想法写在这里,供大家共同讨论。
不过说到四色原型图,大家更愿意一起比较的是“领域驱动设计”,简称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,但是使用四色原型,会更加顺利和清晰。
以上是我对四色原型的思考,欢迎大家来一起讨论。