uml基础教程用例图课件.pptx
《uml基础教程用例图课件.pptx》由会员分享,可在线阅读,更多相关《uml基础教程用例图课件.pptx(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章导读知道参与者、用例和关系的概念了解用例的粒度和规约掌握参与者和用例的确定关系思考学习以下内容 什么是用例?创建、包含和扩展用例等的思想 如何开始一个用例分析?如何表示一个用例模型?如何可视化用例之间的关系?【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。用户对系统的使用方式决定了系统如何设计和构造。用例是能够帮助分析员和用户确定系统使用情况的UML组件。一组用例就是从用户的角度出发对如何使用系统的描述。可以认为用例是系统的一组使用场景。用例图的主要要素是参与者、用例和关联。用例图主要用于描述系统的行为及各种功能之间的关系,是描述参与者(Actor)与用例以及用例与用例之间关系
2、的图。用例图从用户和外部系统的角度,分析和考察系统的行为,并通过参与者与系统之间的交互关系描述系统对外提供的功能特性,用例图用于描述系统与外部系统及用户之间的交互。UML的用例图由参与者、用例及它们之间的关系组成,它的表达方式为:用例图=参与者+用例+关系 Use Case Diagram=Actor+Use Case+Relationship3.1 用例图的构成用例图可以用于描述系统的功能性需求和系统功能的使用环境。用例图可视化地描述了系统外部的使用者(抽象为参与者)和使用者使用系统时系统为这些使用者提供的一系列服务(抽象为用例),并清晰地描述了:u参与者和参与者之间的泛化关系;u用例和用例
3、之间的包含关系、泛化关系、扩展关系;u用例和参与者之间的关联关系要用在用例图上显示某个用例:使用人形符号绘制一个参与者;绘制一个椭圆表示用例,将用例的名称放在椭圆的中心或椭圆下面的中间位置;使用带箭头或不带箭头的线段来描述参与者和用例之间的关系。举例:饮料销售机 假设你现在正着手设计一台饮料销售机。为了获得用户的观点,你会见了许多可能的用户以了解这些用户将如何与这台机器交互。饮料销售机的主要功能是允许一个顾客购买一罐饮料,很可能用户立刻就能告诉你一些有关的场景(换句话说就是用例),你可以给这组场景加上一个标签“买饮料”。下面我们来考察这个用例中每一种可能的场景。(1)用例“买饮料”这个用例的参
4、与者是买饮料的顾客。顾客将钱插入销售机触发了这个用例的场景被执行,然后用户进行选择。如果一切顺利,销售机内至少还存储有一罐被选择的饮料,则销售机会自动弹出这种饮料给顾客。上面的“买饮料”场景是唯一可描述的场景么?。显然,我们立即会想到还有其他的场景。顾客所要购买的饮料销售机中可能没有。顾客投入的钱数不是刚好等于购买饮料所需要的钱。应该如何设计饮料销售机来处理这些场景呢?先看看没有所需的饮料这个场景,它是用例“买饮料”的另一场景。可以把这个场景看成是用例执行时的一条可选路径。用例是由顾客在销售机中插入钱币所发起的。然后客户进行一个选择,销售机中至少要有一罐选择的饮料,如果没有,销售机就给顾客提示
5、一个信息,告诉顾客没有这种品牌的饮料。没有所需饮料的场景 理想情况下,顾客看到这条消息后会立即选择其它品牌的饮料。销售机也必须提供给顾客取回原来的钱的选项。这表示,销售机应给顾客两种选择:让顾客选择另一种饮料并且给顾客提供这种饮料(如果这种饮料还有存货的话)或者让顾客选择退钱。该场景的前置条件是顾客感到口渴,后置条件是顾客得到一罐饮料或者顾客投入的钱被退回。另一种“缺货”的场景。“指定品牌的饮料售完”消息显示在机器上,直到对这台机器补充为止。在这种情况下,用户不再输入钱了。销售机的客户可能更喜欢第一种场景:如果顾客已经投了钱,应该让顾客做另外一种选择而不是要机器退钱。“缺货”的场景紧接着让我们
6、来看看“付款数不正确”的这个场景。顾客按照通常的方式发起了这个用例,并进行了一个选择。假设这是机器中备有选择的饮料。如果机器中刚好存有适合的零钱,那么机器就会退还零钱并交付饮料。如果机器中没有保存零钱,它将退还钱,并显示一条消息提示用户投入适当的零钱。前置条件和前面场景一样,后置条件是顾客得到一罐饮料和找回零钱或者按原款归还钱。“付款数不正确”的场景 另一种可能是机器的储备零钱一旦用光,就会在机器上显示一条小子告诉用户需要投入适当的零钱。直到对这台机器补充零钱为止,这条消息才会消失。(2)其他用例 已经从用户的观点考察了饮料销售机。除了这些用户外,当然还有其他人加入。供货人负责为销售机提供饮料
7、,收款人(可能与供货人是同一个人)负责定期收集销售机中的钱。这说明至少需要建立两个用例:“供货”和“取钱”,这些用例细节可以通过与供货人和收款人交谈来获得。考虑“供货”用例。供货人发起这个用例是由于某个时间间隔到期所引起的。供货代表打开销售机拉出销售机前面的架子,在架子上补满各种品牌的饮料。销售员还要在机器中加零钱。然后他放好销售机的前端架子,并锁好机器。这个用例的前置条件是一个时间间隔的流逝,后置条件是供货人在机器中放置了新的待售饮料。“供货”用例还有一个“取钱”用例,同样也是因为一段时间的流逝,收款人发起了这个用例。它的前期工作步骤与”供货“一样,也是打开销售机前端架子。收款人从机器中取出
8、钱,然后按照”供货“步骤,放回架子锁好机器。这个用例的前置条件也是时间间隔的流逝,后置条件是收款人收到了钱。“取钱”用例3.1.1 参与者 参与者是用例的启动者,参与者处于用例的外部并且能够初始化一个用例,但它并不是所描述系统的一部分,它可能是人或其他外界系统。参与者是指存在于系统外部并直接与系统进行交互的人、系统、子系统或类的外部实体的抽象。每个参与者都可以参与一个或多个用例,每个用例也可以有一个或多个参与者。用一个小人表示:特别注意:参与者并不仅仅是指一个人,它代表的是一个集合。也就是说,参与者(角色)是一个群体概念,代表的是一类能使用某个功能的人或事,不能将角色的名字表示成角色的某个实例
9、(如,张三)。参与者是启动用例的前提条件,先发送消息给用例,初始化用例后,用例开始执行,在执行过程中,该用例也可能向一个或多个角色发送消息参与者可以分为两种类型:(1)主要参与者和次要参与者。主要参与者指的是执行系统主要功能的参与者,次要参与者指的是使用系统次要功能的参与者。标识出主要参与者有利于找出系统的核心功能。(2)发起参与者和参加参与者 发起参与者发起用例的执行过程,一个用例只有一个发起参与者,可以有若干个参与者。在用例中标识出发起参与者是一个有用的做法。通过回答一些问题,可以帮助建模者发现角色:u使用系统主要功能的人是谁(即主要角色)?u需要借助于系统完成日常工作的人是谁?u谁来维护
10、、管理系统(次要角色),保证系统正常工作?u系统控制的硬件设备有哪些?u系统需要与哪些其它系统交互?u对系统产生的结果感兴趣的人或事是哪些?3.1.2 用例 用例是参与者可感受到的系统服务或功能单元。它定义了系统如何被参与者使用,描述了参与者为了使用系统所提供的某一完整功能而与系统发生的对话。用例是站在用户的角度上(从系统的外部)来描述系统的功能。当系统有很多参与者时,用例是捕获系统需求最好的选择。所有用例都应有名称,建议使用动名词为用例命名。用例名可以包括任意数目的字母、数字和除冒号以外的大多数标点符号,用例的名字是一个能准确描述功能的动词短语或动词词组。用例具有3个明显的特征:(1)用例表
11、明的是一个类,而不是某个具体的实例 (2)用例必须由某一个参与者触发激活后才能执行,即每个用例至少应该涉及一个参与者 (3)用例是一个完整的描述椭圆来表示用例“回顾”饮料销售机在前面的分析中,我们获得了系统中有3个用例,分别是“Buy soda(买饮料)”、“Restock(供货)”、“Collect(收款)”。参与者有Customer(顾客)、Suppliers Representative(供货代表)和Collector(收款人)。跟踪场景中的步骤 每个用例就是一组场景的集合,而每个场景又是一个步骤序列。而这些步骤在上图中并没有表现出来。通常也不用附加注释来说明这些用例。因为如果对每个用例
12、都附加注释进行说明,则布图就很混乱。那么如何并在哪里记录和跟踪这些场景中的步骤呢?用例图通常是供客户和开发组参考的一部分。每个用例中的场景在文档中要描述下列内容:n发起用例的参与者n用例的假设条件n用例中的前置条件n场景中的步骤n场景完成后的后置条件n从用例中获益的参与者 要说明一个场景中的步骤,还可以使用UML活动图对场景进行描述。通过询问下列问题就可发现用例:角色需要从系统中获得哪种功能?角色需要做什么?角色需要读取、产生、删除、修改或存储系统中的某种信息吗?系统中发生的事件需要通知角色吗?或者角色需要通知系统某件事吗?这些事件(功能)能干些什么?如果用系统的新功能处理角色的日常工作是简单
13、化,还提高了工作效率?系统当前的这种实线方法要解决的问题是什么?补充:子系统(visual Paradigm有)用来展示系统的一部分功能,这部分功能联系紧密。3.1.3 关系用例图之间的关系分为3种:用例和用例之间的关系;参与者和参与者之间的关系;用例和参与者之间的关系。一、用例之间的关系 一般情况下,能够在用例之间抽象出包含、扩展和泛化这3种关系。包含即在一个用例中重用另一个用例在步骤;扩展允许通过对已有用例增加步骤创建一个新的用例;泛化指一个用例继承了另一个用例。有时也会有分组的关系,分组是一组用例的简单组织方式。1.泛化 用例的泛化是指一个父用例可被特化形成多个子用例,而父用例和子用例之
14、间的关系就是泛化关系。在用例的泛化关系中,子用例继承了父用例所有的结构、行为和关系。子用例还可添加、覆盖、改变继承的行为 在UML中,用例的泛化关系是从子用例指向父用例的三角箭头来表示。当发现系统中有两个或多个用例在行为、结构和目的方面存在共性时,就可用泛化关系。这时,可用一个新的用例来描述这些共有部分,这个新的用例就是父用例。假设正在对一台饮料机建模,这台饮料销售机允许顾客选择买一罐饮料或是买一杯饮料。在这种情况下,“Buy Soda”就是一个父用例,“Buy a can of soda”和“Buy a cup of Soda”就是子用例。用例之间的泛化关系建模与类之间泛化关系建模方法相同,
15、用一条带空心三角形箭头的实线从子用例指向父用例。例:飞机订票系统中,预订飞机票有两种方式,一种是通过电话预订,另一种是通过网上预订。继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。【箭头指向】:指向父用例2.扩展(Extend)有时我们可通过对已有用例增加一些额外的步骤来建立新的用例。(指用例功能的延伸,相当于为基础用例提供一个附加功能)在“供货”这个用例中,在给机器补充新饮料的时候,供货代表注意到有些品牌的饮料销售的好,有些品牌的饮料销售不好。在这种情况下,他不是简单的把所有品牌的
16、饮料补充给机器,而是把一些销售情况下不太好的饮料取出来,用销售情况好的饮料来代替它们。同时供货代表还要在机器前修改饮料品种的指示牌。如果我们把上述的步骤加入到“供货”用例,我们将得到一个新的用例,不妨称它为“根据销售情况供货”。这个新用例是对原用例的扩展,这种技术叫做扩展用例。在一定条件下,把新的行为加入到已有的用例中,获得的新用例称为扩展用例(Extension),原有的用例称为基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。扩展是两个用例之间的关系,它使得每个用例可以通过扩展用例向基础用例中添加额外的行为来扩展基础用例的功能。用例的扩展机制允许从一个基础用例开始开发一个复杂的
17、系统,并且能够在不改变基础用例的前提下向基础用例中扩展更多的行为。一个基础用例可以拥有一个或多个扩展用例,这些扩展用例可以一起使用。在UML中,扩展关系通过带箭头的虚线段加来表示,箭头指向基础用例。扩展关系往往用于处理异常或构件灵活的系统框架。扩展关系还可用于处理基础用例中的那些不易描述的问题。【箭头指向】:指向基础用例例:图书馆紫系统中管理用例图,其中基础用例是“用户管理”,扩展用例是是“用户级别设置”。一般情况下,只需执行“用户管理”用例即可。但是如果要设置用户级别,就不能执行用例的常规操作了,如果去修改“用户管理”用例,就又增加了系统的复杂性。此时,可以在基础用例“用户管理”中增加插入点
18、,这样如果想设置用户级别,就执行扩展用例。举例:饮料销售机 上面提及的“Restock”用例是另一个用例“Reatock according to sales(根据销售情况供货)”的基础。不是简单地把各种品牌的听装饮料以同样的数目补充个饮料机器,供货代表要注意到用销售情况好的品牌来代替销售情况不好的品牌,并进行相应的补充。在“Restock”用例中,新步骤(关注销量并安排添货)发生在供货代表打开机器准备向机器中补充饮料时。因此在这个例子中,扩展点是“before filling the compartments(补充饮料)”。与包含关系相似,可视化扩展关系也是用一条依赖线(带箭头的虚线),沿线
19、上加上一个用双尖括号扩起来的“extend”关键字。在基用例中,扩展点出现在“Extension point”(如果有多个扩展点,就是“Extension points”)的下方。例:图书管理系统中,在一切顺利的情况下,只需要执行”还书“用例即可。但是,如果借书超期或者书有所破损,借书用户就要交纳一定的罚金。3.包含(Include)包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。在“供货”和“取货”用例中,也许你会发现会有一些相同的步骤。两个用例都以打开机器为起始点,以关闭和锁好机器为终点。能不能消除用例中的重复步骤呢?可以。方法是从各个步骤序列中抽取出公共步骤形成一个每个用例都要
20、使用的附加用例。可以将“开机”和“拉出饮料架”这两个步骤合并为一个叫做“打开销售机”的用例,将“放回架子”和“锁机器”合并为一个叫做“关闭销售机”的用例。有了这两个新用例,用例“供货”就可以用例“打开销售机”为开始,供货代表通过前面步骤,以用例“关闭销售机”结束。类似地,用例“收款”也以“打开销售机”为开始,进行前面的步骤,以关闭“销售机”结束。如上所述,“供货”和“收款”这两个用例都包含了新的用例。这种技术被称为“包含用例”。包含关系指用例可简单地包含其它用例具有的行为,并把它所包含的用例行为作为自己行为的一部分。在UML中,包含关系是通过带箭头的虚线段加来表示,箭头由基础用例(Base)指
21、向被包含用例(Inclusion)。箭头指向】:指向分解出来的功能用例 在处理包含关系时,具体的做法是把几个用例的公共部分单独抽象出来成为一个新的用例。主要有以下的两种情况需要用到包含关系:一个用例的功能过多、事件过于复杂时,可以把某一段事件流抽象成为一个被包含的用例,以达到简化描述的目的。当多个用例用到同一段行为时,则可把这段共同的行为单独抽象为一个用例,然后让其他用例来包含这一用例。例:有一个资源网站,维护人员要对网站的资源进行维护,包括添加资源、修改资源和删除资源。其中,添加资源和修改资源后都要对新添加的资源和修改的资源进行预览,用来检查添加和修改操作是否正确完成。包含关系和扩展关系也存
22、在较大的区别:基础用例的执行并不一定会涉及扩展用例,扩展用例只有满足一定条件时才会被执行。而在包含关系中,当基础用例执行后,被包含用例是一定会被执行的。在扩展关系中,基础用例提供了一个或多个插入点,扩展用例为这些插入点提供了需要插入的行为。而在包含关系中,插入点只能有一个。即使没有扩展用例,扩展关系中的基础用例本身是完整的。而对于包含关系,基础用例在没有被包含用例的情况下就是不完整的存在。我们来细看“Restock”和“Collect”用例。这两个用例都从开锁和拉开销售机的门开始,都以关门和上锁结束。第1步建立了“Expose the inside(打开销售机)”用例,并且第2步创建了“Une
23、xpose the inside(关闭销售机)”用例。“Restock”和“Collect”两者都包含了这两个新用例。要表达用例的包含关系,可以使用类之间依赖关系的表示符号,也就是连接两个类之间的虚线,箭头指向被依赖的类。在线上要加一个关键字,也就是用双尖括号扩起来的“include”。分组 在一些用例图中,用例图的数目可能非常多,这时就需要组织这些用例。这种情况在一个系统包含很多个子系统时就会出现。另一种可能是,当你按顺序和用户会谈,收集系统需求时,每个需求必须用一个单独的用例来表达。最直接的方法是把相关的用例放在一个包中组织起来。二、参与者之间的关系 参与者与参与者之间的关系主要是泛化关系
24、。泛化关系的含义就是把某些参与者的共同行为提取出来表示通用行为。在UML图中,使用带空心三角箭头的实线表示泛化关系,箭头指向超类参与者。在需求分析中,常常遇到用户权限的问题就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。箭头指向】:指向父用例三、参与者和用例之间的关系 参与者和用例之间属于关联关系(Association)。关联关系是双向的一对一的关系,这种关系表明了哪个参与者与用例通信。用例图中参与者和用例之间的关系使用带箭头或者不带箭头的线段来描述,箭头表示在这一关
25、系中哪一方是对话的主动发起者,箭头所指方是对话的被动接受者。如果不想强调对话中的主动与被动关系,可以使用不带箭头的线段。参与者与用例之间的通信,任何一方都可发送或接受消息。箭头指向】:指向消息接收方包含(include)、扩展(extend)、泛化(Inheritance)的区别条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- uml 基础教程 用例图 课件
限制150内