用例之间的关系

用例之间的关系
用例之间的关系

用例之间的关系

1、泛化关系Generalization

代表一般与特殊的关系。(类似于继承)

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

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

2、包含关系Include

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

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

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

3、扩展关系Extend

一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系是把新的行为插入到已有的用例中的方法。在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。

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

扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定是否执行扩展。一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。同一个基本用例的几个扩展可以在一起使用。

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

例子:一个汽车租赁系统用例图的部分内容。在此,基本用例是“还车”,扩展用例是“交纳罚金”。如果一切顺利汽车可以被归还,那么执行“还车”用例即可。但是如果超过了还车的时间或汽车受损,按照规定客户要交纳一定的罚金,这时就不能执行提供的常规动作。若研讨修改用例“还车”,势必会增加系统的复杂性,因此可以在用例“还车”中增加扩展点,即特定条件为超时或损坏,如果满足条件,将执行扩展用例“交纳罚金”,这样显然可以使系统更容易被理解。

4、参与者与用例之间的关系:关联关系Association

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

关联关系表示参与者和用例之间的通信。在UML中,关联关系用直线或箭头表示。关联中communicates版型是参与者和用例之间唯一的版型,一般省略不写。如果参与者启动了用例,箭头指向用例;如果参与者利用了用例提供的服务,箭头指向参与者。如果二者是互动的,则是直线。

关联关系表示参与者和用例之间的通信。不同的参与者可以访问相同的用例,一般说来它们和该用例的交互是不一样的,如果一样的话,说明他们的角色可能是相同的。如果两种交互的目的也相同,说明他们的角色是相同的,就应该将他们合并。

例子:一个汽车租赁系统用例图的部分内容。这个例子显示的是“客户”参与者以及与他交互的3个用例,“预定”、“取车”、“还车”。“客户”可以启动这3个用例。

用例图

1、阅读用例图

用例图是显示处于同一系统中的参与者和用例之间的关系的图。一个用例图是一个包括参与者、由系统边界封闭的一组用例、参与者和用例之间的关联、用例间的联系以及参与者的泛化等模型元素的图。

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

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

(1)系统边界

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

图中有一个方框,所有的用例都在这个方框内,并且它还有一个名字:棋牌馆管理系统。在UML表示法中,这个方框称为“系统边界”,或者“系统范围”,它用来定义系统的界限,系统用例都置于其中,参与者则在边界之外。通过这个系统边界可以很清晰的表述出正在开发的系统的范围。

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

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

一个参与者表示用例的使用者在与这些用例进行交互时所扮演的角色。如:当通过Internet 预定座位时,这些系统的使用者就是棋牌馆的客户,而只有“总台服务员”具有安排座位和结账的操作权限。

(3)用例之间的关系

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

[基本事件流:是对用例中常规、预期路径的描述,这是大部分时间所遇到的场景,它体现了系统的核心价值。]

[扩展事件流:主要是对一些异常情况、选择分支进行描述。]

①包含关系:指基用例在它的内部说明的某个位置上显式的合并了另一个用例的行为。在棋牌馆用例图中,用例预定座位就包含了用例检查座位信息。可以设想,当客户预定座位时,当然需要知道座位的信息(是否有空座位,有哪些空座位),因此这两个用例的事件流执行顺序如下图。

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

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

②扩展关系:指基用例在由扩展用例间接说明的一个位置上隐式的合并了另一个用例的行为。在棋牌馆用例图中,用例处理等候队列就是对用例预定座位的一个扩展。可以设想,当客户预定座位时,如果没有空座位或者客户想要的座位时,客户就有两种选择:一是取消预定操作,二是进入等侯队列,等系统通知;如果有客户想要的座位,就无需进入等候队列了。也就是说,用例处理等候队列中的事件流并不是在每次预定座位的时候都会发生。因此这两个用例的事件流执行顺序如下图。

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

在实际建模中,只有对那些表示用户看作可选的系统行为的用例才使用扩展关系来建模。通过这种方式,可以把可选行为从必须的行为中分离出来。

③泛化关系:在用例图中引入泛化关系。

对于参与者而言,泛化关系的引用可有效降低模型的复杂度。如在棋牌馆用例图中,我们可以引入“迎宾员”的角色,并且为了缓解总台压力,希望让迎宾员也能完成“安排座位”的职责,那么可以通过参与泛化来更有效的组织这个用例图。下图表述了:总台服务员是一种“特殊”的迎宾员,他不仅可以安排座位,还能够办理结账。

用例之间的泛化则表示子用例继承了父用例的行为和含义;子用例还可以增加或覆盖父用例的行为,更可以出现在父用例出现的任何位置。如:在棋牌馆用例图中,用例收款只定义了收款的一般过程,而处理现金结账和处理银行卡结账则是两个子用例,他们完成不同情况下的收款工作。如图

(4)读图小结

通过以上几部分的讲解,不难得出棋牌馆用例图所表示的含义。这张用例图首先定义了三个基本用例:预订座位、安排座位和处理结账。

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

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

当客户要离开棋牌馆时,总台服务员将启动“处理结账”用例,并且定义了两种“收款”

用例,一个是“处理现金结账”,另一个是“处理银行卡结账”,而后一个用例将通过与外部系统“银联POS系统”交互来完成。

用例的描述

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

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

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

●用例的目标

●用例是怎么启动的

●参与者和用例之间的消息是如何传送的

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

●用例结束后的系统状态

●其他需要描述的内容

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

格式教材P30-31,表和表

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

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

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

范围[用例的设计范围]

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

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

项目相关人利益说明

项目相关人利益

[项目相关人员

名称]

[从该用例获取的利益]…………

前置条件[即启动该用例所应该满足的条件。]

后置条件[即该用例完成之后,将执行什么动作。]成功保证[描述当前目标完成后,环境变化情况。]

基本事件流步骤活动

1[在这里写出触发事件到目标完成以及清除的步骤。] 2……(其中可以包含子事件流,以子事件流编号来表示)

扩展事件流1a[1a表示是对1的扩展,其中应说明条件和活动]

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

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

例子:

四种常见的错误:P31 ,例子分别对应了这4种错误和修改。

编写要点:

(1)使用简单的语法:主语明确,语义易于理解,能清晰表述动作即可;

(2)明确写出“谁控制球”:也就是在事件流描述中,让读者直观地了解是参与者在控制还是系统在控制;

(3)从俯视的角度来编写:指出参与者的动作,以及系统的响应,也就是从第三者观察的角度;(4)显示过程向前推移:也就是每一步都有前进的感(例如,用户按下tab键作为一个事件就是不合适的);如果过程繁杂,超过了9步,那么考虑提高目标层次,即“向前推移”

(5)显示参与者的意图而非动作(如果只描述了动作,人们不能够很容易地直接从事件流描述中理解用例);通过操纵系统的用户界面来描述用户的动作,这是在编写用例时常见的一种严重错误,它使得编写的目标处于一个很低的层次,叫做“界面细节描述(interface detail description)”。在需求文档中,我们只关心界面所要达到的意图,总结在执行者之间传递的信息。可将这些低层次的步骤合并成一个步骤。

如何绘制用例图

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

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

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

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

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

⑸编制每一个用例的脚本

⑹绘制用例图

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

⑻细化用例图,解决用例间的重复与冲突。

2、简例:课表查询系统

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

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

(3)命名

(4)查询实现不同,包含关系:人的出现、数据库的出现、登录

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

3、详细例子:个人图书管理系统

⑴用例图的绘制流程

⑵记录需求—特性表

⑶识别参与者

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

·系统可以帮助谁?

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

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

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

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

⑷合并需求获得用例

⑸绘制用例图

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

1.用例名称:新增书籍信息(UC01)

2.简要说明:录入新购书籍信息,并自动存储建档。

3.事件流:

基本事件流

扩展事件流

4.非功能需求

5.前置条件:用户进入图书管理系统。

6.后置条件:完成新书信息的存储建档。

7.扩展点:无

8.优先级:最高(满意度 5,不满意度5)

细化用例描述—B填血肉

……

3.事件流:

基本事件流

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

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

是非计算机类;

3)图书管理员做出选择后,显示相应界面,让图书管理

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

4)图书管理员输入书籍的相关信息,包括:书名、作者、

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

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

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

扩展事件流

5a)如果输入的书名有重名现象,则显示出重名

的书籍,并要求图书管理选择修改书名或取消输入;

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

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

4.非功能需求:无特殊要求

……

4、寻找用例的方法

(1)启发性原则:P34

和用户交互

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

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

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

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

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

参与者是否会在系统中创建、修改、删除、访问、存储数据?如果是的话,参与者又是如何来完成这些操作的?

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

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

问题:在一个系统中,有几个相似的功

能,那么将他们放在同一个用例中,还是分

成几个用例?假设有这样的需求,在学生档

答: 从捕获用户需求的角度考虑,(教材)建议采用方法1.

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

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

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

(1)但小李认为该模型不符合“用例建模”的思想,存在明显的错误。试说明错误所在,并说明应该如何修改。

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

②修改方法:将“打开房源信息页面”、“录入房源信息”、“确认提交信息”合并为“新增房源信息”。

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

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

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

在扩展关系中,基本用例一定是一个 well formed的用例,即可以独立存在的用例。执行基本用例时,可以执行、也可以不执行扩展用例部分。

用例图元素之间的关系

用例图元素之间的关系 用例图中包含的元素除了系统边界、角色和用例,另外就是关系。包括:角色之间的关系、用例之间的关系、用例和角色之间的关系。 角色之间的关系 由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。 用例之间的关系: (1)包含关系:基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共 行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。 简单的理解就是用例可以包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分。

(2)泛化关系:代表一般于特殊的关系。它的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。 泛化(Generalization)在面向对象的技术中无处不在,下图给出了一个使用泛化的用例图:

在用例图中,角色和用例都能够泛化。角色的泛化/继承很容易理解,因为角色本来就是类(Class),它是一种版型(stereotype)为Actor的类,所以角色的继承直观而自然。但是用例的继承实际上分为两种情况,并不是简单的使用泛化,而是使用扩展(extended)和包含(include)两种泛化的特例。扩展用于子用例的动作步骤基本上和父用例的动作步骤相同,只是增加了另外的一些步骤的情况下。包含用于子用例包含了所有父用例的动作,它将父用例作为了自己的一个大步骤,子用例常常包含一个以上的父用例。 (3)扩展关系:扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。与包含关系一样,扩展关系也是依赖关系的版型。在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。 它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。在以下几种情况下,可使用扩展用例: a.表明用例的某一部分是可选的系统行为(这样,您就可以将模型中的可选行为和必选行为分开); b.表明只在特定条件(如例外条件)下才执行的分支流; c.表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。

门户网站用例图与用例描述

1:总体用例 图 2:留言管 理 2-1:回复留言 用例描述: 用例名称:回复留 言用例标识号: 2-1

参与者:管理员简要说明:管理员对用户提交到系统的留言,进行浏览和回复。前置条件: 管理员已经登管理系统基本事件流:1.管理员鼠标点击“浏览留言”按钮,发出留言审核请求;2.系统提供系统中存储的留言,分页显示留言内容; 3. 管理员选择一条留言标题,点击浏览留言详细信息;4.管 理员可以在选择要回复的留言; 5. 管理员点击提交回复留言 6.用例终止;其他事件流A1:在按“提交”按钮之前,管理员随时可以按“返回”按钮,返回到浏览页面 异常事件流:1.提示错误信息,管理员确认;2.返回到留言管理页面。 后置条件:系统中的留言得到回复 注释:无 2-2:删除留言 用例描述: 用例名称:删除留言用例标识号:2-2 参与者:管理员简要说明:管理员对用户提交到系统的留言,进行浏览和删除前置条件: 管理员已经登管理系统基本事件流:1.管理员鼠标点击“浏览留言”按钮,发出浏览留言请求;2.系统提供系统中存储的经审核的留言,分页显示留言; 3. 管理员查看留言,点击删除按钮删除留言后重新列出留言; 7.用例终止;其他事件流A1: 在按“提交”按钮之前,管理员随时可以按“返回”按钮,返回到浏览

异常事件流:1.提示错误信息,管理员确认;2.返回到留言管理页面。 后置条件:系统中的留言被删除。 注释:无 3:管理帖子 3-1 回复帖子 用例描述: 用例名称:回复帖子用例标识号:3-1 参与者:管理员简要说明:管理员对用户提交到系统的帖子,进行浏览和回复帖子。前置条件:管理员已经登管理系统基本事件流:1.管理员鼠标点击“浏览帖子”按钮,发出帖子浏览请求;2.系统提供系统中存储的帖子,分页显示帖子内容; 3.管理员可以在选择要帖子的留言; 4. 管理员点击提交回复帖子5.用例终止;其他事件流A1: 在按“提交”按钮之前,管理员随时可以按“返回”按钮,返回到浏览异常事件流:1.提示错误信息,管理员确认;2.返回到帖子管理页面。 后置条件:系统中的帖子批准状态被修改。 注释:无

用例分析总结

用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。用例图在各种开发活动中被广泛的应用,但是它最常用来描述系统及子系统。 当用例视图在外部用户出现以前出现时,它捕获到系统、子系统或类的行为。它将系统功能划分成对参与者(即系统的理想用户)有用的需求。而交互部分被称作用例。用例使用系统与一个或者多个参与者之间的一系列消息来描述系统中的交互。 用例图包含六个元素,分别是:参与者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。 用例图可一个包含注释和约束,还可一个包含包,用于将模型中的元素组合成更大的模块。有时,可以将用例的实例引入到图中。用例图模型如下所示,参与者用人形图标来标识,用例用椭圆来表示,连线表示它们之间的关系。

一.参与者(Actor) 1.参与者的概念 参与者是系统外部的一个实体,它以某种方式参与用例的执行过程。参与者通过向系统输入或请求系统输入某些事件来触发系统的执行。参与着由参与用例时所担当的角色来表示。在UML中,参与者用名字写在 下面的人形图标表示。 每个参与者可以参与一个或多个用例。它通过交换信息与用例发生交互(因此也与用例所在的系统或类发生了交互),而参与者的内部实现与用例是不相关的,可以用一组定义其状态的属性充分的描述参与者。 参与者有三大类:系统用户、与所建造的系统交互的其它系统和一些可以运行的进程。 第一类参与者是真实的人,即用户,是最常见的参与者,几乎存在于每个系统中。命名这类参与者时,应当按照业务而不是位置命名,因为一个人可能有很多业务。 第二类参与者是其它的系统。这类位于程序边界之外的系统也是参与者。

UML各种图详解

UML用例图 用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块。展示了一个外部用户能够观察到的系统功能模型图。 用例图中涉及的关系: 1》泛化(Inheritance) 就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。 2》包含(Include) 包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。 3》扩展(Extend) 扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。

1 一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。 2》UML 支持的可见性类型的标志 3》多重值和它们的表示 4》类图之间的关系有:泛化(继承),依赖,关联,聚合/组合。 1.聚合/组合

聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。 举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于pany类的实例而存在。 ·基本聚合(聚合) 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。 图中清楚的表明了类Car对象包含了另一类Wheel的4个实例,这两者在概念上是密不可分的,其中的一个类是另一个类的构成成分。菱形表示“包含”,箭头表示被包含的对象,数字4表示包含的数目。 ·组合聚合(组合) 组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。 注意:组合关系如聚合关系一样绘制,不过这次菱形是被填充的。 2.依赖 依赖可以说是要完成C5里的所有功能,一定要有C6的方法协助才行 3.关联 可以分为单向关联,双向关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。 单向关联:

用例图和用例模型

用例图和用例模型 用例图用来描述用户的需求,它从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。 用例图概述 UML用例图是软件产品外部特性描述的视图,它从用户的角度而不是开发者的角度来描述软件产品的需求,分析软件产品所需的功能和行为。用例图主要描述了系统需要实现的功能,而忽略系统是如何实现这些功能的。 用例模型由用例图组成,它是系统用例图的集合,是对系统从宏观角度的确定描述。用例模型主要用于需求分析阶段,该模型是系统开发者和系统使用者反复讨论的结果,表明了系统开发者和系统使用者对需求规格达成的共识。 首先,用例模型描述了待开发系统的功能需求;其次,用例模型将系统看作黑盒,仅从外部执行者的角度来理解系统; 再次,用例模型驱动了需求分析之后各阶段的开发工作,影响到开发工作的各个阶段和UML的各个模型。 一、用例图元素 用例图主要用于定义系统的功能需求,它描述了系统的参与者与系统提供的用例之间的关系。用例图由以下几种元素组成: 执行者、用例、关系、用例描述 (1)执行者 执行者(Actor)是系统的外部用户,它是与系统相关联的人或其它系统,可以是普通用户、外部硬件、其他系统。

在进行用例图绘制时,首先要找出系统的执行者。一般可以从以下几个方面来考虑怎样找到系统的执行者: ?谁使用系统的功能。 ?谁向系统提供必要的信息。 ?谁从系统获取信息。 ?谁维护、管理系统工作。 ?系统需要使用哪些外部资源。 ?需要与系统交互的其它系统有哪些。 ?其他对系统产生的结果感兴趣的人或事物。 (2)用例 用例是指系统中的一个功能单元,也可以将用例理解为系统功能的分解。 用例的表示方法如下: (3)关系 (1)关联 在用例图中,用例和执行者之间的关系用一条连接二者带箭头的连线表示,如图所示,该连线称为关联。它表示了一个执行者和一个用例之间的关系。 在用例图中,关联关系只用在执行者和用例之间,用例和用例之间不会存在关联关系。关联关系采用的是单箭头的连线,表示在该关联中执行者是主动的,是执行者启动的用例。如下图所示。

用例之间的关系

3、4用例之间得关系 1、泛化关系Generalization 代表一般与特殊得关系。(类似于继承) 在用例泛化中,子用例表示父用例得特殊形式,子用例继承了父用例得行为与属性,也可以增加新得行为与属性或覆盖父用例中得行为。 例子:一个租赁或销售系统用例得部分内容,在此,父用例就是“预定",其两个子用例分别就是“网上预定”与“电话预定”,这两个用例都继承了父用例得行为,并可以添加自己得行为。 2、包含关系Include 一个用例(基用例,基本用例)可以包含其她用例(包含用例)具有得行为,并把它所包含得用例行为作为自身用例得一部分,这被称为包含关系. 在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。 例子:一个租赁或销售系统中,“填写电子表格”得功能在“网上预定”得过程中使用,不管如何处理“网上预定”用例,总就是要运行“填写电子表格”用例,因此具有包含关系. 3、扩展关系Extend 一个用例也可以定义为基本用例得增量扩展,这称作扩展关系,即扩展关系就是把新得行为插入到已有得用例中得方法。在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。 基本用例提供了一组扩展点,在这些新得扩展点中可以添加新得行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例得扩展点上. 扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定就是否执行扩展。一般情况下,基本用例得执行不会涉及到扩展用例,只有满足用例得控制条件时,扩展用例才被执行,因此扩展关系处理事件流得异常或者可选事件。同一个基本用例得几个扩展可以在一起使用。 基本用例不知道扩展得任何细节、没有扩展用例,基本用例就是完整得。

用例图

用例图 简介 用例图定义:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。 用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。 用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。 将每个系统中的用户分出工作状态的属性和工作内容,方便建模,防止功能重复和多余的类。 用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。 构成 用例图由参与者 参与者 (Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。 用例

用例 用例 是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。 系统边界 系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。 用例图 USE CASE图 主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。 元素之间的关系用例图中包含的元素除了系统边界、角色和用例,另外就是关系。关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。 角色之间的关系 角色之间的关系。由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通

用例之间的关系

3.4用例之间的关系 1、泛化关系Generalization 代表一般与特殊的关系。(类似于继承) 在用例泛化中,子用例表示父用例的特殊形式,子用例继承了父用例的行为和属性,也可以增加新的行为和属性或覆盖父用例中的行为。 例子:一个租赁或销售系统用例的部分内容,在此,父用例是“预定”,其两个子用例分别是“网上预定”和“电话预定”,这两个用例都继承了父用例的行为,并可以添加自己的行为。 2、包含关系Include 一个用例(基用例,基本用例)可以包含其他用例(包含用例)具有的行为,并把它所包含的用例行为作为自身用例的一部分,这被称为包含关系。 在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。 例子:一个租赁或销售系统中,“填写电子表格”的功能在“网上预定”的过程中使用,不管如何处理“网上预定”用例,总是要运行“填写电子表格”用例,因此具有包含关系。 3、扩展关系Extend 一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系是把新的行为插入到已有的用例中的方法。在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。 基本用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例的扩展点上。 扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定是否执行扩展。一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。同一个基本用例的几个扩展可以在一起使用。

用例包含关系

1.1 指南:包含关系 主题 ? 解释 ? 执行包含 ? 描述包含关系 ? 使用示例 1.1.1 解释 基本用例通过包含关系连接到包含用例。包含用例总是抽象的。它描述在执行基本用例的用例实例中插入的行为段。基本用例可控制与包含用例的关系,并可依赖于执行包含用例所得的结果,但基本用例和包含用例都不能访问对方的属性。从这种意义上讲,包含用例是被封装的,它代表可在各种不同基本用例中复用的行为。 您可以将包含关系用于: ? 从基本用例中分解出这样的行为:它对于了解基本用例的主要目的并不是必需的,只有它的结果才比较重要。 ? 分解出两个或更多个用例所共有的行为。 示例: 在 ATM 系统中,用例 Withdraw Cash (提款)、Deposit Cash (取 款)和 Transfer Funds (转账)都需要包含系统识别客户的方式。 可以将此行为抽取到一个名为 Identify Customer (识别客户)的 新包含用例中,这三个基本用例都包含此用例。这些基本用例独立 于用于标识的方法,因此将此方法封装在包含用例中。从基本用例 的角度来看,标识方法是否会读取银行磁卡或执行视网膜扫描并不 重要。它们仅依赖于 Identify Customer 的结果,即客户的身份。 反之亦然,从 Identify Customer 用例的角度来看,基本用例如 何使用客户身份或者在执行包含用例之前基本用例中发生了什么 并不重要:标识方法都会完全相同。

在ATM 系统中,用例Withdraw Cash、Deposit Cash 和Transfer Funds 中都包含用例Identify Customer。 一个基本用例可以有多个包含用例。一个包含用例可以包含在若干基本用例中。这并不表示这些基本用例之间存在任何关系。甚至同一个包含用例和同一个基本用例之间可以有多个包含关系,前提是包含用例必须在基本用例中的不同位置插入。而包含关系就定义了插入的位置。添加的所有用例都可以是嵌套的,这意味着一个包含用例可以用作另一个包含用例的基本用例。 由于包含用例是抽象的,因此它不需要有与它相关的主角。只有当包含用例中的行为明确地涉及到与主角的交互时,才需要与主角的通信关联关系。 1.1.2执行包含 包含用例的行为插入到基本用例中的一个位置。当遵循基本用例说明的用例实例到达基本用例中定义了包含关系的位置,它就将改而遵循包含用例的说明。一旦执行完包含用例,用例实例就将在基本用例中它先前停止的地方重新开始。 遵循基本用例(包含了包含用例)说明的用例实例。 包含关系是无条件的:如果用例实例到达基本用例中定义了包含关系的位置,就总会执行包含。如果要表达条件,就需要将其作为基本用例的一部分来表达。如果用例实例无论如何也不能到达定义了包含关系的位置,则不会执行包含。

UML各种图详解

父用例通常是抽象的。

1 一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。 2》UML 支持的可见性类型的标志 3》多重值和它们的表示

4》类图之间的关系有:泛化(继承),依赖,关联,聚合/组合。 1.聚合/组合 聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。 举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期-- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于Company类的实例而存在。 ·基本聚合(聚合) 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。 图中清楚的表明了类Car对象包含了另一类Wheel的4个实例,这两者在概念上是密不可分的,其中的一个类是另一个类的构成成分。菱形表示“包含”,箭头表示被包含的对象,数字4表示包含的数目。 ·组合聚合(组合) 组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。 注意:组合关系如聚合关系一样绘制,不过这次菱形是被填充的。 2.依赖 依赖可以说是要完成C5里的所有功能,一定要有C6的方法协助才行 3.关联 可以分为单向关联,双向关联

用例图

用例图 用例图就是由主角、用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。简介 用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。 用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。 将每个系统中的用户分出工作状态的属性和工作内容,方便建模,防止功能重复和多余的类。 用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。 ps: 提取出“名词”,画用例图 构成 用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。 参与者 参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。

用例 用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。 系统边界 系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。 箭头 箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。 作用 用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。 元素之间的关系用例图中包含的元素除了系统边界、角色和用例,另外就是关系。关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。 角色之间的关系 角色之间的关系。由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。 用例之间的关系: 包含关系:基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。在UML1.1中用例

用例图含义及画法

用例图的含义及画法 用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。用例图在各种开发活动中被广泛的应用,但是它最常用来描述系统及子系统。 当用例视图在外部用户出现以前出现时,它捕获到系统、子系统或类的行为。它将系统功能划分成对参与者(即系统的理想用户)有用的需求。而交互部分被称作用例。用例使用系统与一个或者多个参与者之间的一系列消息来描述系统中的交互。 用例图包含六个元素,分别是:参与者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。 用例图可一个包含注释和约束,还可一个包含包,用于将模型中的元素组合成更大的模块。有时,可以将用例的实例引入到图中。用例图模型如下所示,参与者用人形图标来标识,用例用椭圆来表示,连线表示它们之间的关系。 一.参与者(Actor) 1.参与者的概念 参与者是系统外部的一个实体,它以某种方式参与用例的执行过程。参与者通过向系统输入或请求系统输入某些事件来触发系统的执行。参与着由参与用例时所担当的角色来表示。在UML中,参与者用名字写在下面的人形图标表示。 每个参与者可以参与一个或多个用例。它通过交换信息与用例发生交互(因此也与用例所在的系统或类发生了交互),而参与者的内部实现与用例是不相关的,可以用一组定义其状态的属性充分的描述参与者。

UML用例图等9种图的中文样例

软件工程的5个阶段:需求分析(Requirements Capture),系统分析与设计(System Analysis and Design),实现(Implement),测试(Test),维护(Maintenance)。 2.UML的定义包括UML语义和UML表示法两个部分。UML语义描述基于UML 的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致和通用的定义性说明。UML表示法,为开发者或开发工具使用图形工具和文本语法为系统建模提供了标准。 3.UML(Unified Modeling Language)由视图(View),图(Diagram),模型元素(Model Element),通用机制(General Mechanism)等组成,还提供了扩展机制(Extension Mechanism),使得UML语言能够适应一个特殊的方法或者扩充到一个组织或用户。 a)视图是表达系统的某一方面特征的UML建模元素的子集,由多个图构成,是在某一个抽象层上,对系统的抽象表示。 b)图是模型元素集的图形表示,通常由弧(关系)和顶点(其他模型元素)相互连接构成。 c)模型元素代表面向对象中的类、对象、消息和关系等概念,是构成图的基本概念。 d)通用机制用于表示其他信息,比如注释、模型元素的语义等。 4.UML用模型来描述系统的结构或静态特征,以及行为或动态特征,从不同的视角为系统架构建模,形成不同视角: a)用例视图(Use Case View),强调从用户角度看到的或需要的系统功能,是被称为参与者的外部用户所能观察到的系统功能的模型图。 b)逻辑视图(Logical View),展现系统的静态或结构组成及特征,也被称为结构模型视图(Structural Model View)或者静态视图(Static View)。 c)并发视图(Concurrent View),体现了系统的动态或者行为特征,也称为行为模型视图(Behavioral Model View)或动态视图(Dynamic View)。 d)组件视图(Component View),体现了系统实现的结构和行为特征,也称为实现模型视图(Implementation Model View)。 e)配置视图(Deployment View),体现了系统实现环境的结构和行为特征,也被称为环境模型视图(Environment Model View)或者物理视图(Physical View)。 5.视图由图构成,UML提供了9种不同的图: a)用例图(Use Case Diagram),描述系统功能;

UML用例图的画法

一.UML简介 UML(统一建模语言,Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。在系统分析阶段,我们一般用UML来画很多图,主要包括用例图、状态图、类图、活动图、序列图、协作图、构建图、配置图等等,要画哪些图要根据具体情况而定。其实简单的理解,也是个人的理解,UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。 二.用例建模简介 用例建模是UML建模的一部分,它也是UML里最基础的部分。用例建模的最主要功能就是用来表达系统的功能性需求或行为。依我的理解用例建模可分为用例图和用例描述。用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。用例描述用来详细描述用例图中每个用例,用文本文档来完成。 1.用例图 参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。 用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。 系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。

UML实例图讲解

UML实践----用例图、顺序图、状态图、类图、包图、协作图 2009-01-20 作者:Randy Miller 来源:网络 面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML的精彩之处。 UML中有九种建模的图标,即: ?用例图 ?类图 ?对象图 ?顺序图 ?协作图 ?状态图 ?活动图 ?组件图 ?配置图 本课程中的某些部分包含了这些图的细节信息的页面链接。而且每个部分都有一个小问题,测试一下你对这个部分的理解。 为什么UML很重要? 为了回答这个问题,我们看看建筑行业。设计师设计出房子。施工人员使用这个设计来建造房子。建筑越复杂,设计师和施工人员之间的交流就越重要。蓝图就成为了这个行业中的设计师和施工人员的必修课。 写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。现在它已经成为了软件行业的一部分了。UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。 UML被应用到面向对象的问题的解决上。想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。一个模型model就是根本问题的抽象。域domain就是问题所处的真实世界。 模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。记住把一个对象想象成“活着的”。对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。对象的属性的值决定了它的状态state。 类Classes是对象的“蓝图”。一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。对象是类的实例instances。 用例图 用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。 用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。下面是一个医院门诊部的情节。 “一个病人打电话给门诊部预约一年一次的身体检查。接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录。”

[教学研究]用例图元素之间的关系

[教学研究]用例图元素之间的关系用例图元素之间的关系 用例图中包含的元素除了系统边界、角色和用例,另外就是关系。包括:角色之间的关系、用例之间的关系、用例和角色之间的关系。 角色之间的关系 由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。 用例之间的关系: (1)包含关系:基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。

简单的理解就是用例可以包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分。 (2)泛化关系:代表一般于特殊的关系。它的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。 泛化(Generalization)在面向对象的技术中无处不在,下图给出了一个使用泛化的用例图:

在用例图中,角色和用例都能够泛化。角色的泛化/继承很容易理解,因为角色本来就是类(Class),它是一种版型(stereotype)为Actor的类,所以角色的继承直观而自然。但是用例的继承实际上分为两种情况,并不是简单的使用泛化,而是使用扩展(extended)和包含(include)两种泛化的特例。扩展用于子用例的动作步骤基本上和父用例的动作步骤相同,只是增加了另外的一些步骤的情况下。包含用于子用例包含了所有父用例的动作,它将父用例作为了自己的一个大步骤,子用例常常包含一个以上的父用例。 (3)扩展关系: 扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。与包含关系一样,扩展关系也是依赖关系的版型。在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。 它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。在以下几种情况下,可使用扩展用例: a.表明用例的某一部分是可选的系统行为(这样,您就可以将模型中的可选行为和必选行为分开); b.表明只在特定条件(如例外条件)下才执行的分支流;

UML的9种图例的定义、用途、画法总结

1 UML 的9种图例的总结 一、 用例图 1、 定义 用例定义: 用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。(这是UML 对用例的正式定义,可以这样去理解,用例是参与者想要系统做的事情,用例在画图中用椭圆来表示,椭圆下面附上用例名称)。 用例图定义: 由参与者(Actor )、用例(Use Case )以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。 2、 用途 用例图(User Case )是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。 用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。 3、 组成元素以及元素之间的关系说明 用例图由参与者(Actor )、用例(Use Case )、系统边界(用矩形表示—注明系统名称)、箭头组成,用画图的方法来完成。 参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。 系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称, 参与者画在边界

的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。 箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。 元素之间的关系: 用例图中包含的元素除了系统边界、角色和用例,另外就是关系。关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。 角色之间的关系: 角色之间的关系。由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系(泛化关系可以先简单理解为继承),泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。 用例之间的关系: ●包含关系: 基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。在UML1.1中用例之间是使用和扩展这两种关系,这两种关系都是泛化关系的版型。在UML1.3以后的版本中用例之间是包含和扩展这两种关系。 ●泛化关系: 它的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。 ●扩展关系 扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。与包含关系一样,扩展关系也是依赖关系的版型。在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。 用例的泛化、包含、扩展关系的比较。一般来说可以使用“is a”和“has a”来判断使用那种关系。泛化和扩展关系表示用例之间是“is a”关系,包含关系表示用例之间是“has a”关系。扩展与泛化相比多了扩展点,扩展用例只能在基本用例的扩展点上进行扩展。在扩展关系中基本用例是独立存在。在包含关系中执行基本用例的时候一定会执行包含用例。(1)如果需要重复处理两个或多个用例时可以考虑使用包含关系,实现一个基本用例对另一个的引用。(2)当处理正常行为的变形是偶尔描述时可以考虑只用泛化关系。(3)当描述正常行为的变形希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。扩展关系比较难理解,如果把扩展关系看作是带有更多规则限制的泛化关系,可以帮助理解。通常先获得基本用例,针对这 2

UML用例图三种关系详解

1UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解 共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。 1、包含(include) 包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。 包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。 例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。

2、扩展(extend) 扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。 对于一个扩展用例,可以在基用例上有几个扩展点。 例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:

用例之间的关系

3、4用例之间的关系 1、泛化关系Generalization 代表一般与特殊的关系。(类似于继承) 在用例泛化中,子用例表示父用例的特殊形式,子用例继承了父用例的行为与属性,也可以增加新的行为与属性或覆盖父用例中的行为。 例子:一个租赁或销售系统用例的部分内容,在此,父用例就是“预定”,其两个子用例分别就是“网上预定”与“电话预定”,这两个用例都继承了父用例的行为,并可以添加自己的行为。 2、包含关系Include 一个用例(基用例,基本用例)可以包含其她用例(包含用例)具有的行为,并把它所包含的用例行为作为自身用例的一部分,这被称为包含关系。 在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。 例子:一个租赁或销售系统中,“填写电子表格”的功能在“网上预定”的过程中使用,不管如何处理“网上预定”用例,总就是要运行“填写电子表格”用例,因此具有包含关系。 3、扩展关系Extend 一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系就是把新的行为插入到已有的用例中的方法。在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。 基本用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例的扩展点上。 扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定就是否执行扩展。一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。同一个基本用例的几个扩展可以在一起使用。 基本用例不知道扩展的任何细节、没有扩展用例,基本用例就是完整的。 例子:一个汽车租赁系统用例图的部分内容。在此,基本用例就是“还车”,扩展用例就是

相关文档
最新文档