[软件工程] UML 用例图详解
参考博客:
https://blog.csdn.net/sinat_25207295/article/details/116073819
https://blog.csdn.net/cold___play/article/details/100824261
参考教材:
软件工程(第四版)高等教育出版社
统一建模语言(Unified Modeling Language,UML) 可分类成:
·功能模型:从用户的角度展示系统的功能,包括用例图。
·对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
·动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
1.UML的用例图
用例的概念:
从外部用户的视角看,一个用例(use case)是执行者(actor)与 目标软件系统之间一次典型的交互作用。其效果就是执行者在软件系统的帮助下完成了某项业务功能。
从软件系统内部的视角出发,一个用例代表着系统执行的一系列动作。
简而言之:用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列
执行者是指外部用户或者外部实体在系统的交互过程中扮演的角色,执行者可以是一类用户,也可以是其他软件系统或者物理设备。
用例图:
UML的用例模型由一到多幅用例图构成,它们表示从软件系统的外部使用者的角度看到的各项系统功能,并清晰地说明软件系统的边界,
即,用例图中所用用例的集合构成目标软件系统应该提供的功能,除此以外软件系统不再承诺其他功能。
用例图的节点有执行者和用例两种。
用例图的边表示 执行者与用例之间、 两个用例之间、 两个执行者之间的关系
1.1 执行者与用例之间的关系
执行者与用例之间的连接边,意义为:执行者触发用例的执行,向用例提供信息或者从用例获取信息。
1.2 用例之间的关系
用例之间的关系主要有三种:包含(include)、扩展(extend)和继承
1.2.1 包含
包含关系是指基础用例(Base)会被用到被包含用例(inclusion)
例如:在ATM机中,如果查询、取现、转帐这三个用例都需要打印一个回执给客户,我们就可以把打印回执这一部分内容提取出来,抽象成为一个单独的用例"打印回执",而原有的查询、取现、转帐三个例都会包含这个用例。每当以后要对打印回执部分的需求进行修改时,就只需要改动一个用例,而不用在每一个用例都作相应修改,这样就提高了用例模型的可维护性。
当某一个用例的事件流过于复杂时,为了简化用例的描述,我们可以将某一段的事件流抽象成为一个被包含的用例。
这种情况类似于过程设计语言中,将程序的某一段算法封装成一个子过程,然后在主程序中调用这个子过程。
1.3.2 扩展
扩展(extend)关系,基础用例(Base)中定义有一至多个已命名的扩展点,扩展关系是指将扩展用例(Extension)的事件流在一定条件下按照相应的扩展点插入到基础用例中。
对于包含关系而言,被包含用例是一定插入到基础用例当中的。而扩展关系可以根据一定的条件来决定是否将扩展用例的事件流插入到基础用例事件流,并且插入点可以有多个。
扩展关系经常用来区分正常的业务处理功能和带有例外处理的功能。
例如:假定在课程注册管理系统中每门课程设置所容纳的学生数量有限制,一旦超出限制需经任课教师同意。可设置“制订选课计划[考虑学生数量限制]”用例,并将其作为“制订选课计划”的扩展用例
例如:例如对于电话业务,可以在基本通话(Call)业务上扩展出一些增值业务如:呼叫等待(Call Waiting)和呼叫转移(Call Transfer)。我们可以用扩展关系将这些业务的用例模型描述为右图所示。
在这个例子中,呼叫等待和呼叫转移都是对基本通话用例的扩展,但是这两个用例只有在一定的条件下(如应答方正忙或应答方无应答)才会将被扩展用例的事件流嵌入基本通话用例的扩展点,并重用基本通话用例中的事件流。
1.1.3 继承(又称泛化)
当多个用例共同拥有一种类似的结构和行为的时候,我们可以将它们的共性抽象为父用例,其他的用例作为泛化关系中的子用例。
子用例从父用例继承行为和属性,还可以添加行为或者覆盖和改变继承的行为。
1.3 执行者之间的关系
执行者之间的关系只有继承关系一种
如在需求分析中常见的权限控制问题(如右图所示),一般的用户只可以使用一些常规的操作,而管理员除了常规操作之外还需要进行一些系统管理工作,操作员既可以进行常规操作又可以进行一些配置操作。
在这个例子中我们会发现管理员和操作员都是一种特殊的用户,他们拥有普通用户所拥有的全部权限,此外他们还有自己独有的权限。这里我们可进一步把普通用户和管理员、操作员之间的关系抽象成泛化(Generalization)关系,管理员和操作员可以继承普通用户的全部特性(包括权限),他们又可以有自己独有的特性(如操作、权限等)。这样可以显著减少用例图中关联的个数,简化用例模型,使之更易于理解。
更多推荐
所有评论(0)