早年用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的实际经验的。无怪乎书的付标题为:一种实践方法。