zoukankan      html  css  js  c++  java
  • 认识UML工具

    摘要:本文并不会介绍具体的某种UML工具如何操作,总结了一些我使用UML工具的心得体会,希望对大家有帮助!

    作者:张传波
    软件知识园地基地

    正文

    常见的可以绘制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软件。

    作者:张传波
    www.umlonline.org/school/

    -----全文完-----

    本文的内容来自《活用UML-需求分析高手》一书,另外本书第1、2章的内容已在博客园发布,见:
    UML一篇文章就学通! http://www.cnblogs.com/umlonline/archive/2011/07/12/2104626.html
    让人耗尽脑汁的需求分析工作 http://www.cnblogs.com/umlonline/archive/2011/07/13/2105407.html

  • 相关阅读:
    tar命令,vi编辑器
    Linux命令、权限
    Color Transfer between Images code实现
    利用Eclipse使用Java OpenCV(Using OpenCV Java with Eclipse)
    Matrix Factorization SVD 矩阵分解
    ZOJ Problem Set
    Machine Learning
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/umlonline/p/2106952.html
Copyright © 2011-2022 走看看