用例图基础知识
用例图简介
用例图描述的是参与者所理解的系统功能,主要元素是用例和参与者。虽然用例图不能取代文本形式的用例文档,但它简要地概括了用例文档的主要内容,项目的基本需求和需求之间的关系一目了然。在项目初始阶段,用例图可以帮助开发团队以一种可视化的方式理解系统的功能需求,从而快速地进行需求分析。
用例图的组成元素
参与者(Actor)
参与者指与系统交互的人或物。参与者不仅包括产品的用户,还包括维护人员、外设(人、打印机)、相连的系统等等。
在用例图中,参与者用一个小人来表示。用例(User case)
用例描述了系统应有的功能或服务,在用例图中用椭圆表示。每个椭圆都代表一个用例,即一个功能。
那么问题来了:一个用例所描述的功能到底要细化到什么程度呢?其实,根据开发团队的需要,用例的功能范围(即粒度)是可以调整的,例如,可以把“管理数据库”作为一个用例,也可以把这个用例细化,写成“增加数据”、“删除数据”、“修改数据”三个用例。-
关系
用例图中主要的关系有:关联,泛化,包含和扩展。关联(Association):
表示参与者与用例之间的通信,只要参与者使用了某个用例,那么这个参与者和这个用例之间就存在关联关系。关联关系通过一条连接参与者和用例的直线来表示。泛化(Inheritance):
泛化关系即为继承关系,这种关系存在于父用例与子用例之间(或父参与者与子参与者之间)。网上许多教程对泛化关系的描述都非常抽象,但其实泛化关系非常好理解。例如,一个订票系统有两种订票方式:电话订票和网上订票。那么“订票”就是父用例,“电话订票”和“网上订票”就是子用例,“订票”和“电话订票”、“网上订票”之间存在泛化关系。从这个例子我们也能看出,父用例一般是一类功能的抽象描述,而子用例是父用例的具体实现形式,这和我们以前在程序设计课中学过的类继承关系是一样的。
泛化关系通过空心的箭头来表示,箭头从子用例指向父用例。
包含(Include):
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。我们以维护数据库为例,“维护数据库”这个功能由三部分组成:“添加数据”、“删除数据”、“修改数据”。那么“维护数据库”就包含了“添加数据”、“删除数据”、“修改数据”这三个用例。
包含关系很容易和泛化关系搞混,但其实真正理解之后并不难区分:泛化关系中的父用例和子用例粒度相同,而包含关系是把大粒度用例分成了小粒度用例。
包含关系用带有include字样的虚线箭头表示。
扩展(Extend):
扩展关系用来给某些用例(在扩展关系中叫基用例)添加附加功能。例如,在数据库查询的过程中,有时需要导出查询结果和打印查询结果。可是“导出”、“打印”好像并不是包含在“查询”中的功能,只是“查询”的一个附加功能,在这种情况下,用扩展关系就是最合适的。在扩展关系中,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。这是扩展关系和包含关系最大的区别。
扩展关系用带有extend字样的虚线箭头表示,箭头从子用例指向基用例。
用例图绘制工具——UMLet
学习了怎样画UML用例图之后,就到了实际练手的时间了。画UML图的工具有很多,老师推荐的一款叫做UMLet。实际体验之后,感觉这款工具非常轻量,使用起来也很方便,易于上手。下面就来详解一下UMLet的安装使用方法:
UMLet的安装
找到UMLet的官方网站,点击首页的Download:
在这个页面可以选择不同版本,也可以选择安装单独的软件或Eclipse插件。我们选择最新版本的stand-alone:
本以为下载下来的只是一个安装包而已,没想到解压之后直接就是UMLet的可执行文件,双击点开就可以直接使用了,简直感人:
UMLet的使用
软件界面是这样的,主要分作图区(左边的大片空白)、元素库(右上角的框)和属性区(右下角的框)。
元素库
元素库中包含了画UML图需要的各种元素,包括上文提到过的小人、直线、各种箭头等等。使用的时候直接把元素库里的元素拖动到作图区就可以了。
当然了,UML图并不止用例图一种,还有活动图、类图等很多种。UMLet也提供了画各种UML图所需的元素,只要在元素库上方的菜单中选择即可。
比如画活动图:
元素库就会显示出画活动图所需的一套元素。使用方法一样,选择需要的元素拖动到作图区就ok了:
属性区
把元素拖到作图区之后,我们还要修改元素的一些属性,如文本内容、颜色、字体字号等等。所有这些属性都可以在属性区内进行修改。
点击作图区的小人,可以看到小人元素的属性:
很显然这个属性就是标注小人的文本了。我们修改属性:
可以看到把文本属性改成User之后,作图区的小人元素也相应的变化了。
我们再试一个:选一个带文本的箭头,属性如下图
其实很容易就能看出哪些属性对应元素的哪个位置,我们修改一些属性:
很容易看出元素对应的变化。
总之,UMLet修改元素属性只要两步:选中要修改的元素、在属性区内进行修改。就这么简单!
(关于更多的属性字段,可以参考官网:http://www.umlet.com/faq.htm)
作图区
作图区的使用非常简单,只需要拖动元素就能任意调整元素的位置。点击直线进行拖动,可以调整直线的弯折。
右键点击元素,还可进行基本的复制、粘贴、设置颜色等操作。
此外,UMLet还有用户自定义元素等高端功能,但是作为小白,那些功能暂时还用不到,UMLet的基本功能以及足够用了。