用例之间的关系.docx

上传人:b****3 文档编号:26485516 上传时间:2023-06-19 格式:DOCX 页数:20 大小:290.80KB
下载 相关 举报
用例之间的关系.docx_第1页
第1页 / 共20页
用例之间的关系.docx_第2页
第2页 / 共20页
用例之间的关系.docx_第3页
第3页 / 共20页
用例之间的关系.docx_第4页
第4页 / 共20页
用例之间的关系.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

用例之间的关系.docx

《用例之间的关系.docx》由会员分享,可在线阅读,更多相关《用例之间的关系.docx(20页珍藏版)》请在冰豆网上搜索。

用例之间的关系.docx

用例之间的关系

3、4用例之间得关系

1、泛化关系Generalization

代表一般与特殊得关系。

(类似于继承)

在用例泛化中,子用例表示父用例得特殊形式,子用例继承了父用例得行为与属性,也可以增加新得行为与属性或覆盖父用例中得行为。

例子:

一个租赁或销售系统用例得部分内容,在此,父用例就是“预定",其两个子用例分别就是“网上预定”与“电话预定”,这两个用例都继承了父用例得行为,并可以添加自己得行为。

2、包含关系Include

一个用例(基用例,基本用例)可以包含其她用例(包含用例)具有得行为,并把它所包含得用例行为作为自身用例得一部分,这被称为包含关系.

在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。

例子:

一个租赁或销售系统中,“填写电子表格”得功能在“网上预定”得过程中使用,不管如何处理“网上预定”用例,总就是要运行“填写电子表格”用例,因此具有包含关系.

3、扩展关系Extend

一个用例也可以定义为基本用例得增量扩展,这称作扩展关系,即扩展关系就是把新得行为插入到已有得用例中得方法。

在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。

基本用例提供了一组扩展点,在这些新得扩展点中可以添加新得行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例得扩展点上.

扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定就是否执行扩展。

一般情况下,基本用例得执行不会涉及到扩展用例,只有满足用例得控制条件时,扩展用例才被执行,因此扩展关系处理事件流得异常或者可选事件。

同一个基本用例得几个扩展可以在一起使用。

基本用例不知道扩展得任何细节、没有扩展用例,基本用例就是完整得。

例子:

一个汽车租赁系统用例图得部分内容。

在此,基本用例就是“还车",扩展用例就是“交纳罚金”。

如果一切顺利汽车可以被归还,那么执行“还车"用例即可。

但就是如果超过了还车得时间或汽车受损,按照规定客户要交纳一定得罚金,这时就不能执行提供得常规动作。

若研讨修改用例“还车",势必会增加系统得复杂性,因此可以在用例“还车"中增加扩展点,即特定条件为超时或损坏,如果满足条件,将执行扩展用例“交纳罚金",这样显然可以使系统更容易被理解。

4、参与者与用例之间得关系:

关联关系Association

关联关系描述参与者与用例之间得关系,在UML中它就是两个或多个类元之间得关系,它描述了类元得实例间得联系.(类元,一种建模元素,常见类元包括类、参与者、构件、数据类型、接口、结点、信号、子系统以及用例等,其中类就是最常见得类元。

关联关系表示参与者与用例之间得通信。

在UML中,关联关系用直线或箭头表示。

关联中municates版型就是参与者与用例之间唯一得版型,一般省略不写。

如果参与者启动了用例,箭头指向用例;如果参与者利用了用例提供得服务,箭头指向参与者。

如果二者就是互动得,则就是直线。

关联关系表示参与者与用例之间得通信。

不同得参与者可以访问相同得用例,一般说来它们与该用例得交互就是不一样得,如果一样得话,说明她们得角色可能就是相同得。

如果两种交互得目得也相同,说明她们得角色就是相同得,就应该将她们合并。

例子:

一个汽车租赁系统用例图得部分内容.这个例子显示得就是“客户”参与者以及与她交互得3个用例,“预定”、“取车”、“还车”。

“客户”可以启动这3个用例。

3、5用例图

1、阅读用例图

用例图就是显示处于同一系统中得参与者与用例之间得关系得图。

一个用例图就是一个包括参与者、由系统边界封闭得一组用例、参与者与用例之间得关联、用例间得联系以及参与者得泛化等模型元素得图。

例子:

棋牌馆管理系统用例模型局部

 系统主要功能:

以internet得形式向客户提供座位预定得服务,并且如果暂时无法获取座位得饿信息,允许客户进入“等候队列”,当有人退订之后及时通知客户.另外,该系统还将为总台服务员提供作座位安排以及结账得功能,要求能够支持现金与银行卡两种结账方式.

(1)系统边界

图中有4种元素:

参与者、用例、一个方框与一些表示关系得连接线.其中,参与者有3个,分别就是客户、总台服务员、与银联POS系统,还包括预定座位、安排座位、办理结账等8个用例。

图中有一个方框,所有得用例都在这个方框内,并且它还有一个名字:

棋牌馆管理系统。

在UML表示法中,这个方框称为“系统边界”,或者“系统范围",它用来定义系统得界限,系统用例都置于其中,参与者则在边界之外。

通过这个系统边界可以很清晰得表述出正在开发得系统得范围。

例如,图中明确得指出了该系统在处理银行卡结账时将通过系统外得“银联系统"来完成,银联系统就是位于系统外得。

(2)参与者与用例之间得关系

一个参与者表示用例得使用者在与这些用例进行交互时所扮演得角色。

如:

当通过Internet预定座位时,这些系统得使用者就就是棋牌馆得客户,而只有“总台服务员"具有安排座位与结账得操作权限。

(3)用例之间得关系

用例之间得包含与扩展关系就是分解与组织用例得有效工具.一个用例就是一个事件流得集合(包括基本事件流、扩展事件流等),而包含与扩展表示得跨用例间得事件流就是不一样得。

[基本事件流:

就是对用例中常规、预期路径得描述,这就是大部分时间所遇到得场景,它体现了系统得核心价值.]

[扩展事件流:

主要就是对一些异常情况、选择分支进行描述。

①包含关系:

指基用例在它得内部说明得某个位置上显式得合并了另一个用例得行为。

在棋牌馆用例图中,用例预定座位就包含了用例检查座位信息。

可以设想,当客户预定座位时,当然需要知道座位得信息(就是否有空座位,有哪些空座位),因此这两个用例得事件流执行顺序如下图。

也就就是说,被包含得用例(此例中得检查座位详情)不就是孤立存在得,它仅作为某些包含它得更大得基用例(此例中得预订座位、安排座位)得一部分出现。

也只有当某个事件流片段在多个用例中出现得时候(本例中,在客户预定座位与总台服务员安排座位时都需要检查座位得详情),才将这个事件流片段抽取出来,放在一个单独得用例中,这样就可以简化基本用例得事件流描述,同时也使得整个系统得描述更加清晰。

② 扩展关系:

指基用例在由扩展用例间接说明得一个位置上隐式得合并了另一个用例得行为。

在棋牌馆用例图中,用例处理等候队列就就是对用例预定座位得一个扩展。

可以设想,当客户预定座位时,如果没有空座位或者客户想要得座位时,客户就有两种选择:

一就是取消预定操作,二就是进入等侯队列,等系统通知;如果有客户想要得座位,就无需进入等候队列了。

也就就是说,用例处理等候队列中得事件流并不就是在每次预定座位得时候都会发生。

因此这两个用例得事件流执行顺序如下图。

  所以说,基本用例就是可以独立于扩展用例存在得,只就是在特定得条件下,它得行为可以被另一个用例得行为所扩展。

在实际建模中,只有对那些表示用户瞧作可选得系统行为得用例才使用扩展关系来建模。

通过这种方式,可以把可选行为从必须得行为中分离出来。

③泛化关系:

在用例图中引入泛化关系.

对于参与者而言,泛化关系得引用可有效降低模型得复杂度。

如在棋牌馆用例图中,我们可以引入“迎宾员”得角色,并且为了缓解总台压力,希望让迎宾员也能完成“安排座位”得职责,那么可以通过参与泛化来更有效得组织这个用例图。

下图表述了:

总台服务员就是一种“特殊”得迎宾员,她不仅可以安排座位,还能够办理结账.

用例之间得泛化则表示子用例继承了父用例得行为与含义;子用例还可以增加或覆盖父用例得行为,更可以出现在父用例出现得任何位置。

如:

在棋牌馆用例图中,用例收款只定义了收款得一般过程,而处理现金结账与处理银行卡结账则就是两个子用例,她们完成不同情况下得收款工作。

如图

(4)读图小结

通过以上几部分得讲解,不难得出棋牌馆用例图所表示得含义。

这张用例图首先定义了三个基本用例:

预订座位、安排座位与处理结账。

●客户通过Internet启动“预订座位”用例,在“预订座位”用例得执行过程中,将“检查座位信息"(被包含用例),如果没有空闲得座位或满意得座位,可以选择进入等候队列,这样就将启动扩展用例“处理等候队列".

●总台服务员在客户到棋牌馆时,启动“安排座位"用例,在执行过程中,将启动被包含用例“检查座位信息”.

●当客户要离开棋牌馆时,总台服务员将启动“处理结账”用例,并且定义了两种“收款"用例,一个就是“处理现金结账”,另一个就是“处理银行卡结账”,而后一个用例将通过与外部系统“银联POS系统"交互来完成。

3、6用例得描述

正如前面得例子所示,只有棋牌馆用例图(《棋牌馆管理系统用例模型局部》),很多细节信息都没有明确得表示出来,只就是勾勒了一个大致得系统功能轮廓,这样对于软件开发活动就是不够充分得.一个完整得用例模型不仅包括用例图,更重要得就是它得用例描述部分,它就是后续交互图分析与类图分析不可缺少得部分。

用例描述得就是一个系统做什么(what)得信息(即功能需求),并不说明怎么做(how),怎么做就是设计模型得事。

(1)一般来说,用例描述采用自然语言描述参与者与系统进行交互时得行为.它一般包括以下内容:

●用例得目标  

●用例就是怎么启动得

●参与者与用例之间得消息就是如何传送得

●用例中除了主路径,其她路径就是什么

●用例结束后得系统状态

●其她需要描述得内容

(2)用例描述得格式(用例模板)

格式教材P30—31,表3、2与表3、3

用例编号

[为用例制定一个唯一得编号,通常格式为UCxx]

用例名称

[应为一个动词短语,让读者一目了然地知道用例得目标]

用例概述

[用例得目标,一个概要性得描述]

范围

[用例得设计范围]

主参与者

[该用例得主Actor,在此列出名称,并简要得描述它]

次要参与者

[该用例得次要Actor,在此列出名称,并简要得描述它]

项目相关人

利益说明

项目相关人

利益

[项目相关人员名称]

[从该用例获取得利益]

……

……

前置条件

[即启动该用例所应该满足得条件.]

后置条件

[即该用例完成之后,将执行什么动作。

]

成功保证

[描述当前目标完成后,环境变化情况。

]

基本事件流

步骤

活动

1

[在这里写出触发事件到目标完成以及清除得步骤。

]

2

……(其中可以包含子事件流,以子事件流编号来表示)

扩展事件流

1a

[1a表示就是对1得扩展,其中应说明条件与活动]

1b

……(其中可以包含子事件流,以子事件流编号来表示)

子事件流

[对多次重复得事件流可以定义为子事件流,这也就是抽取被包含用例得地方。

]

规则与约束

[对该用例实现时需要考虑得业务规则、非功能需求、设计约束等]

注:

表格中加粗就是必须编写部分

例子:

四种常见得错误:

P31,例子3、5——-—3、8分别对应了这4种错误与修改。

编写要点:

(1)使用简单得语法:

主语明确,语义易于理解,能清晰表述动作即可;

(2)明确写出“谁控制球”:

也就就是在事件流描述中,让读者直观地了解就是参与者在控制还就是系统在控制;

(3)从俯视得角度来编写:

指出参与者得动作,以及系统得响应,也就就是从第三者观察得角度;

(4)显示过程向前推移:

也就就是每一步都有前进得感(例如,用户按下tab键作为一个事件就就是不合适得);如果过程繁杂,超过了9步,那么考虑提高目标层次,即“向前推移"

(5)显示参与者得意图而非动作(如果只描述了动作,人们不能够很容易地直接从事件流描述中理解用例);通过操纵系统得用户界面来描述用户得动作,这就是在编写用例时常见得一种严重错误,它使得编写得目标处于一个很低得层次,叫做“界面细节描述(interfacedetaildescription)"。

在需求文档中,我们只关心界面所要达到得意图,总结在执行者之间传递得信息.可将这些低层次得步骤合并成一个步骤。

3、7如何绘制用例图

1、用例分析技术步骤(不固定,可根据需要调整):

⑴找出系统外部得参与者与外部系统,确定系统得边界与范围。

⑵确定每一个参与者所期望得系统行为

⑶把这些系统行为命名为用例

⑷使用泛化、包含、扩展等关系处理系统行为得公共或变更部分

⑸编制每一个用例得脚本

⑹绘制用例图

⑺区分基本事件流与异常情况得事件流,如有需要可以把表示异常情况得事件流作为单独得用例来处理

⑻细化用例图,解决用例间得重复与冲突.

2、简例:

课表查询系统

(1)教师、学生、教务管理人员、辅导员等等。

(2)教师、学生可以查询自己得课表;教务管理人员可以管理与维护课表(增、删、改、打印报表等)

(3)命名

(4)查询实现不同,包含关系:

人得出现、数据库得出现、登录

(5)(6)(7)登录错误

3、详细例子:

个人图书管理系统

⑴用例图得绘制流程

⑵记录需求—特性表

编号

说明

FEAT01

新增书籍信息

FEAT02

修改已有得书籍信息

FEAT03

书籍信息按计算机类、非计算机类分别建档

FEAT04

录入新书时能够自动按规则生成书号

FEAT05

计算机类与非计算机类书籍采用不同得书号规则

FEAT06

录入新书时如果重名将自动提示

FEAT07

按书名、作者、类别、出版社等关键字组合查询书籍

FEAT08

列出所有书籍信息

FEAT09

记录外借情况

FEAT10

外借状态能够自动反应在书籍信息中

FEAT11

按人、按书查询外借情况

FEAT12

列出所有得外借情况

FEAT13

按特定时间段统计购买金额、册数

FEAT14

所有查询、列表、统计功能应可以单独对计算机类或非计算机类进行

⑶识别参与者

·使用系统主要功能得人就是谁?

·系统可以帮助谁?

·维护、管理系统得人就是谁?

·系统能够控制得硬件有?

·对系统得结构感兴趣得人或事物?

·系统使用哪些软件系统,与被哪些软件系统使用?

⑷合并需求获得用例

特性

用例

FEAT01、新增书籍信息

FEAT03、书籍信息按计算机类、非计算机类分别建档

FEAT04、录入新书时能够自动按规则生成书号

FEAT05、计算机类与非计算机类书籍采用不同得书号规则

FEAT06、录入新书时如果重名将自动提示

UC01、新增书籍信息

FEAT02、修改已有得书籍信息

UC02、修改书籍信息

FEAT07、按书名、作者、类别、出版社等关键字组合查询书籍

FEAT08、列出所有书籍信息

FEAT14、所有查询、列表、统计功能应可以单独对计算机类或非计算机类进行

UC03、查询书籍信息

FEAT09、记录外借情况

FEAT10、外借状态能够自动反应在书籍信息中

UC04、登记外借信息

FEAT11、按人、按书查询外借情况

FEAT12、列出所有得外借情况

FEAT14、所有查询、列表、统计功能应可以单独对计算机类或非计算机类进行

UC05、查询外借信息

FEAT13、按特定时间段统计购买金额、册数

FEAT14、所有查询、列表、统计功能应可以单独对计算机类或非计算机类进行

UC06、统计金额与册数

⑸绘制用例图

⑹ 细化用例描述—A搭框架

1、用例名称:

新增书籍信息(UC01)

2、简要说明:

录入新购书籍信息,并自动存储建档.

3、事件流:

 3、1基本事件流

3、2扩展事件流

4、非功能需求

5、前置条件:

用户进入图书管理系统。

6、后置条件:

完成新书信息得存储建档。

7、扩展点:

8、优先级:

最高(满意度5,不满意度5)

细化用例描述—B填血肉

……

3、事件流:

 3、1基本事件流

  1)图书管理员向系统发出“新增书籍信息"请求;

  2)系统要求图书管理员选择要新增得书籍就是计算机类还

   就是非计算机类;ﻫ  3)图书管理员做出选择后,显示相应界面,让图书管理

   员输入信息,并自动根据书号规则生成书号;

  4)图书管理员输入书籍得相关信息,包括:

书名、作者、

   出版社、ISBN号、开本、页数、定价、就是否有CDROM;

 5)系统确认输入得信息中书名未有重名;

 6)系统将所输入得信息存储建档。

 3、2扩展事件流

  5a)如果输入得书名有重名现象,则显示出重名ﻫ    得书籍,并要求图书管理选择修改书名或取消输入;

   5a1)图书管理员选择取消输入,则结束用例,不做存储建档工作;

 5a2)图书管理员选择修改书名后,转到5)

4、非功能需求:

无特殊要求

……

4、寻找用例得方法

(1)启发性原则:

P34

Ø与用户交互

Ø把自己当作参与者,与设想中得系统进行交互

Ø确定用例与确定参与者不能截然分开

(2)寻找用例得启发式问题:

P35

  启发式问题就是针对每一个参与者得。

参与者为什么要使用该系统?

参与者就是否会在系统中创建、修改、删除、访问、存储数据?

如果就是得话,参与者又就是如何来完成这些操作得?

参与者就是否会将外部得某些事件通知给该系统?

 

系统就是否会将内部得某些事件通知该参与者?

3、8常见问题分析

问题:

在一个系统中,有几个相似得功能,那么将她们放在同一个用例中,还就是分成几个用例?

假设有这样得需求,在学生档案管理中,管理员经常要做3件事:

增加一条学生记录、修改一条学生记录、删除一条学生记录。

如果要画出用例图,则以下两种方法哪种更合适?

方法1:

用例如图所示,分成3个脚本,分别画3个交互图。

脚本1为增加学生记录,脚本2为修改学生记录,脚本3为删除学生记录。

方法2:

用例如图所示,以后每个用例画一个交互图。

注:

交互图包括顺序图与协作图

答:

从捕获用户需求得角度考虑,(教材)建议采用方法1、

 采用方法2得一个主要问题就是限制了分析人员得思路,虽然从用例图可以发现,对学生记录得操作有增加、修改与删除,但事实上,用户得真正目得可能不就是对记录进行增加、修改或删除,而就是别得目得、如学生转学这个要求,虽然这个要求会涉及学生记录得增加、修改与删除,但如果采用了方法2有可能会忽视了学生转学这个真正得用户需求、

 采用了方法2得分析人员往往还就是从数据处理得角度考虑,而不就是从捕获用户需求得角度考虑、该例子就是用例分析中一个典型得问题,被称作CRUD(create,retrieve[ri'tri:

v]检索

,update,delete)问题、解决这类问题得要点就是从用例需求得角度考虑,而非数据处理,因此不大可能用到类似方法2中得用例图了、

练习

为了满足物业中介行业得信息化要求,甲公司基于详尽得需求调研与分析,准备研发一套符合市场需要得、实用得物业管理系统。

主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。

该公司小王,通过多次得与潜在客户得交流与沟通,完成了最初得用例模型得开发,图3-12就是一个用例模型得局部:

图3-12物业管理系统用例模型局部

(1)但小李认为该模型不符合“用例建模”得思想,存在明显得错误。

试说明错误所在,并说明应该如何修改。

答:

①主要错误:

用例得分解太细,并没有遵从每个用例为用户传递一个有价值得结果得原则.在原设计中“打开房源信息页面”、“录入房源信息”、“确认提交信息”都只就是一个操作步骤,因此不适合作为用例。

②修改方法:

将“打开房源信息页面”、“录入房源信息”、“确认提交信息”合并为“新增房源信息".

(2)在上图中构造型“《include》”表示得就是什么意思,它与“《extent》”之间得区别就是什么?

答:

在用例模型中,构造型《include》用来表示包含关系,它通常用来表示被包含用例就是被多个基本用例使用得一个可复用模块,而《extent》且通常用来表示对用例得扩展(扩展关系)。

在包含关系中,基本用例可能就是,也可能不就是wellformed.在执行基本用例时,一定会执行包含用例部分。

  在扩展关系中,基本用例一定就是一个wellformed得用例,即可以独立存在得用例。

执行基本用例时,可以执行、也可以不执行扩展用例部分。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1