域建模与用例建模:孰先孰后?
早年用OOA&D的方法,一上来就找对象。甚至从一篇用户提供的文档中划出名词,作为初始对象。UML出来后,Jacobson的use case则成为一个主要的部分。记得我刚开始用的时候,那时没有Rose这中工具,只是把以前的业务功能这个概念与use case作简单的对接,就大摇大摆地走向了UML,感觉也很好。
但后来许多接触UML的人,都是从Rose这中工具开始的。这个工具,一开始就教你捕获use case,搞用例模型,强调用例驱动。但我对此则常有疑惑,如果域对象都没有搞清楚,use case又如何能明确呢?所以,我经常采用一种非正规的方法,在域对象和use case之间走钢丝,根据实际业务的情况,那种模型容易建立就先作那一种,只是要注意在不断迭代中确保这二个模型之间的一致性。
但在Booch、Jacobson和Rumbaugh这三位创始人的表述中,却很少有类似的方法论指导,RUP也显然没有明确这个问题。这是我把UML谓之写字的缘由。但我们其实需要写诗。 最近看到一本好书,Use Case Driven Object Modeling with UML:A Practical Approach(已有中文译本),给出了一种“写诗”的方法论:
与目前流行的许多UML资料大多关注UML的9种图不同,这本书则把用例模型与域模型作为主模型,其他的图则用来精化这二个模型。书中强调用例模型是通过域模型的共同合作而开发的,在了解用户实际上将要做什么之前,不要编写用例。这是非常符合我们实用UML的实际经验的。无怪乎书的付标题为:一种实践方法。
这个方法还可以补充RUP,且看下面这张来次这个公司的 ICONIX Process图:
2004年10月7日 13:08








评论
# 回复: 域建模与用例建模:孰先孰后? 2004-10-10 23:23 冰云
相当精辟~非常有同感
我一般设计都是从UI Model, Domain Model开始的,
下一步会实践通过user story的goal与task的描述来捕获与分析需求
我对use case和顺序图、流程图啥的不太感冒
都在纸上划过去了。
真希望有一种工具能够提供这样方法论的解决方案阿~
# 回复: 域建模与用例建模:孰先孰后? 2004-10-14 9:36 xjcxp
是哟,工具其实还是很缺乏的。
我对于Agile方法也很推崇。不过,象user story这种概念却很少用。
原因在于,这对于小项目虽然很方便。但规模一大,体系化的东西就更重要了。而use case被有机融合在UML的庞大体现里。
# 回复: 域建模与用例建模:孰先孰后? 2004-11-10 18:41 banq
实践中,Use Case和Domain Model是反复交替的。所以看到这个标题我也疑惑,原来和我想法是一致的。