用例图元素之间的关系
- 格式:doc
- 大小:126.50 KB
- 文档页数:8
3.4用例之间的关系1、泛化关系Generalization代表一般与特殊的关系。
(类似于继承)在用例泛化中,子用例表示父用例的特殊形式,子用例继承了父用例的行为和属性,也可以增加新的行为和属性或覆盖父用例中的行为。
例子:一个租赁或销售系统用例的部分内容,在此,父用例是“预定”,其两个子用例分别是“网上预定”和“电话预定”,这两个用例都继承了父用例的行为,并可以添加自己的行为。
2、包含关系Include一个用例(基用例,基本用例)可以包含其他用例(包含用例)具有的行为,并把它所包含的用例行为作为自身用例的一部分,这被称为包含关系。
在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。
例子:一个租赁或销售系统中,“填写电子表格”的功能在“网上预定”的过程中使用,不管如何处理“网上预定”用例,总是要运行“填写电子表格”用例,因此具有包含关系。
3、扩展关系Extend一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系是把新的行为插入到已有的用例中的方法。
在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。
基本用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例的扩展点上。
扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定是否执行扩展。
一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。
同一个基本用例的几个扩展可以在一起使用。
基本用例不知道扩展的任何细节.没有扩展用例,基本用例是完整的。
例子:一个汽车租赁系统用例图的部分内容。
在此,基本用例是“还车”,扩展用例是“交纳罚金”。
如果一切顺利汽车可以被归还,那么执行“还车”用例即可。
但是如果超过了还车的时间或汽车受损,按照规定客户要交纳一定的罚金,这时就不能执行提供的常规动作。
UML之⽤例图⽤例图⽤例图是⽤来描述系统功能的技术,表⽰⼀个系统中⽤例与参与者及其关系的图,主要⽤于需求分析阶段。
⽤例图的基本组成元素:参与者、⽤例、元素之间的关系。
⽤例图使⽤范围:需求分析1.捕获需求。
描述功能需求、⾏为需求(系统要完成什么任务)2.分析需求。
明确类和对象,建⽴之间的关系⽤例图的基本概念1、⽤例图是表⽰⼀个系统中⽤例与参与者关系之间的图。
它描述了系统中相关的⽤户和系统对不同⽤户提供的功能和服务。
2、⽤例图相当于从⽤户的视⾓来描述和建模整个系统,分析系统的功能与⾏为。
3、⽤例图中的主要元素包括参与者、⽤例以及元素之间的关系。
此外,⽤例图还可以包括注解和约束,也可以使⽤包将图中的元素组合成模块。
如:参与者的概念1、参与者是与系统主体交互的外部实体的类元,描述了⼀个或⼀组与系统产⽣交互的外部⽤户或外部事物。
2、参与者位于系统边界之外,⽽不是系统的⼀部分。
3、参与者是从现实世界中抽象出来的⼀种形式,却不⼀定确切对应的现实中的某个特定对象。
符号:如何确定参与者?通过对参与者进⾏关注和分析,我们可以把重点放在如何与系统交互这⼀问题上,便于进⼀步确定系统的边界。
另外,参与者也决定了系统需求的完整性。
确定参与者可以从以下⼏个⾓度来考虑:1)为系统提供输⼊的⼈或事物2)接收系统输出的⼈或事物3)需要接⼊的第三⽅系统或设备4)时间是否会触发某些事件5)负责⽀持或维护系统中信息的⼈系统中的参与者⼀般可以分为四类:主要业务参与者:主要从⽤例的执⾏中获得好处的关联⼈员。
主要系统参与者:直接同系统交互以发起或触发业务或系统事件的关联⼈员。
外部服务参与者:响应来⾃⽤例的请求的关联⼈员。
外部接收参与者:从⽤例中接收某些价值或输出的⾮主要的关联⼈员。
参与者的泛化关系当系统中的⼏个参与者既扮演⾃⾝的⾓⾊,同时也有更⼀般化的⾓⾊时,可以通过建⽴泛化关系来进⾏描述。
与类相似,⽗参与者可以是抽象的,即不能创建⼀个⽗参与者的直接实例,这就要求属于抽象⽗参与者的外部对象⼀定能够属于其⼦参与者之⼀。
UML用例图的主要元素解析与使用方法UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,用例图是UML的一种图表类型,用于描述系统的功能需求和用户与系统之间的交互。
在软件开发过程中,用例图是非常重要的工具,它能够帮助开发团队更好地理解系统需求,设计出更合理的系统架构。
本文将对UML用例图的主要元素进行解析,并介绍其使用方法。
一、参与者(Actors)参与者是指与系统进行交互的实体,可以是人、其他系统或外部设备。
在用例图中,参与者用一个小人的图标表示。
参与者与系统之间通过用例进行交互。
一个参与者可以在多个用例中出现,也可以在一个用例中有多个参与者。
二、用例(Use Cases)用例是对系统功能的描述,它表示系统为参与者提供的一项功能或服务。
用例图中,用例用一个椭圆形图标表示。
每个用例都有一个名称,通常使用动词短语来描述功能。
用例之间可以有关系,如包含关系(include)、扩展关系(extend)等。
三、关系(Relationships)在用例图中,参与者与用例之间可以有不同类型的关系,如关联关系(association)、包含关系(include)、扩展关系(extend)等。
关联关系表示参与者与用例之间的关联,包含关系表示一个用例包含另一个用例,扩展关系表示一个用例可以扩展另一个用例。
四、系统边界(System Boundary)系统边界是用于表示系统的边界,用一个矩形框表示。
在用例图中,系统边界将参与者和用例包围在内,表示系统的范围和边界。
五、泛化(Generalization)泛化是一种继承关系,用于表示两个用例之间的继承关系。
在用例图中,泛化关系用一个带有箭头的实线表示,箭头指向父用例。
六、扩展点(Extension Points)扩展点用于表示一个用例可以被扩展的地方。
在用例图中,扩展点用一个小圆圈表示,并与扩展用例之间用虚线连接。
使用UML用例图进行系统建模时,需要按照以下步骤进行:1. 确定参与者:首先,需要确定系统中的参与者,包括用户、其他系统或外部设备。
用例图设计:根据需求,绘制用例图,明确系统功能和模块一、引言随着信息技术的快速发展,软件系统在各个领域得到广泛应用。
而在软件系统开发的过程中,需求分析是至关重要的一环。
其中,用例图作为一种常用的需求分析工具,能够帮助开发团队理解系统功能并明确系统模块。
本文将介绍用例图设计的基本概念和步骤,并结合一个实际案例进行说明。
二、用例图设计概述1. 用例图的定义用例图是一种描述系统功能和角色之间交互关系的图形化工具。
它能够帮助开发团队和用户理解系统的功能,并明确各个模块的职责和关系。
2. 用例图的组成元素用例图由用例、参与者和关系三个主要元素组成。
- 用例(Use Case):用例是指系统提供给用户的功能需求,用一个椭圆形图标表示。
每个用例都有一个唯一的名称,用以描述其功能和目的。
- 参与者(Actor):参与者是指与系统交互的用户、其他系统或外部设备,用一个小人形图标表示。
每个参与者都有一个唯一的名称,用以描述其角色和功能。
- 关系(Relationship):关系是指用例与参与者之间或用例之间的交互关系,用实线、虚线或箭头表示。
常见的关系有包含关系、扩展关系和泛化关系。
三、用例图设计步骤用例图设计的步骤主要包括需求收集、用例识别、参与者识别、用例编写和关系建立。
1. 需求收集需求收集是用例图设计的第一步,开发团队需要与用户进行充分的沟通和交流,了解系统的功能需求和用户的期望。
通过与用户积极互动,收集尽可能多的信息,以便后续的用例识别和设计。
2. 用例识别用例识别是根据需求收集的结果,将系统的功能需求划分为不同的用例。
每个用例都应该描述一个具体的功能,并具有明确的输入和输出。
3. 参与者识别参与者识别是根据需求收集的结果,将与系统交互的用户、其他系统或外部设备识别出来,并为每个参与者定义明确的角色和功能。
4. 用例编写用例编写是将识别出来的用例进行详细描述。
每个用例应包含用例名称、前置条件、正常流程、异常流程和后置条件等内容。
一、名词解释1、面向对象方法答:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
面向对象方法不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系。
2、什么是继承、什么是对象、什么是类、什么是聚合?答:继承:继承是指特殊类自动地拥有或隐含地复制其一般类的全部属性与操作,这种机制也称作一般类对待特殊类的泛化。
对象:①现实世界中客观存在的任何事物都可以被看作是对象。
②对象是构成系统的一个基本单位,它由一组属性和对这组属性进行操纵的一组操作构成。
类:类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。
类的作用是创建对象,对象是类的一个实例。
聚合:一个对象由其他若干对象作为其构成部分,把这种对象间的关系称为聚合。
聚合刻画了现实事物之间的构成关系。
3、什么是参与者、什么是用况、什么用例?答:参与者:一个参与者定义了一组在功能上密切相关的角色,当一个事物与系统交互时,该事物可以扮演这样的角色。
参与者是在系统之外的与系统进行交互的任何事物。
用况:一个用况是描述系统的一项功能的一组动作序列,这样的动作序列表示参与者与系统间的交互,系统执行该动作序列要为参与者产生结果。
用例图:用例图是一幅由一组参与者、一组用例以及这些元素之间的关系组成的图。
这些关系是参与者和用况之间的关联、参与者之间的继承,以及用例之间的包含、扩展和继承。
4、什么是类图、是顺序图、通讯图?答:类图:类图由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。
类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。
类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
UML⽤例图总结⽤例图主要⽤来描述“⽤户、需求、系统功能单元”之间的关系。
它展⽰了⼀个外部⽤户能够观察到的系统功能模型图。
【⽤途】:帮助开发团队以⼀种可视化的⽅式理解系统的功能需求。
⽤例图所包含的元素如下: 1. 参与者(Actor) 表⽰与您的应⽤程序或系统进⾏交互的⽤户、组织或外部系统。
⽤⼀个⼩⼈表⽰。
2. ⽤例(Use Case) ⽤例就是外部可见的系统功能,对系统提供的服务进⾏描述。
⽤椭圆表⽰。
3. ⼦系统(Subsystem) ⽤来展⽰系统的⼀部分功能,这部分功能联系紧密。
4. 关系 ⽤例图中涉及的关系有:关联、泛化、包含、扩展。
如下表所⽰: a. 关联(Association) 表⽰参与者与⽤例之间的通信,任何⼀⽅都可发送或接受消息。
【箭头指向】:指向消息接收⽅ b. 泛化(Inheritance) 就是通常理解的继承关系,⼦⽤例和⽗⽤例相似,但表现出更特别的⾏为;⼦⽤例将继承⽗⽤例的所有结构、⾏为和关系。
⼦⽤例可以使⽤⽗⽤例的⼀段⾏为,也可以重载它。
⽗⽤例通常是抽象的。
【箭头指向】:指向⽗⽤例 c. 包含(Include) 包含关系⽤来把⼀个较复杂⽤例所表⽰的功能分解成较⼩的步骤。
【箭头指向】:指向分解出来的功能⽤例 d. 扩展(Extend) 扩展关系是指⽤例功能的延伸,相当于为基础⽤例提供⼀个附加功能。
【箭头指向】:指向基础⽤例 e. 依赖(Dependency) 以上4种关系,是UML定义的标准关系。
但VS2010的⽤例模型图中,添加了依赖关系,⽤带箭头的虚线表⽰,表⽰源⽤例依赖于⽬标⽤例。
【箭头指向】:指向被依赖项 5. 项⽬(Artifact) ⽤例图虽然是⽤来帮助⼈们形象地理解功能需求,但却没多少⼈能够通看懂它。
很多时候跟⽤户交流甚⾄⽤Excel都⽐⽤例图强,VS2010中引⼊了“项⽬”这样⼀个元素,以便让开发⼈员能够在⽤例图中链接⼀个普通⽂档。
⽤依赖关系把某个⽤例依赖到项⽬上: 然后把项⽬-》属性的Hyperlink设置到你的⽂档上; 这样当你在⽤例图上双击项⽬时,就会打开相关联的⽂档。
用例图设计实验报告1. 引言用例图是一种表示系统交互的图形化工具,它描述了系统中的角色、用例以及它们之间的关系。
用例图常用于需求分析和系统设计过程中,有助于明确系统功能和行为。
本实验旨在通过实际案例,了解用例图的设计过程和使用方法,并熟悉用例图的各种元素及其之间的关系。
2. 实验背景想象一个在线购物系统,我们可以将用户、商家和管理员作为系统中的角色,而登录、浏览商品、下单、支付等操作可以作为系统的用例。
通过用例图的设计,我们可以很清晰地了解用户和商家之间的交互以及各个用例之间的关系。
3. 实验过程及结果3.1 角色的确定在开始设计用例图之前,首先需要确定系统中的角色。
根据实验背景,我们可以确定用户、商家和管理员是系统中的角色。
3.2 用例的分析接下来,我们需要分析系统中的用例,以确定用户和商家与系统交互的动作。
通过与实际业务的对比分析,我们可以确定以下用例:1. 用户登录:用户在系统中登录的操作。
2. 用户浏览商品:用户在系统中浏览商品的操作。
3. 用户下单:用户在系统中下单购买商品的操作。
4. 用户支付:用户在系统中支付订单的操作。
5. 商家登录:商家在系统中登录的操作。
6. 商家发布商品:商家在系统中发布商品的操作。
7. 商家管理订单:商家在系统中管理订单的操作。
8. 管理员登录:管理员在系统中登录的操作。
9. 管理员管理用户:管理员在系统中管理用户的操作。
10. 管理员审核商品:管理员在系统中审核商品的操作。
3.3 用例图的绘制根据上述用例的分析结果,我们可以开始绘制用例图。
用例图由用例、角色和关系三部分组成,其中用例用椭圆表示,角色用方框表示,而关系用箭头表示。
下面是绘制的用例图示例:通过用例图的绘制,我们可以清晰地看到用户、商家和管理员之间的交互关系以及各个用例之间的依赖关系。
3.4 用例图的分析通过对用例图的分析,我们可以得出以下结论:- 用户和商家角色有一些相同的用例,如登录和浏览商品。
uml各种图例及说明1、用例图描述角色以及角色与用例之间的连接关系。
说明的是谁要使用系统,以及他们使用该系统可以做些什么。
一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
2、类图类图是描述系统中的类,以及各个类之间的关系的静态视图。
能够让我们在正确编写代码以前对系统有一个全面的认识。
类图是一种模型类型,确切的说,是一种静态模型类型。
3、对象图与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。
它描述的不是类之间的关系,而是对象之间的关系。
4、活动图描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。
能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
5、状态图描述类的对象所有可能的状态,以及事件发生时状态的转移条件。
可以捕获对象、子系统和系统的生命周期。
他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。
一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。
状态图是对类图的补充。
6、序列图(顺序图)序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。
顺序图可以用来展示对象之间是如何进行交互的。
顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
7、协作图和序列图相似,显示对象间的动态合作关系。
可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。
如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
8、构件图(组件图)描述代码构件的物理结构以及各种构建之间的依赖关系。
⽤例图之参与者、⽤例间的四种关系⽤例图中包括三种元素,参与者,⽤例,它们之间的关系。
下⾯说说参与者与⽤例之间,⽤例与⽤例之间都有哪些关系。
1.关联关系定义:参与者与⽤例之间通常⽤关联关系来描述。
表⽰⽅法:带箭头的实线,箭头指向⽤例。
如图所⽰:2. 泛化关系定义:⼀个⽤例可以被特别列举为⼀个或多个⼦⽤例,这被称为⽤例泛化。
泛化关系在类间也有。
⼦⽤例从⽗⽤例处继承⾏为和属性,还可以添加⾏为或覆盖、改变已继承的⾏为。
表⽰⽅法:带空⼼箭头的实线,箭头指向被泛化(被继承)的⽤例,即⽗⽤例。
(PS:泛化关系的箭头不是指向被泛化,⽽是指向被继承。
泛化和继承是不同的⽅向。
泛化是从下到上的抽象过程,继承是从上到下,从⼀般到特殊的过程。
)如图所⽰:机房收费系统中可以这样应⽤:当系统中具有⼀个或多个⽤例是⼀般⽤例的特化时,就使⽤⽤例泛化。
3.包含关系定义:其中⼀个⽤例(基础⽤例)的⾏为包含了另⼀个⽤例(包含⽤例)的⾏为。
基础⽤例可以看到包含⽤例,并依赖于包含⽤例的执⾏结果。
但是⼆者不能访问对⽅的属性。
表⽰⽅法:虚线箭头+<<include>>字样,箭头指向被包含的⽤例。
如图所⽰:使⽤情况:(1)如果两个以上⽤例有重复的功能,则可以将重复的功能分解到另⼀个⽤例中。
其他⽤例可以和这个⽤例建⽴包含关系。
(2)⼀个⽤例的功能太多时,可以⽤包含关系创建多个⼦⽤例。
4.扩展关系(extend)定义:是把新⾏为插⼊到已有⽤例的⽅法。
个⼈感觉可以叫做特殊情况处理。
⽐如去⾷堂⽤饭卡打饭,绝⼤部分⼈是刷卡,拿饭,两个步骤就完成了。
但是如果某个学⽣的饭卡⾥没钱了,假定不⽤现⾦或者借钱或者赊账等等其他的⽅式来打饭,⽽是必须⽤⾃⼰的饭卡来打饭。
那么他就要先去给饭卡充值。
“饭卡充值”就是“刷卡”的⼀个扩展⽤例。
“饭卡充值”与“刷卡”就是扩展关系。
表⽰⽅法:虚线箭头+<<extend>>字样,箭头指向被扩展的⽤例(即基础⽤例)。
⽤例图中的三种关系包括、扩展、泛化⽤例图使⽤户与开发者交流的⼀种重要的⽅式,是对⽤户需求的⼀种描写叙述。
开发者从⽤户的⾓度总体上理解系统的功能。
⽤例图主要有三种元素:參与者(Actor)。
⽤例。
以及⽤例图中对象间到的关系。
当中关系有包括、扩展是⽤例图中特有的,泛化在其它类图中相同存在。
包括:当能够从两个或两个以上的⽤例中提取公共⾏为时,应该使⽤包括的关系来表⽰它们。
当中这个提取出来的公共⽤例成为抽象⽤例。
⽽把原始⽤例成为基本⽤例或基础⽤例。
当中“<<include>>”是包括关系的构造型,箭头指向抽象⽤例。
⽐如,在机房收费系统中“注冊学⽣信息”和“充值”两个⽤例都须要操作员或者管理员登陆。
为此,能够定义⼀个抽象⽤例“⽤户登陆”。
⽤例“注冊学⽣信息”和“充值”与⽤例“⽤户登陆”之间的关系就是包括关系。
如图有时当某⽤例的事件流过于复杂时,为了简化⽤例的描写叙述,我们也能够抽象出⼀个基⽤例,来包括这些颗粒的⽤例作⽤:当多个⽤例须要使⽤同⼀段事件流时。
抽象成为公共⽤例,能够避免在多个⽤例中反复地描写叙述这段事件流。
也能够防⽌这段时间流在不同⽤例中的描写叙述出现不⼀致。
当须要改动这段公共的需求时,也仅仅要改动⼀个⽤例,避免同⼀时候改动多个⽤例⽽产⽣的不⼀致和反复性⼯作。
另外,当某个⽤例的事件流过于复杂时,为了简化⽤例的描写叙述。
也能够将某段事件流抽象成为⼀个被包括的⽤例。
2、扩展关系假设⼀个⽤例明显地混合了两种或者两种以上的不同场景,即依据情况可能发⽣多种分⽀,则能够将这个⽤例分为⼀个基本⽤例和⼀个或多个扩展⽤例。
这样可能会使描写叙述更加清晰。
扩展⽤例为基⽤例加⼊新的⾏为。
扩展⽤例能够訪问基⽤例的属性,因此他能依据基⽤例中扩展点的当前状态来决定是否运⾏⾃⼰。
⽽扩展⽤例对基⽤例不可见。
如机房收费系统中“维护学⽣信息”操作时假设发现信息有误或者更新则须要使⽤“改动学⽣信息”⽤例完毕更新,所以⽤例“查询上机记录”和“导出EXCEL”之间的关系就是扩展关系。
用例图元素之间的关系用例图中包含的元素除了系统边界、角色和用例,另外就是关系。
包括:角色之间的关系、用例之间的关系、用例和角色之间的关系。
角色之间的关系由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。
用例之间的关系:(1)包含关系:基本用例的行为包含了另一个用例的行为。
基本用例描述在多个用例中都有的公共行为。
包含关系本质上是比较特殊的依赖关系。
它比一般的依赖关系多了一些语义。
在包含关系中箭头的方向是从基本用例到包含用例。
简单的理解就是用例可以包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分。
(2)泛化关系:代表一般于特殊的关系。
它的意思和面向对象程序设计中的继承的概念是类似的。
不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。
在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。
泛化(Generalization)在面向对象的技术中无处不在,下图给出了一个使用泛化的用例图:在用例图中,角色和用例都能够泛化。
角色的泛化/继承很容易理解,因为角色本来就是类(Class),它是一种版型(stereotype)为Actor的类,所以角色的继承直观而自然。
但是用例的继承实际上分为两种情况,并不是简单的使用泛化,而是使用扩展(extended)和包含(include)两种泛化的特例。
扩展用于子用例的动作步骤基本上和父用例的动作步骤相同,只是增加了另外的一些步骤的情况下。
包含用于子用例包含了所有父用例的动作,它将父用例作为了自己的一个大步骤,子用例常常包含一个以上的父用例。
(3)扩展关系:扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。
与包含关系一样,扩展关系也是依赖关系的版型。
在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。
它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。
在以下几种情况下,可使用扩展用例:a.表明用例的某一部分是可选的系统行为(这样,您就可以将模型中的可选行为和必选行为分开);b.表明只在特定条件(如例外条件)下才执行的分支流;c.表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。
所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。
图中的第二个例子中,在还书的过程中,只有在例外条件(读者遗失书籍)的情况下,才会执行赔偿遗失书籍的分支流。
用例与角色之间的关系用例由角色发起,一个用例必须至少与一个执行者关联。
如何画UML用例图Tag: UML , 包含 , 用例 , 用例图 , 用例描述 , 统一建模 , 范化 | Author: bts |UML用例图是非常有用的一种图,在需求分析中,可以让人们从繁重的文档中解脱出来,并且促使人们在做需求时能够更加准确、直观的表现自己的意思。
常用的语言文字往往是不能将一种事物表达得秀清晰,这时候就需要用其它的方式来进行表达,用例图就是其中一种很好的方法,当然用例图不仅仅只是做为需求分析专用,他强大的应用性还可以用于其它很多地方,这里就不详细说明了。
画UML的工具有很多,个人首推IBM的ROSE,建议大家用这款工具来画例图,如果有时间,我会写一篇初级教程。
接下来还是介绍一下用例图吧。
1.首先简单介绍一下UML.UML(统一建模语言,Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。
它融入了软件工程领域的新思想、新方法和新技术。
它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
在系统分析阶段,我们一般用UML来画很多图,主要包括用例图、状态图、类图、活动图、序列图、协作图、构建图、配置图等等,要画哪些图要根据具体情况而定。
其实简单的理解,也是个人的理解,UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。
2.用例建模是UML建模的一部分,它也是UML里最基础的部分。
用例建模的最主要功能就是用来表达系统的功能性需求或行为。
用例建模可分为用例图和用例描述。
用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。
用例描述用来详细描述用例图中每个用例,用文本文档来完成。
3.用例图的说明这里得说明一下参与者.参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。
因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。
还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。
比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。
参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。
如下图接下来就是用例了,用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。
这是UML对用例的正式定义,初学者可能有点难懂。
我们可以这样去理解,用例是参与者想要系统做的事情。
对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。
用例在画图中用椭圆来表示,椭圆下面附上用例的名称。
如下图系统边界是用来表示正在建模系统的边界。
边界内表示系统的组成部分,边界外表示系统外部。
系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。
因为系统边界的作用有时候不是很明显。
(在画图时可省略)箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。
箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。
4.接下来就是要说说用例描述了,可以说好的用例描述直接决定工程的质量。
用例图只是简单地用图描述了一下系统,但对于每个用例,我们还需要有详细的说明,这样就可以让别人对这个系统有一个更加详细的了解,这时我们就需要写用例描述。
对于用例描述的内容,一般没有硬性规定的格式,但一些必须或者重要的内容还是必须要写进用例描述里面的。
用例描述一般包括:简要描述(说明)、前置(前提)条件、基本事件流、其他事件流、异常事件流、后置(事后)条件等等。
下面说说各个部分的意思:简要描述:对用例的角色、目的的简要描述;前置条件:执行用例之前系统必须要处于的状态,或者要满足的条件;基本事件流:描述该用例的基本流程,指每个流程都“正常”运作时所发生的事情,没有任何备选流和异常流,而只有最有可能发生的事件流;其他事件流:表示这个行为或流程是可选的或备选的,并不是总要总要执行它们;异常事件流:表示发生了某些非正常的事情所要执行的流程;后置条件:用例一旦执行后系统所处的状态;话说最近接触到了不少实用的新知识,今天先来说下对用例图的最新理解吧,改明儿再好好的写一篇关于RUP的文章。
虽然从07年就开始接触用例图这一概念,但确从来没有写过用例文本,在以前做过的项目中更多的是对着用例图写概要设计报告或其它文档。
曾经也疑惑过既然公司引入了UML用例图,用例描述作为用例图中最关键的存在,为什么在项目中确不需要写用例文本,反而用其它形式的文档来代替。
现在我大概明白了一些,原因很可能是在前公司中没有人知道怎么画出精确的用例图,怎样的用例文本才是合格的。
所以在没有标准的情况下,很难把UML 的一套给推行起来,只能取其中的一部分进行应用。
首先看用例图,以前在画的时候,只要表示出了大概的意思,那么就算是“合格”的,而且经常被告知用例图没有绝对的对与错。
以至于让我一直认为用例图的画法就真的是那么的灵活。
但事实是我错了,用例图还是有其严格的一面。
新手最容易犯的错误之一,就是把大大小小的功能项都列为了用例,这点在我之前用例中出现得很多,比如把类似“删除”,“修改”这样的东西都画成用例。
事实上,用例主要描述的事有意义的行为。
就是“有意义”这三个字,决定了并不是所有的行为都必须画成用例的,这就为我们在选择用例的时候,提供了一个很好的参考依据,告诉我们什么时候该点到为止。
之前犯过的错误还有很多,比如没有对主要角色与辅助角色之间进行细节上的区分。
现在看起来这些都是一些在概念上的细节区分,但在UML上,就是这节细节上的准确区分与把握,才决定着你的用例图在整个项目应用中是不是能发挥出应用的效果。
比如我现在使用的一套基于RUP模式的EA管理系统,只用将这些项都关注到了,它生成的报告才有很实用的价值,才能起到关键的控制作用。
再说说用例文本,那简直比八股文还要八股,很多人只知道按照事件流来写,那么在描写的时候难道只要把事件写清楚了就对了么?答案显然是错误的。
真正的用例文本,在写的时候有其严格的“规矩”,那就是其中不能涉及任何关于“界面”的字眼,如“用户可以点击XX按钮,在弹出界面中……”,这就是非常大的错误,像“按钮”,“弹出界面”这种能够反映出界面的词语,是绝对不允许出现在用例文本中的。
说用例文本很八股,还有一个原因就是他更多的时候描述的是人与系统之间的交互,所以在写的时候经常会出现这样的描述文本:事件流一.基本流:1. 用户进行文章列表时,用列开始。
2.系统提供所选文章的列表目录,并自动排序与分页。
3.用例点击列表中的文章标题。
4. 系统显示所选文章的详细内容。
…….这就是用例文本了,如果你还没什么感觉的话,那么请你认认真真的写上一上午这样的文本,相信你也会体会得更多的。
也许,之前我真的并不懂什么是用例图吧,但现在,大门既然已向我敞开,岂能轻易放过!一个画用例图的实例Tag: 例子 , 信息 , 学生 , 实例 , 家教 , 用例 , 用例图 , 角色 | Author: bts |这里用一个家教网站来简单的分析用例图的画法和用例描述的写法。
这个网站我用UML完整的分析一下,以下我提取了用例图和用例描述的部分。
这个家教网站分为前台客户系统和后台管理系统。
前台客户系统的用例图如下:后台管理系统用例图如下:对于用例描述,这里只列了后台管理系统中的网站公告发布这个用例的描述。
如下:用例名称:网站公告发布用例标识号:202参与者:负责人简要说明:负责人用来填写和修改家教网站首页的公告,公告最终显示在家教网站的首页上。
基本事件流:1.负责人鼠标点击“修改公告”按钮2.系统出现一个文本框,显示着原来的公告内容3.负责人可以在文本框上修改公告,也可以完全删除,重新写新的公告4.负责人编辑完文本框,按“提交”按钮,首页公告就被修改5.用例终止其他事件流A1:在按“提交”按钮之前,负责人随时可以按“返回”按钮,文本框的任何修改内容都不会影响网站首页的公告异常事件流:1.提示错误信息,负责人确认2.返回到管理系统主页面后置条件:网站首页的公告信息被修改注释:无。