color uml 的困惑

前两天刚开始看color UML 觉得很有趣,完成部分的理论学习后就开始找一些简单的例子来看

看了论坛里面的几个帖子后发现自己的想法和别人的存在一定的差别 对于四种颜色的认识好像差别也很大

首先我来阐述一下我对于color UML的理解:

Party扮演Role参加MI;而当MI中涉及到Place以及Thing时同样要扮演相应的Role之后才能介入MI,也就是说MI只与Role交互。

在看到banq大大对于Description解释之后我发现理论上我能理解,例子模型感觉和理论的差别很大,可能是因为banq喜欢用聚合的手段来分解继承关系以及对于DDD的理解而把 PPT归结到了实体,Description归结到了值对象,然后形成1个PPT自身可能只包含了标识符,其他全分解成了聚合对象,比如1辆实例车包含了1个车的标识符和1个车的值对象,但这里有个很大的问题就是Description是用来分类查找某个PPT的,Description与PPT之间是多对多的关系,而在DDD中值对象一般被理解为不变的,但这里的Description是运行时变化的。

然而在我对color UML的原型进行DDD的转换却是这样的:

在我看来 PPT 根本是业务之外的东西,因为在进入我的业务模型中PPT必然要对应相应的Role 因此 Role才是真正的实体,而PPT顶多能成为业务中的值对象,而Description则是DDD中的工厂和仓储。

可问题又来了,通过对于DNC以及那张简单的例子图来看 PPT与Role是一对多的关系,在PPT中存放了Role的实例,而对于我的理解来说PPT是值对象 这样又出现了Description与PPT一样的矛盾。

不知哪位大大能为我解惑

[该贴被dArtist于2011-04-06 15:02修改过]

[该贴被admin于2011-04-06 15:22修改过]

四色原型比DDD更加前端和抽象,是其父集,两者不存在严格的一对一关系,我之所以这样对应,也是说明这两者从分析和设计基本有一个很自然的对接,OOA分析用四色,接下来一步OOD用DDD,两者比较自然,但实际项目中复杂,不能用这个公式套用。

我也不赞成去探索找出两者的一个对应关系,没有必要,因为DDD还是比较注重静态属性,动态性不够,而四色原型中MI就很动态,这点符合SOA,或面向函数范式,可以认为四色原型=SOA功能+DDD,四色原型分析需求以后,就有两个方向,以MI活动组件为核心的服务架构;或者以PPT绿色或des为核心的类封装性质的领域模型架构。

这篇文章也在谈这些关系,参考:OOD vs SOA