《UML三大硬伤》,一个弟兄攻击了一下UML,也来说说个人的一点理解吧。原文见下面的链接。

至少UML里的用例图、活动图、状态图、类图、时序图还是很好用的(目前我也只用到这个程度了)。用例图主要可以提供一个软件功能的大视图,并且也初步的把使用者的权限范围表达出来了;活动图好理解,相当于流程图,表达业务流程乃至程序算法时都是常用的;状态图和活动图互补,有时用状态机转换来表达一些业务流转等很清楚;类图用来表达实体关系图、表达类的设计时很好用;时序图可以用来表达业务流程和接口交互,尤其用来表达类之间的接口(方法)是怎么调用交互时,非常清楚。

UML可以用在系统分析阶段(用例图/活动图/状态图(业务建模)、类图(领域建模))、也可用在软件设计阶段(类图(类/对象设计)、活动图(算法描述)、用例实现(时序图,接口交互))。并且,通过用例实现,就把分析阶段和设计阶段连接起来了,前者就是OOA,后者就是OOD,然后接下来的弟兄能看懂理解上述产出,基本照着实现程序就可以了,也就是OOP.这样一套下来,也就是说UML是帮助应用面向对象技术的一种表达方式,或许还有其他的表达方式(比如敏捷方法里的“代码就是设计”,通过不断重构来实现?),但至少这种方式算是不错的。当然最终的效果,还是要看设计者的内功。

人是最关键的,UML只是种表达方式,只是个工具而已。很多弟兄感觉UML没用,或许只是他们不习惯用而已,也就是他们不习惯UML这种软件分析、设计的表达方式而已。用惯UML的弟兄会觉得UML好用、能清楚表达自己的意思,看得懂UML的弟兄会觉得好理解,知道设计者要表达的意思--这也就是UML的价值所在;而不习惯用UML的弟兄就会觉得UML没用,不如用其他的表达方式。如此而已。

因为我习惯用Rose的原因,或许不免有些偏向UML还是好用的观点。不过也不觉得它有多精妙。或许是要看用的程度吧,而国内的软件环境,就中小企业来说,可能是不允许你用得那么深的,不能承受这个成本。

上述夸夸其谈,未经最终检验。之前本来很想试试能做成什么效果的,可惜一直没这个机会。这么一套搞下来,时间精力都不允许。

UML三大硬伤 http://www.vchome.net/swengineer/umlrosecmm/uml01.htm,回复比原文更精彩感觉,值得一看。