用例之间的关系(1)
用例图元素之间的关系
用例图元素之间的关系用例图中包含的元素除了系统边界、角色和用例,另外就是关系。
包括:角色之间的关系、用例之间的关系、用例和角色之间的关系。
角色之间的关系由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。
用例之间的关系:(1)包含关系:基本用例的行为包含了另一个用例的行为。
基本用例描述在多个用例中都有的公共行为。
包含关系本质上是比较特殊的依赖关系。
它比一般的依赖关系多了一些语义。
在包含关系中箭头的方向是从基本用例到包含用例。
简单的理解就是用例可以包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分。
(2)泛化关系:代表一般于特殊的关系。
它的意思和面向对象程序设计中的继承的概念是类似的。
不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。
在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。
泛化(Generalization)在面向对象的技术中无处不在,下图给出了一个使用泛化的用例图:在用例图中,角色和用例都能够泛化。
角色的泛化/继承很容易理解,因为角色本来就是类(Class),它是一种版型(stereotype)为Actor的类,所以角色的继承直观而自然。
但是用例的继承实际上分为两种情况,并不是简单的使用泛化,而是使用扩展(extended)和包含(include)两种泛化的特例。
扩展用于子用例的动作步骤基本上和父用例的动作步骤相同,只是增加了另外的一些步骤的情况下。
包含用于子用例包含了所有父用例的动作,它将父用例作为了自己的一个大步骤,子用例常常包含一个以上的父用例。
(3)扩展关系:扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。
与包含关系一样,扩展关系也是依赖关系的版型。
用例之间的关系
3.4用例之间的关系1、泛化关系Generalization代表一般与特殊的关系。
(类似于继承)在用例泛化中,子用例表示父用例的特殊形式,子用例继承了父用例的行为和属性,也可以增加新的行为和属性或覆盖父用例中的行为。
例子:一个租赁或销售系统用例的部分内容,在此,父用例是“预定”,其两个子用例分别是“网上预定”和“电话预定”,这两个用例都继承了父用例的行为,并可以添加自己的行为。
2、包含关系Include一个用例(基用例,基本用例)可以包含其他用例(包含用例)具有的行为,并把它所包含的用例行为作为自身用例的一部分,这被称为包含关系。
在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。
例子:一个租赁或销售系统中,“填写电子表格”的功能在“网上预定”的过程中使用,不管如何处理“网上预定”用例,总是要运行“填写电子表格”用例,因此具有包含关系。
3、扩展关系Extend一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系是把新的行为插入到已有的用例中的方法。
在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。
基本用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例的扩展点上。
扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定是否执行扩展。
一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。
同一个基本用例的几个扩展可以在一起使用。
基本用例不知道扩展的任何细节.没有扩展用例,基本用例是完整的。
例子:一个汽车租赁系统用例图的部分内容。
在此,基本用例是“还车”,扩展用例是“交纳罚金”。
如果一切顺利汽车可以被归还,那么执行“还车”用例即可。
但是如果超过了还车的时间或汽车受损,按照规定客户要交纳一定的罚金,这时就不能执行提供的常规动作。
用例之间的关系
3、4用例之间得关系1、泛化关系Generalization代表一般与特殊得关系。
(类似于继承)在用例泛化中,子用例表示父用例得特殊形式,子用例继承了父用例得行为与属性,也可以增加新得行为与属性或覆盖父用例中得行为。
例子:一个租赁或销售系统用例得部分内容,在此,父用例就是“预定",其两个子用例分别就是“网上预定”与“电话预定”,这两个用例都继承了父用例得行为,并可以添加自己得行为。
2、包含关系Include一个用例(基用例,基本用例)可以包含其她用例(包含用例)具有得行为,并把它所包含得用例行为作为自身用例得一部分,这被称为包含关系.在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。
例子:一个租赁或销售系统中,“填写电子表格”得功能在“网上预定”得过程中使用,不管如何处理“网上预定”用例,总就是要运行“填写电子表格”用例,因此具有包含关系.3、扩展关系Extend一个用例也可以定义为基本用例得增量扩展,这称作扩展关系,即扩展关系就是把新得行为插入到已有得用例中得方法。
在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。
基本用例提供了一组扩展点,在这些新得扩展点中可以添加新得行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例得扩展点上.扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定就是否执行扩展。
一般情况下,基本用例得执行不会涉及到扩展用例,只有满足用例得控制条件时,扩展用例才被执行,因此扩展关系处理事件流得异常或者可选事件。
同一个基本用例得几个扩展可以在一起使用。
基本用例不知道扩展得任何细节、没有扩展用例,基本用例就是完整得。
例子:一个汽车租赁系统用例图得部分内容。
在此,基本用例就是“还车",扩展用例就是“交纳罚金”。
如果一切顺利汽车可以被归还,那么执行“还车"用例即可。
软件建模(卫红春)课后习题答案--归类版(全网最全)
一、简答题1. 简述模型的作用。
答:现实系统的复杂性和内隐性,使得人们难于直接认识和把握,为了使得人们能够直观和明了地认识和把握现实系统,就需要借助于模型。
2. 软件模型有什么特征?答:建模对象特殊,复杂性,多样性3. 软件建模技术有哪些因素?答:软件建模方法,软件建模过程,软件建模语言,软件建模工具4. 软件模型包括哪些方面的内容?答:从模型所反映的侧面看:功能模型,非功能模型,数据模型,对象模型,过程模型,状态模型,交互模型,架构模型,界面模型等;从软件开发工作看:业务模型,需求模型,分析模型,设计模型,测试模型等。
5. 软件建模工具应该具有哪些基本功能?答:软件模型的生成和编辑,软件模型的质量保障,软件模型管理等1. 简述UML的发展过程。
答:Rational公司在众多软件开发方法的基础上于1996年提出了UML0.9版本,1997年把UML1.0版本提交给OMG,1997年被OMG正式批准成为标准,1998年UML1.2 版,1999年UML1.3版,2001年1.4版本,2003年1.5版本,2005年2.0版本,2009年2.2版本,2010年2.3版本,现在已经上升为2.4版本。
2. 作为一种统一建模语言,UML由哪些部分构成?答:模型元素,图,语义规则,公共机制。
3. 元模型理论是UML的基础,元模型分为哪四个层次?答:元元模型,元模型,模型,对象。
4. 聚集关系与组合关系有什么区别?答:聚集松散,组合紧密;一个部分事物对象可以属于多个聚集对象,但一个部分事物对象仅能属于一个组合对象;聚集的对象生命周期可以不同,但组合对象则是同存同亡。
5. 用例和协作有什么区别?答:协作是对用例的实现。
6. 模型元素的可见性含义是什么?答:模型元素可被其他模型元素访问的程度,共分为公用,受限,私有,包四种。
7.UML的构造型有什么作用?答:给UML定义的模型元素赋予新的含义,定义新的模型符号,改换模型元素的表示形式。
用例和用例之间的关系
用例和用例之间的关系嘿,朋友们!今天咱们来聊聊用例之间那些有趣的关系,就像在探索一个充满奇思妙想的魔法世界一样。
你可以把用例想象成一个个性格各异的小角色。
有些用例呢,就像是双胞胎,它们之间是一种包含关系。
比如说,有个“购物用例”,其中“线上购物用例”和“线下购物用例”就像是购物这个大家庭里的一对双胞胎。
这就好比是同根生的两棵树,虽然各有各的枝桠,但主干都是购物这件事,一个在虚拟的网络森林里摇曳,一个在现实的商业大街上矗立。
还有些用例之间是扩展关系,这就像是孙悟空拔毛变出的小猴子。
主用例就像孙悟空,而扩展出来的用例则是那些小猴子,它们在主用例的基础上衍生出更多的功能或者场景。
例如“社交用例”这个孙悟空,“语音社交用例”和“视频社交用例”就是它拔毛变出来的小猴子,在社交这个大舞台上玩出了新花样,就像小猴子们在花果山表演杂技一样。
另外,用例之间还有泛化关系呢。
这就像是一个家族里的远房亲戚。
比如说“交通工具用例”,汽车用例、轮船用例、飞机用例就像是这个大家族里的远房亲戚。
它们虽然各有各的独特之处,汽车在陆地上跑得欢,轮船在大海里慢悠悠地晃荡像个大胖子在散步,飞机在天空中呼啸而过好似超级英雄在赶路,但都有着交通工具这个共同的家族特征。
有时候,用例之间还会玩“接力赛”,这就是顺序关系啦。
就像一场滑稽的接力比赛,第一个用例跑一段,把接力棒传给下一个用例。
比如“制作蛋糕用例”,先是“准备材料用例”像个勤劳的小蚂蚁一样把材料收集好,然后传给“搅拌面糊用例”,接着再传给“烤制蛋糕用例”,最后到达“装饰蛋糕用例”这个终点,每个用例都像接力赛选手一样,一个接一个,不能乱了顺序,不然蛋糕可能就会变成一场灾难,不是烤糊了就是根本没成型,就像一个东倒西歪的小丑。
还有一种关系就像是镜子里的倒影,那就是依赖关系。
一个用例就像一个自恋的家伙,得依赖另一个用例才能完整地表现自己。
例如“登录用例”和“查看用户信息用例”,查看用户信息这个自恋鬼得依赖登录这个镜子才能看到自己的内容,如果登录都没成功,那查看用户信息就像个迷失在黑暗中的小幽灵,啥也干不了。
用例之间的关系有
用例之间的关系有
1. 包含关系:一个用例包含另一个用例,表示两个用例之间存在从属关系,即一个用例的执行依赖于另一个用例的执行。
2. 并行关系:两个用例同时进行,彼此之间没有依赖关系,可以独立执行。
3. 顺序关系:两个用例之间存在顺序关系,即一个用例的执行必须在另一个用例之后执行。
4. 扩展关系:一个用例可以作为另一个用例的扩展,即当某些条件满足时,执行扩展用例。
5. 交叉关系:两个用例之间存在交叉依赖关系,即一个用例的执行可能受到另一个用例的影响,或者两个用例之间存在数据传递。
以上是常见的用例之间的关系,实际上用例之间的关系可以根据具体的系统和需求进行定义和设计。
UML软件建模教程课后习题及答案
UML软件建模教程课后习题及答案习题1一、简答题1.简述模型的作用。
答:现实系统的复杂性和内隐性,使得人们难于直接认识和把握,为了使得人们能够直观和明了地认识和把握现实系统,就需要借助于模型。
2.软件模型有什么特征?答:建模对象特殊,复杂性,多样性3.软件建模技术有哪些因素?答:软件建模方法,软件建模过程,软件建模语言,软件建模工具 4.软件模型包括哪些方面的内容?答:从模型所反映的侧面看:功能模型,非功能模型,数据模型,对象模型,过程模型,状态模型,交互模型,架构模型,界面模型等;从软件开发工作看:业务模型,需求模型,分析模型,设计模型,测试模型等。
5.软件建模工具应该具有哪些基本功能?答:软件模型的生成和编辑,软件模型的质量保障,软件模型管理等二、填空题1、模型是对现实的(抽象)和模拟,是对现实系统(本质)特征的一种抽象、简化和直观的描述。
2、模型具有(反映性)、直观性、(简化性)和抽象性等特征。
3、从抽象程度,可以把模型分为(概念模型)、逻辑模型和(物理模型)三种类型。
4、较之于其他模型,软件模型具有(建模对象特殊)、复杂性和(多样性)等特征。
5、软件模型是软件开发人员交流的(媒介),是软件升级和维护的(依据)。
6、软件建模技术的要素包括软件建模方法、(软件建模过程)、软件建模语言和(软件建模工具)。
7、从开发阶段看,软件建模有业务模型、(需求模型)、分析模型、(设计模型)和测试模型。
8、软件语言有软件需求定义语言、(软件设计语言)、软件建模语言、(软件结构描述语言)、软件程序设计语言等。
9、根据软件建模工具的独立性,把软件建模工具分为(独立软件)建模工具和(插件式软件)建模工具。
10、OMG在(1997)年把UML作为软件建模的标准,UML2.0版本是(2005)年颁布的。
三、选择题1、对软件模型而言,下面说法错误的是(D)。
A.是人员交流的媒介B.是软件的中间形态C.是软件升级和维护的依据D.是软件的标准文档2、下面说法错误的是(B)。
用例间的关联(泛化-包含-扩展)
➢A extend B 表示B是A在系统某些情况下(特定条件)触发产 生的,B不是A中必须存在的部分,B可以单独存在 ➢B是对A在一些基本功能上具体的扩展(在A的扩展点处)
9
用例间的关系
➢Include 包含关系通常发生在多个用例中,有可以提取出来 的公共部分(就象提取公因式一样) ➢例如 UseCaseA 中包括了 a 和 b 两个流程,而 UseCaseC 中 包含了 c 和 b 两个流程。为了提高复用性,可以把 b 提取出来, 形成另一个用例 UseCaseB,此时,UseCaseA include UseCaseB,UseCaseC 也 include UseCaseB。 ➢当有 include 关系时,被 include 的用例通常会被两个以上的 其他用例 include(否则就不需要提取出来了)
10
用例间的关系
➢Extend 关系:假设 UseCaseA 的功能描述为“发送一条通 知”,可是,发送通知的方式可能有许多种(例如通过邮件发 送、通过短信发送等)。在需求分析阶段,可能无法明确到底 有多少种方式, 在用例分析阶段,UseCaseA 需要留出扩展接 口,然后把已知的发送方式作为扩展用例给出,例如 UseCaseB 是“通过短信发送”,而 UseCaseC 是“通过邮件 发送”,此时,UseCaseB 和 UseCaseC extend 了 UseCaseA, 表现为两根虚线,箭头指向 UseCaseA
11
用例间的关系
12
用例间的关系
错!
13
用例间的关系
➢销户:因为销户必需先进行账户结算,所以这里用include ➢停机提醒:有两个可选项,短信提醒和邮件提醒,所以用extend
测试用例 元素关系
测试用例元素关系
在软件开发过程中,测试用例是非常重要的一环。
它们是用来
验证软件系统是否符合预期行为的关键工具。
而测试用例之间的元
素关系则是决定测试用例之间如何相互作用和影响的重要因素。
首先,测试用例之间存在着依赖关系。
这意味着某些测试用例
可能需要在其他测试用例执行之后才能进行。
例如,如果一个测试
用例需要在数据库被初始化之后才能执行,那么它就依赖于数据库
初始化的测试用例。
在编写测试用例时,必须考虑到这些依赖关系,以确保测试用例能够按照正确的顺序执行。
其次,测试用例之间还存在着影响关系。
这意味着某些测试用
例的执行结果可能会影响其他测试用例的执行结果。
例如,如果一
个测试用例修改了系统的某些配置,那么后续的测试用例可能会受
到影响。
在这种情况下,需要确保测试用例之间的影响是可控的,
并且能够进行适当的清理和恢复操作,以保证测试用例的独立性和
可重复性。
此外,测试用例之间还存在着组合关系。
这意味着某些测试用
例可能需要以一定的组合方式进行执行,以验证系统的某些复杂功
能或场景。
在编写测试用例时,需要考虑到这些组合关系,并确保能够覆盖到系统的各种组合情况,以提高测试的全面性和有效性。
总之,测试用例之间的元素关系是软件测试过程中需要重点关注的问题。
只有深入理解和合理处理测试用例之间的依赖、影响和组合关系,才能够确保测试工作的顺利进行,并最终达到有效验证软件系统的预期行为的目的。
用例之间的关系
例子
一个汽车租赁系统用例图的部分内容。在此,基本
用例是“还车”,扩展用例是“交纳罚金”。如果 一切顺利汽车可以被归还,那么执行“还车”用例 即可。但是如果超过了还车的时间或汽车受损,按 照规定客户要交纳一定的罚金,这时就不能执行提 供的常规动作。若研讨修改用例“还车”,势必会 增加系统的复杂性,因此可以在用例“还车”中增 加扩展点,即特定条件为超时或损坏,如果满足条 件,将执行扩展用例“交纳罚金”,这样显然可以 使系统更容易被理解。
用例之间的关系
在画用例图的时候,理清用例之间的关系是重 点。用例的关系有泛化(generalization)、扩展 (extend)和包含(include)。其中include和 extend最易混淆。 使用关系uses(UML1.2以后已经不再使用此关 系) 下面我们结合实例彻底理清三者的关系。
基本概念
包含(include)
include为包含关系,当两个或多个用例中共用一组
相同的动作,这时可以将这组相同的动作抽出来作 为一个独立的子用例,供多个基用例所共享。因为 子用例被抽出,基用例并非一个完整的用例,所以 include关系中的基用例必须和子用例一起使用才 够完整,子用例也必然被执行。include关系在用例 图中使用带箭头的虚线表示(在线上标注 <<include>>),箭头从基用例指向子用例。
泛化关系是一种继承关系,子用例将继承基
用例的所有行为,关系和通信关系,也就是 说在任何使用基用例的地方都可以用子用例 来代替。泛化关系在用例图中使用空心的箭 头表示,箭头方向从子用例指向基用例。
在用例泛化中,子用例表示父用例的特殊形式,子用例继承了 父用例的行为和属性,也可以增加新的行为和属性或覆盖父用 例中的行为。
用例中的主要关系
用例中的主要关系主要关系:用户登录、用户注册、购买商品、浏览商品、加入购物车、结算购物车【用户登录】用户登录是电商平台中必不可少的一步,用户需要通过输入正确的账号和密码来进行登录。
登录后,用户可以享受到更多的功能和服务,比如查看订单、评论商品等。
登录的过程中,用户需要输入账号和密码,并进行验证,验证成功后即可登录成功。
【用户注册】用户注册是用户在使用电商平台之前的必要步骤。
用户需要填写一些个人信息,并设定一个账号和密码,以便在后续的登录中使用。
注册的过程中,用户需要提供真实有效的个人信息,并进行账号的唯一性验证,注册成功后即可使用该账号进行登录。
【购买商品】购买商品是用户在电商平台上最主要的行为之一。
用户可以在平台上浏览商品,选择自己喜欢的商品并加入购物车,然后进行结算购物车。
购买商品的过程中,用户需要注意商品的价格、库存等信息,并选择合适的支付方式进行支付。
支付成功后,用户可以收到订单确认信息,等待商家发货。
【浏览商品】浏览商品是用户在电商平台上的常见行为之一。
用户可以根据自己的需求,在平台上浏览各类商品,了解商品的信息、价格、评价等。
在浏览商品时,用户可以使用筛选、排序等功能来找到自己满意的商品。
【加入购物车】加入购物车是用户在浏览商品时的常见操作之一。
用户可以将自己喜欢的商品加入购物车,以便后续进行结算。
加入购物车的过程中,用户可以选择商品的数量、规格等信息,并可以随时查看购物车中的商品。
【结算购物车】结算购物车是用户在购买商品之前的最后一步操作。
用户可以在购物车中查看已选中的商品,并进行数量、规格等信息的确认。
确认无误后,用户可以选择支付方式进行结算,并进行支付操作。
结算购物车后,用户可以收到订单确认信息,等待商家发货。
用户登录、用户注册、购买商品、浏览商品、加入购物车、结算购物车是电商平台中主要的关系。
用户通过登录和注册来获取权限和使用电商平台的功能,然后可以浏览商品、加入购物车,并最终通过结算购物车来购买商品。
用例图
用例图可以说成是对于一个软件在规划阶段产生的技术性需求和功能性需求,利用某种建模工具来实现出来的一个图形化的介绍.用例图包含六个元素,分别是:执行者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。
1、执行者(Actor)2、用例(Use Case)3、用例之间的关系3.1、关联关系(Association)关联关系是连接Actor和Use Case,表示该Actor执行该Use Case的功能。
3.2、包含关系(Include)包含关系是来自于Use Case的抽象,即从数个不同的Use Case中,分离出公共的部分,而成为可以复用的Use Case。
3.3、扩展关系(Extend)扩展关系表示某一个Use Case的对话流程中,可能会根据条件临时插入另外一个Use Case,而前者称为基础用例,后者称为扩展用例。
3.4、泛化关系(Generalization)用例建模可分为用例图和用例描述。
用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。
用例描述用来详细描述用例图中每个用例,用文本文档来完成。
系统边界是用来表示正在建模系统的边界。
边界内表示系统的组成部分,边界外表示系统外部。
系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。
因为系统边界的作用有时候不是很明显。
(在画图时可省略)对于用例描述的内容,一般没有硬性规定的格式,但一些必须或者重要的内容还是必须要写进用例描述里面的。
用例描述一般包括:简要描述(说明)、前置(前提)条件、基本事件流、其他事件流、异常事件流、后置(事后)条件等等。
下面说说各个部分的意思:简要描述:对用例的角色、目的的简要描述;前置条件:执行用例之前系统必须要处于的状态,或者要满足的条件;基本事件流:描述该用例的基本流程,指每个流程都“正常”运作时所发生的事情,没有任何备选流和异常流,而只有最有可能发生的事件流;其他事件流:表示这个行为或流程是可选的或备选的,并不是总要总要执行它们;异常事件流:表示发生了某些非正常的事情所要执行的流程;。
用例间的三种关系
⽤例间的三种关系⽤例间的三种关系:(1)扩展(extends):⽤例B extends ⽤例A,表⽰⽤例B是⽤例A在某种特定情况下可能会出现的扩展⽤例。
例如:⽼王进城办事,2⼩时就可以回去,在这2⼩时内内急时就会去上厕所。
上厕所⽤例是进城⽤例的扩展,因为不上厕所⽼王进城办事也可完成。
(2)包含(includes):⽤例A includes ⽤例B,表⽰没有了⽤例B,⽤例A本⾝也就不完整了。
例如:还是⽼王进城,他从海南来北京办事,3天才能回去,那么这种情况下进城⽤例与上厕所⽤例的关系就应该是包含关系了。
(3)泛化:泛化关系指的是同⼀业务⽬的的不同技术实现。
例如:⽼王进城,他可以坐飞机,可以坐⽕车,还可以⾛路,那么进城⽤例就泛化为坐飞机、坐⽕车和⾛路三个⽤例了,它们之间存在层级关系。
总的来看,扩展可以“冻结”基本⽤例以保持稳定(因为扩展⽤例通常是不确定的);包含可以提供公共交互,提⾼“复⽤”;泛化是同⼀业务⽬的的不同技术实现。
⽤例之间除了上述三种关系不再有其他关系,⽤例之间不能通讯。
======================================================下⾯是另外⼀种解释,⽤例⼦来描述。
⽤例描述的是系统外部可见的⾏为,是系统为某⼀个或⼏个参与者提供的⼀段完整的服务。
从原则上来讲,⽤例之间都是并列的,它们之间并不存在着包含从属关系。
但是从保证⽤例模型的可维护性和⼀致性⾓度来看,我们可以在⽤例之间抽象出包含(include)、扩展(extend)和泛化 (generalization)这⼏种关系。
这⼏种关系都是从现有的⽤例中抽取出公共的那部分信息,然后通后过不同的⽅法来重⽤这部公共信息,以减少模型维护的⼯作量。
4.2.1 包含(include)包含关系是通过在关联关系上应⽤<<include>>构造型来表⽰的,如下图所⽰。
它所表⽰的语义是指基础⽤例(Base)会⽤到被包含⽤例(Inclusion),具体地讲,就是将被包含⽤例的事件流插⼊到基础⽤例的事件流中。
2_用例及用例图-3
●
③ 把这些系统行为命名为用例。
发现用例
发现用例的一般方法:
① 找出系统外部参与者,确定系统边界和范围。 ② 确定各参与者所期望的系统行为。 ③ 把这些系统行为命名为用例。
●
④ 确定各用例之间的关系(泛化,包含,扩展)。
发现用例
发现用例的一般方法:
① 找出系统外部参与者,确定系统边界和范围。 ② 确定各参与者所期望的系统行为。 ③ 把这些系统行为命名为用例。 ④ 确定各用例之间的关系(泛化,包含,扩展)。
参与者
1. 参与者的概念
参与者(actor)是外部需要与系统交互的事物。 也被称为活动者。
2.参与者的三种类型 ①. 人:客户,读者,库管员 ②. 外部系统:上层系统等
参与者的表示
参与者可以表示为下面三种形式。
参与者之间的关系
参与者之间可以有泛化关系。
参与者与用例之间的关系参与者与用 例之间具有使用,交互信息的关联。
⑦ATM记录事务到日志文件。
发现用例
发现用例的一般方法:
●
① 找出系统外部参与者,确定系统边界和范围。
发现用例
发现用例的一般方法:
① 找出系统外部参与者,确定系统边界和范围。
●
② 确定各参与者所期望的系统行为。
发现用例
发现用例的一般方法:
① 找出系统外部参与者,确定系统边界和范围。 ② 确定各参与者所期望的系统行为。
用例之间的关系(1)
用例之间的几种关系:
1. 泛化关系
2. 包含关系
3. 扩展关系
用例图中的关系(一)
⽤例图中的关系(⼀)⼀、⽤例图概述⽤例图,是⼀种客户与开发者之间可以沟通、理解的表现形式。
可以认为⽤例图是开发者与客户之间的可视化契约。
我认为最主要的⼀点就是,在这个⽤例模型中,⼀直是以⽤户的⾓度为主的,做为开发⼈员也要时刻站在⽤户的⾓度来看待整个系统。
从原则上来讲,⽤例之间都是独⽴、并列的,它们之间并不存在着包含从属关系。
但是为了体现⼀些⽤例之间的业务关系,提⾼可维护性和⼀致性,⽤例之间可以抽象出包含(include)、扩展(extend)和泛(generalization)⼏种关系。
共性:都是从现有的⽤例中抽取出公共的那部分信息,作为⼀个单独的⽤例,然后通后过不同的⽅法来重⽤这个公共的⽤例,以减少模型维护的⼯作量。
⼆、⽤例图中的四个基本组件⽤例图包括:参与者或⾓⾊(actor)、⽤例(use case)、关系、系统。
1、参与者:是系统外的⼀个实体,它以某种⽅式参与⽤例我执⾏过程。
参与者通过向系统输⼊或请求系统输⼊某些事件来触发系统的执⾏,所以参与者可以是⼈,可以是事物,可以是时间、⽓压等环境因素或者其他系统等。
它在系统之外,与系统直接交互。
⽤⼀个群体概念给参与者命名,反映该参与者的⾝份与⾏为(如客户、管理员等)。
2、⽤例:⽤例代表系统的某项完整的功能,是动作步骤的集合。
系统的功能是通过参与者使⽤⽤例来实现的。
在这⾥,我们把⽤例看做是⼀个“⿊盒”,只反映的是系统的⼀项功能,不涉及实现细节。
⽤例的命名:⽤例是从⽤户的⾓度来描述系统的功能,也就是从参与者的⾓度出发进⾏命名(如,使⽤“登录”,⽽不⽤“⾝份验证“)。
还有,⽤例最好使⽤⾏业专业术语。
3、关系:除了参与者与⽤例之间的关联关系外,还可以定义参与者之间的泛化关系,⽤例之间的包含、泛化与扩展关系。
应⽤这些关系的⽬的是从系统中抽取出公共⾏为及其变体。
4、系统:系统指⼀个软件系统、⼀项业务、⼀个商务活动、⼀台机器等等。
系统的功能通过⽤例来表现,换句话说,就是所有的⽤例构成了整个系统。
软件工程(殷锋)答案有问答题
软件工程课后习题答案——殷锋主编注:有些可能错误,读者自己注意第一章一、填空题:1、软件是计算机系统中与硬件彼此依存的另一部份,是包括程序、数据、及相关文档的的完整集合2、软件工程包括三要素:方式、工具和进程。
3、软件开发的大体方式包括结构化方式和面向对象方式二、选择题:C 2、B 3、C1软件的特点:(1)逻辑实体(2)与硬件生产方式不同(3)与硬件的保护不同(4)复杂的5 本钱相当昂贵2软件危机的产生及其表现:1开发进度难以预测2本钱难以控3功能不能能知足用户的需求4质量难以保证5难以保护6缺少适当的文本资料3比较结构化方式和面向对象方式:结构化方式:自顶向下,慢慢分解模块易于控制和处置模块相对独立、接口简单、利用保护超级方便面向对象方式:提高软件系统的稳定性可修改和可重用性产生的具有特点:客观世界任何事物对象都是对象每各类概念一种方式若干对象组成参次结构系统对象通过传递消息彼此联系第二章一、填空题:1、软件生存周期的各个进程可以分成三类,及主要生存周期进程、支持生存周期进程和组织的生存周期进程。
2、软件生存周期包括计划、需求分析、设计、程序编码、软件测试和运行保护6个阶段。
3、软件进程改良(SPI)帮忙软件企业对其软件进程的改变进行计划,制定和实施。
二、填空题1、A2、B三、判断题1、√2、X4什么是软件进程?软件生存周期进程或软件进程组,是指软件生存周期中的一系类相关进程。
5软件的生存周期:计划需求分析设计程序编码软件测试运行保护6可行性研究的任务是什么?进行一次大大紧缩简化的系统分析和设计的进程,在高参差上以抽象的方式进行系统分析和设计。
任务:以最小的代缴在最短的时间内肯定问题可否解决,也就是判定原定的目标和规模可否实现第三章三、填空题:1、可行性研究的目的是用最小的代价,在尽可能短的时间内,肯定问题是不是能够解决2、可行性研究在进行简要需求分析和设计时,要在高层次上以较抽象的方式进行3、需求分析阶段产生的最重要的文档是软件需求规格说明书。
uml填空题
uml填空题以下是一份关于UML(统一建模语言)的填空题:1. UML是一种用于________、________和________的标准化建模语言。
2. UML中的类图用于表示________之间的关系,包括________、________和________等。
3. 在UML中,一个类可以用一个矩形表示,其中类的名称位于矩形框的顶部,类的属性位于矩形框的________部分,类的方法位于矩形框的________部分。
4. 在UML中,一个接口可以用一个________表示,接口的名称位于接口符号的顶部。
5. 在UML中,一个依赖关系可以用一个从________指向________的箭头表示,用于表示两个元素之间的________关系。
6. 在UML中,一个泛化关系可以用一个从子类指向父类的空心三角形表示,用于表示________和________之间的关系。
7. 在UML中,一个聚合关系可以用一个空心菱形表示,用于表示________的关系。
8. 在UML中,一个合成关系可以用一个实心菱形表示,用于表示________的关系。
9. UML中的用例图用于描述系统应具有的功能,其中用例可以用一个椭圆表示,用例之间的关系可以使用不同的线表示,例如________、________和________等。
10. 在UML中,活动图是一种特殊的状态图,用于描述系统中事件的顺序以及活动的________和________。
请填写空白部分:1. 描述、构建、文档化2. 对象、关联、聚合、泛化3. 下部、下部4. 圆形5. 依赖元素、被依赖元素、依赖6. 子类、父类、继承7. 部分整体8. 部分整体、强依赖9. 关联、泛化、包含10. 顺序流、控制流。
用例和用例之间的关系
用例和用例之间的关系
《用例和用例之间那点事儿》
嘿呀,咱今天就来聊聊用例和用例之间的关系。
你说这用例啊,就像咱生活中的各种小故事一样。
比如说吧,有个用例是去超市买东西,那另一个用例可能就是回家做饭。
这俩用例之间啥关系呢?那就是前后衔接的关系呀!去超市买完东西,才能回家做饭嘛,这多顺理成章呀。
再比如说,一个用例是早上起床,另一个用例是去上班。
那起床就是上班的前提呀,不先起床怎么能去上班呢,对吧?这就像搭积木一样,一个一个堆起来的。
有时候呢,用例之间还可能有点竞争关系哦。
就像你想去看电影,同时又有人叫你去逛街,这俩用例就有点“打架”啦,你得好好抉择一下呢。
还有些用例那是相互配合的关系。
好比踢足球,一个用例是前锋进攻,一个用例是后卫防守,只有相互配合好了,这球队才能踢得好呀。
用例和用例之间的关系可真是五花八门的,有时候就像一场有趣的游戏。
它们相互关联,相互影响,共同构成了我们生活中的各种场景和故事。
哎呀,想想还真是有意思呢!就好像我们的生活是一幅巨大的拼图,每个用例都是其中的一块,只有把它们都摆对位置,才能呈现出完整又精彩的画面。
这不就是我们的生活嘛,一个个用例串起来,有欢笑,有纠结,有顺利,也有小麻烦。
但正是这些,才让我们的生活变得丰富多彩呀。
总之呢,用例和用例之间的关系那可是相当重要的,咱可得好好琢磨琢磨,让它们在我们的生活中发挥出最大的作用,创造出更多有趣的故事呀!哈哈!
怎么样,听我这么一说,是不是对用例和用例之间的关系有了更清楚的认识啦?咱呀,就是这么通俗易懂地给你唠明白啦!。
软件建模与分析复习题(A)
软件建模与分析复习题(A)一、 选择题1. 下面的模型图中,哪个能正确表示“1个教师可以指导0个到多个学生的论文,1个学生必须有1个教师指导其论文” 的意思( )2. 计算机由CUP 、内存、硬盘、显示器、鼠标等构成,那么计算机类和鼠标类之间的关系是( )A 继承关系B 关联关系C 聚合关系D 依赖关系3.下面( )图形表示依赖关系。
4. 关于UML ,下面说法正确的是( ) A UML 是一种面向对象的建模方法。
B UML 是一种形式化的语言,使用UML 建立的模型可被计算机编译执行。
C UML 是一种面向对象的编程语言。
A BC DD UML是一种面向对象的建模语言,但不是建模方法。
5.顺序图和交互图的关系,类似与下面的哪种关系()A 类和对象的关系B 类和参与者关系C Java和编程语言的关系D UML和Java的关系6.要对一个企业的工作流程建模,下面4种图中的()是最重要的。
A 交互图B 活动图C 状态图D 类图7.关于参与者,错误的说法是()A 参与者是与所建立的系统交互的人或物。
B 参与者可以是实际的人,也可以其他系统。
C 参与者是系统的一部分,是用例图的重要组成部分。
D 参与者之间可以存在泛化关系。
8.UML中关联的多重性是指()A 一个类有多个方法被另一个类调用。
B 一个类的实例对象能够与另一个类的多少个实例对象相关联。
C 一个类的某个方法被另一个类调用的次数。
D 两个类所具有的相同的方法和属性。
9.关于类图的说法正确的是()A 类图分为3个层次:对象层、特征层和关系层,其中对象层给出系统中所有反映问题域和系统责任的对象。
B 类图分为3个层次:对象层、特征层和关系层,其中特征层给出系统中所有反映问题域和系统责任的对象。
C 类图只是一种辅助模型,不如其他图重要。
D 类图定义了系统的功能需求,描述了系统的动态行为。
10.根据Coad/Yourdon的定义,面向对象的概念不包括()A 对象B 继承C 消息D 封装11.使用UML对系统进行动态建模,不能使用以下哪种图()A 类图B 顺序图C 状态图D 活动图12.UML的结构事物不包括()A 接口B 类C 协作D 状态机13.分析下面的顺序图,并指出哪种说法是正确的()A “求战”、“怎么办”以及“火烧连营”这3条消息并没有严格的次序,比如:“求战”消息有可能在“火烧连营”之前产生。
用例之间的关系
<用例之间的关系1、泛化关系Generalization代表一般与特殊的关系。
(类似于继承)在用例泛化中,子用例表示父用例的特殊形式,子用例继承了父用例的行为和属性,也可以增加新的行为和属性或覆盖父用例中的行为。
例子:一个租赁或销售系统用例的部分内容,在此,父用例是“预定”,其两个子用例分别是“网上预定”和“电话预定”,这两个用例都继承了父用例的行为,并可以添加自己的行为。
2、包含关系Include^一个用例(基用例,基本用例)可以包含其他用例(包含用例)具有的行为,并把它所包含的用例行为作为自身用例的一部分,这被称为包含关系。
在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。
例子:一个租赁或销售系统中,“填写电子表格”的功能在“网上预定”的过程中使用,不管如何处理“网上预定”用例,总是要运行“填写电子表格”用例,因此具有包含关系。
3、扩展关系Extend一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系是把新的行为插入到已有的用例中的方法。
在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。
基本用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例的扩展点上。
扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定是否执行扩展。
一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。
同一个基本用例的几个扩展可以在一起使用。
"基本用例不知道扩展的任何细节.没有扩展用例,基本用例是完整的。
例子:一个汽车租赁系统用例图的部分内容。
在此,基本用例是“还车”,扩展用例是“交纳罚金”。
如果一切顺利汽车可以被归还,那么执行“还车”用例即可。
但是如果超过了还车的时间或汽车受损,按照规定客户要交纳一定的罚金,这时就不能执行提供的常规动作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.4用例之间的关系1、泛化关系Generalization代表一般与特殊的关系。
(类似于继承)在用例泛化中,子用例表示父用例的特殊形式,子用例继承了父用例的行为和属性,也可以增加新的行为和属性或覆盖父用例中的行为。
例子:一个租赁或销售系统用例的部分内容,在此,父用例是“预定”,其两个子用例分别是“网上预定”和“电话预定”,这两个用例都继承了父用例的行为,并可以添加自己的行为。
2、包含关系Include一个用例(基用例,基本用例)可以包含其他用例(包含用例)具有的行为,并把它所包含的用例行为作为自身用例的一部分,这被称为包含关系。
在UML中,包含关系表示为虚线箭头加版型《include》,箭头从基本用例指向包含用例。
例子:一个租赁或销售系统中,“填写电子表格”的功能在“网上预定”的过程中使用,不管如何处理“网上预定”用例,总是要运行“填写电子表格”用例,因此具有包含关系。
3、扩展关系Extend一个用例也可以定义为基本用例的增量扩展,这称作扩展关系,即扩展关系是把新的行为插入到已有的用例中的方法。
在UML中,包含关系表示为虚线箭头加版型《extend》,箭头从扩展用例指向基本用例。
基本用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基本用例的扩展点上。
扩展关系可以有控制条件,当用例实例执行到达一个扩展点时,控制条件决定是否执行扩展。
一般情况下,基本用例的执行不会涉及到扩展用例,只有满足用例的控制条件时,扩展用例才被执行,因此扩展关系处理事件流的异常或者可选事件。
同一个基本用例的几个扩展可以在一起使用。
基本用例不知道扩展的任何细节.没有扩展用例,基本用例是完整的。
例子:一个汽车租赁系统用例图的部分内容。
在此,基本用例是“还车”,扩展用例是“交纳罚金”。
如果一切顺利汽车可以被归还,那么执行“还车”用例即可。
但是如果超过了还车的时间或汽车受损,按照规定客户要交纳一定的罚金,这时就不能执行提供的常规动作。
若研讨修改用例“还车”,势必会增加系统的复杂性,因此可以在用例“还车”中增加扩展点,即特定条件为超时或损坏,如果满足条件,将执行扩展用例“交纳罚金”,这样显然可以使系统更容易被理解。
4、参与者与用例之间的关系:关联关系Association关联关系描述参与者与用例之间的关系,在UML中它是两个或多个类元之间的关系,它描述了类元的实例间的联系。
(类元,一种建模元素,常见类元包括类、参与者、构件、数据类型、接口、结点、信号、子系统以及用例等,其中类是最常见的类元。
)关联关系表示参与者和用例之间的通信。
在UML中,关联关系用直线或箭头表示。
关联中communicates版型是参与者和用例之间唯一的版型,一般省略不写。
如果参与者启动了用例,箭头指向用例;如果参与者利用了用例提供的服务,箭头指向参与者。
如果二者是互动的,则是直线。
关联关系表示参与者和用例之间的通信。
不同的参与者可以访问相同的用例,一般说来它们和该用例的交互是不一样的,如果一样的话,说明他们的角色可能是相同的。
如果两种交互的目的也相同,说明他们的角色是相同的,就应该将他们合并。
例子:一个汽车租赁系统用例图的部分内容。
这个例子显示的是“客户”参与者以及与他交互的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注:表格中加粗是必须编写部分例子:四种常见的错误:P31 ,例子3.5----3.8分别对应了这4种错误和修改。
编写要点:(1)使用简单的语法:主语明确,语义易于理解,能清晰表述动作即可;(2)明确写出“谁控制球”:也就是在事件流描述中,让读者直观地了解是参与者在控制还是系统在控制;(3)从俯视的角度来编写:指出参与者的动作,以及系统的响应,也就是从第三者观察的角度;(4)显示过程向前推移:也就是每一步都有前进的感(例如,用户按下tab键作为一个事件就是不合适的);如果过程繁杂,超过了9步,那么考虑提高目标层次,即“向前推移”(5)显示参与者的意图而非动作(如果只描述了动作,人们不能够很容易地直接从事件流描述中理解用例);通过操纵系统的用户界面来描述用户的动作,这是在编写用例时常见的一种严重错误,它使得编写的目标处于一个很低的层次,叫做“界面细节描述(interface detail description)”。
在需求文档中,我们只关心界面所要达到的意图,总结在执行者之间传递的信息。
可将这些低层次的步骤合并成一个步骤。
3.7如何绘制用例图1、用例分析技术步骤(不固定,可根据需要调整):⑴找出系统外部的参与者和外部系统,确定系统的边界和范围。
⑵确定每一个参与者所期望的系统行为⑶把这些系统行为命名为用例⑷使用泛化、包含、扩展等关系处理系统行为的公共或变更部分⑸编制每一个用例的脚本⑹绘制用例图⑺区分基本事件流和异常情况的事件流,如有需要可以把表示异常情况的事件流作为单独的用例来处理⑻细化用例图,解决用例间的重复与冲突。