常见的可以绘制UML的工具有:Rose、XDE、Visio、Enterprise Architeture、JUDE、StarUML,其中可免费使用的是JUDE、StarUML,其他几种都是需要购买license的。
我与任何UML工具厂商没有利益关系(至少目前是这样),为避免广告的嫌疑,本小节并不会具体介绍某一种或几种UML工具的细节,也不会说我用得最多的是哪个软件。况且介绍具体一个UML软件是如何操作,这是没啥必要的,这样只会浪费本书的篇幅,增加书的售价而已。我相信只要你稍加研究,你是可以很快上手的。
我使用过不少UML软件,我会简单介绍我的一些心得体会,希望这些体会能帮助你更快上手、更快找到适合你自己或贵公司的软件。
1. 开始向导
很多UML软件喜欢一启动就显示一个开始向导,似乎这样的设计能让你很快入手,但这样的向导往往会让新手很困惑,这是这些向导的第一个问题!而第二个问题是:向导显示了各种模板,用这些模板建立了一系列内容框架,这些内容框架会让你很头晕。第三个问题是:实际工作中这些模板基本没用,我不喜欢这些模板建立的内容框架,我基本上会删除掉全部甚至大部分模板建立的内容。
对于开始向导,我的建议是:大致看看就OK了,不要纠结于当中,那些模板的内容框架基本上都是基于某些理论来设计的,大多数不适用。而我通常是从空白开始建立工程的,有些软件还不允许你从空白开始,你可以随便选一种模板,建立后删除那些看不懂的内容。
2. 画图与建模
如果认为UML软件就是一种画图工具,就是设置好一张图纸,然后你选择一些UML元素在上面画。基于这样的理解来使用UML软件的话,一开始可能会很不习惯,甚至摸不着头脑。大部分UML软件的思路是一边画图一边建模的,下面要细分来讲解。
大部分UML软件界面的布局是这样的:左边显示一堆UML元素,中间是画图区,右边显示工程视图和属性视图之类的东东。如果你从空白开始建立工程,你可能会发现左边区域是空的,也不知道从哪开始新建一张图。
那个工程视图其实就是用来显示模型的,最开始里面什么内容都没有,通常需要你右键单击工程那个节点,从右键菜单中选择建立一些“节点”(这些节点不同软件有不同的说法),建立“节点”后再通过该节点的右键菜单中选择要新建什么UML图,这时中间区域才会出现画图区,同时左边区域才会出现可用的UML元素。
当你开始在画图区添加UML元素时,工程视图也会添加相应的元素,这其实就是画图的同时也在建模。请留意,如果你删除图形中的UML元素,工程视图中的对应UML元素并不会删除。也就是说图形发生了变化,但模型并没有变化。你要真正从模型上删除该UML元素的话,你需要明确地选择从模型上删除才行。
我们可以这样理解UML建模活动,要建模通过图形来建立是最直观的,但模式是一种逻辑关系,模型的展示形式可以是多样的。例如:我们通过某张图建立了业务概念模型,我们可以另外再建立一张空白的图,从工程视图中“拉”出一些类放到这张空白的图中,这些类放到图中后就会自动展示出它们之间的关系,而无需你重新绘制一次。当我们为某一系统建模的时候,实际上模型只有一套体系,但我们可以根据不同的需要,用多张UML图从不同的视觉来展示该模型。
3. 复制的问题
有人曾经问我用某某工具如何复制UML的问题,你可能不是真的要复制,而是想在不同的图中使用相同的UML元素而已。如果是这样的话,你完全可以从工程视图中将这个UML元素“拉”到图中就可以了。当然你也有可能真的想在模型级别复制该UML,很多UML软件并不允许你这样做,因为模型中的东西应该是唯一的不能重名的。当然要视乎具体是什么软件才好说明这个问题。
遇到你想复制某些UML元素时,请你先想清楚你只是想在多个图展示相同的内容,还是真的想在模型级别上复制一些UML元素。
4. 正向与反向工程
这个问题就是由UML生成代码或由代码生成UML的问题了。如果你是做需求分析工作而使用UML,这个问题基本上不需要关注。如果你是做软件设计工作,那是不是需要关注这个问题呢?我的回答是:不需要关注!在实际工作中我极少用正向和反向工程,只是曾经试过将代码反向为UML,希望帮助我看清楚代码的结构而已。由UML生成代码的需求是很低的,理由如下:
1) 架构设计生成代码,你需要“额外”指定很多内容,这是很难做到的,也是没必要的。
2) 详细设计要生成代码的话,则需要将类图设计到很细的程度,而且需要所有代码都必须先保证有对应的类图。这是毫无必要的,实际工作中并不需要所有代码都需要事先有超详细的设计,搞到这么复杂,还不如直接编码。
某些收费软件可以包含或不包含正向和反向工程功能,如果包含的话你需要付额外的钱,这些钱可以不必花,这是冤枉钱。
5. 面向软件设计而不是面向需求分析
需求分析工作中应用UML,并不需要用到UML中很深或很细的语法。如:我们用类图描述业务概念模型时,我希望的效果就是直接用中文表示属性名称就可以了,不需要指定为public也不需要指定属性类型。但大部分UML软件是面向软件设计,面向要生成代码而设计的,类的属性需要指定为public,属性类型需要指定是string还是int或其他什么的。诸如此类,如果你不指定一些详细的信息,软件还会提示错误信息,让你无法进行下去,搞到你有些厌烦。遇到这样情况,只能忍一忍将就一下了。
6. 是否支持UML 2.x?
收费软件大都支持UML 2.x,免费的有一些不支持,有些部分支持,但我还没有发现完全支持UML 2.x的免费软件。尽管本书介绍的内容以UML 2.x为准,实际上在大部分的工作实践中,需要用到的主要是UML 1.x,部分UML 2.x的内容也不是必须的,可以用UML 1.x来代替。所以看在钱的份上,也不需要太计较是否全面支持UML 2.x的问题了。
7. 收费与不收费软件的区别
两者差别其实不大,自己用的话用免费的也就OK了,如果不差钱或者公司出钱,用收费的还是不错的,收费软件还是有它独到的地方的。
8. 多多尝试
每种工具都有优缺点,你不妨多试试各种软件,选择适合你的软件,你的选择不一定是某一个软件,你可以多个软件同时用!
9. 公司是否需要统一UML工具?
作为公司来说,可能会认为员工都用相同一个UML软件会有利于沟通。我在以往公司时,并没有强制要求大家都用什么UML工具,反而是鼓励大家用自己喜欢的工具。经过大家的“自然选择、优胜劣汰”后,最后发现大家基本上都是集中使用其中某一两款UML软件。
原文链接:http://www.cnblogs.com/umlonline/archive/2011/07/15/2106952.html
【编辑推荐】