Overview

what is Use cases

when is it needed

Composition

Diagrams have four elements四种图形元素:

  • Actors执行者(与系统交互的实体)
  • Cases实例(对系统功能某方面的描述)
  • Extensions扩充(对用例的扩充)
  • Uses使用(复用已定义的用例)

Actors执行者(与系统交互的实体)

定义

是直接与系统相互作用的系统、子系统或类的外部实体的抽象。它是用户所扮演的角色是系统的用户。每个参与者定义了一个角色集合。通常,一个参与者可以代表一个人、一个计算机子系统、硬件设备或者时间等角色。典型的参与者如销售部经理、销售员和结帐系统。

图形表示

用小人图符表示

参与者的识别

What users or groups use the system to perform a task哪些用户或小组使用系统完成某项任务?(用户)

What users or groups are needed so that the system can perform its functions系统完成功能时需要哪些用户或小组?(管理)

What external systems use the system to perform a task哪些外部系统使用系统完成任务?

What external systems, users or groups send information to the system哪些外部系统、用户或小组给系统发送信息?

What external systems, users or groups receive information from the system哪些外部系统、用户或小组接收来自系统的信息?

谁将使用系统的主要功能?

  • 谁将需要系统的支持来完成他们的日常任务?
  • ■谁必须维护、管理和确保系统正常工作?
  • ■谁将给系统提供信息、使用信息和删除信息?
  • ■系统需要处理哪些硬件设备
  • ■系统使用了外部资源吗?
  • ■系统需要与其他什么系统交互吗?
  • ■谁或者什么对系统产生的结果感兴趣
  • ■一个人同时使用几种不同的规则吗?
  • ■几个人使用相同的规则吗?
  • ■系统使用遗留下来的应用吗?

Use Cases

定义

一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果

用例特征

  • 说明了系统具有的一种行为模式
  • 说明了一个参与者与系统执行的一个相关的事务序列
  • 提供了一种获取系统需求的方法
  • 提供了一种与最终的用户和领域专家进行沟通的方法
  • 提供了一种测试系统的方法

图形表示

用椭圆形表示,用例的名字显示在图标的下面

用例识别

  • 参与者要向系统请求什么功能
  • 每个参与者的特定任务是什么?
  • 参与者需要读取、创建、撤消、修改、或存储系统的某些信息吗?
  • 是否任何一个参与者都要向系统通知有关突发性的、外部的改变?或者必须通知参与者关于系统中的发生的事件?
  • 这些事件代表了哪些功能
  • 系统需要哪些输入/输出
  • 这些输入输出来自哪里或者到哪里去
  • 哪些用例支持或维护系统
  • 是否所有功能需求都被用例使用了?
  • 系统当前实现的主要问题是什么?

关系

关系反应了参与者和用例之间用例和用例之间以及参与者和参与者之间的相互作用。

在一个用例图中,可能会出现关联关系、依赖关系、泛化关系以及这三种关系的扩展形式:扩展关系、包含关系和精化关系

关联关系

关联关系表示一种通信路径,它存在于参与者和用例之间提供用例和参与者之间的通信途径。建立通信之后,信息可以双向流动。

关系方向显示的不是信息的流动方向,而是谁启动信息。

表示

模型图中:一条直线或者一条带箭头的直线

关联命名

一个动词或者一个动词短语,用于指明关系的类型或者目的。

类型

单向关联

双向关联
Actor1 与 UseCase1 ,Actor2 与 UseCase1

依赖关系

存在于两个模型要素之间的一种关系,其中一个模型要素的改变将影响另一个模型要素

表示方法

工具箱和模型图中均表示为一个带箭头的虚线

画图时,拖动鼠标从客户到提供者画出关联关系

泛化关系

在一个更一般的模型要素和另一个较具体的模型要素之间存在的一种关系,通常用于表示类(包括用例、参与者等)之间的继承关系

表示方法

模型图中:一条带空心三角形箭头的实线(箭头方向从具体用例指向一般用例)

扩展关系

扩展关系可以放置在所有的关系上,大多数扩展构造型都放置在依赖关系和关联关系

扩展关系用带箭头的虚线表示,沿线上加一个用双尖括号括起来的“extend

常见的几种扩展关系

a.两个用例相似但不完全相同时
b.当要对多个额外情况逐一建模时,可以使用扩展关系,用一个独立的用例替代每个额外的情况
c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系 

包含关系

是一种构造型关系,它将一个基用例连接到一个包含用例

包含关系在一个用例中重用另一个用例中的步骤

包含关系用带箭头的虚线表示,沿线上加一个用双尖括号括起来的“include

使用包含关系的三种情况

a.如果有多个用例,并且这些**用例包含大量类似的行为**,应该考虑将这些类似的行为通过包含关系包含到用例中 
b.对两个或多个互相独立的用例建模时做了重复的工作,可以通过包含关系包含这些重复的工作 
c.如果某个行为可能会引入冗余,或者,当行为发生变化时可能导致不一致性,这时,应该对这种行为进行孤立建模并将它包含到用例中 

精化关系

精化关系在不同的语义层或者开发阶段连接两个或者多个模型要素。它表示了某些在一个特定的细节层次上规定的东西的更加全面的规格说明。例如,一个设计类就是一个分析类的一种精化。在一个精化关系中,源模型要素是一般的,在定义上更加概括;而目标模型要素更加具体并得到了进一步的精化。