用例图
用例图(Use Case Diagram)是统一建模语言(UML, Unified Modeling Language)中的一种图表,用于捕捉系统的行为需求,特别是从用户交互的角度来描述系统的功能性。它主要用来展示系统与外部参与者(如用户、其他系统或硬件设备)之间的交互,并标识这些参与者如何通过使用系统提供的服务来实现其目标。
用例图的主要元素
-
参与者 (Actor):参与者是与系统进行交互的实体,可以是人、其他系统或者时间事件等。在UML中,参与者通常用一个小人的图标表示,并且有一个描述性的名称。
-
用例 (Use Case):用例代表了系统为参与者提供的一项功能或服务。每个用例都描述了一个或多个场景,即参与者为了完成某个任务而与系统进行的一系列交互动作。用例一般用椭圆表示,并标注上简明扼要的名字。
-
关联关系 (Association):关联关系表示参与者和用例之间的连接,意味着参与者可以启动或参与该用例。它用一条线连接参与者和用例来表示。
-
包含关系 (Include):当一个用例总是需要另一个用例的功能时,这两个用例之间就存在包含关系。包含关系用带箭头的虚线加上“<<include>>”标记表示,箭头指向被包含的用例。
-
扩展关系 (Extend):如果一个用例可以在特定条件下添加额外行为到另一个用例中,则它们之间存在扩展关系。扩展关系用带箭头的虚线加上“<<extend>>”标记表示,箭头指向基础用例。
-
泛化关系 (Generalization):类似于类图中的继承关系,如果一个用例是从另一个更通用的用例派生出来的,那么它们之间就存在泛化关系。泛化关系用带有空心三角形箭头的实线表示,箭头指向父用例。
用例图的应用
- 需求分析:帮助团队理解并记录系统的业务逻辑和用户需求。
- 设计规划:指导软件架构的设计,确保所有必要的功能都被考虑进去。
- 测试准备:为测试人员提供测试案例的基础,确保所有用例都能得到验证。
- 沟通工具:作为一种视觉化的文档形式,有助于非技术人员理解系统的工作方式。
用例图所包含的元素如下:
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设置到你的文档上;
这样当你在用例图上双击项目时,就会打开相关联的文档。
6. 注释(Comment)
包含(include)、扩展(extend)、泛化(Inheritance) 的区别:
条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;
直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。
对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;
一个用例图示例: