UML中的用例(Use Case)概念分析及实例
文/登峰
2005-02-25
在UML中use case似乎最簡單的,用例建模的最主要功能就是用来表达系统的功能性需求或行为,依我的理解用例建模可分为用例图和用例描述。用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。用例描述用来详细描述用例图中每个用例,用文本文档来完成,以及由箭头所组成的各种关系,包括泛化,包含,扩展等。本文准备向大家介绍以下内容,所有图示均用PowerDesigner所画.
u 用况
u 参与者
u 泛化
u <<use>>
u <<include>>
u <<extend>>
u 用例描述
1. 用况(use case)
图1 用况图
是对一组动作序列(其中包括它的变体)的描述,系统执行该动作为执行此动作的参与者产生一个可观察的结果值。比如你使用计算器,这里可以把计算器看作为用况,参与者是登峰,登峰按了3+3(用况执行的序列),计算机器返回一个结果6。
2. 参与者(Actor)
参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。
3. 泛化
泛化和类中的泛化概念是一样的,子用况继承父用况的行为和含义,还可以增加或覆盖父用况的行为;子用况可以出现在任何父用况出现的位置(父和子均有具体的实例)。下面给出两种图示来说明泛化的概念和含义
图2含义继承 图3行为继承
4.<<user>>
<<use>>: 其关系非常象一个函数调用或一个子过程以这种方式使用的用例称为抽
象用例因为它不能单独存在而必须被其它用例使用,请看下图
图4使用<<use>>示例
5.<<include>>
怎么解释这个定义呢?还是说明一下它的功能吧,<<include>>可以把几个用例的公共步骤分离出来成为一个单独的被包含用例。学过C的朋友知道它的含义了吧。呵呵
好的,定义都已经知道了,下面用一个示例来加深大家的印象。假如有个人事系统,经理可以查看员工的信息,并可以增加,修改和删除,但每次执行这三个操作时,都要定位到相应的员工,即先查询定位到要操作的员工。图5给出了这种表述的use case 图,请理解<<include>>的含义
图5<<include>>的用法
6.<<extend>>
<<extend>>为已存在用例添加新的行为提供了一种方法。 基础用例提供了一组扩展点(extend points),扩展点是钩子,在此可以添加新的行为,扩展用例提供了一组插入片段,这些片段可被插入到基础用例的钩子位置。需要注意的是基础用例不知道扩展用例的任何细节,它仅为扩展用例提供了钩子。这与<<include>>不同,此时如果没有被包含用例,客户用例将不完整。图6说明了主述文字描述
图6 <<extend>>的用法
7.用例描述
当然用例描述就是对用例的文字性说明。具体要描述哪些项,这里就不多说了,给大家一个具体示例一看就明白。假如有个家教网,下面只是一个抽象片段。主要是为了说明用例描述的含义。
下面就是用例网站公告发布的用例描述
用例名称:网站公告发布
用例标识号:202
参与者:负责人
简要说明:
负责人用来填写和修改家教网站首页的公告,公告最终显示在家教网站的首页上。
前置条件:
负责人已经登陆家教网站管理系统
基本事件流:
1. 负责人鼠标点击“修改公告”按钮
2. 系统出现一个文本框,显示着原来的公告内容
3. 负责人可以在文本框上修改公告,也可以完全删除,重新写新的公告
4. 负责人编辑完文本框,按“提交”按钮,首页公告就被修改
5. 用例终止
其他事件流A1:
在按“提交”按钮之前,负责人随时可以按“返回”按钮,文本框的任何修改内容都不会影响网站首页的公告
异常事件流:
1. 提示错误信息,负责人确认
2. 返回到管理系统主页面
后置条件:
网站首页的公告信息被修改
注释:无
好,用例部分就先介绍到这,它在建模中主要用于整个系统的抽象描述。是在功能层的描述。上班时间到了,呵呵