首页 > 其他分享 >UML用例图

UML用例图

时间:2023-06-17 10:04:37浏览次数:52  
标签:关系 泛化 扩展 用例 客户 UML 客户档案

原文合集地址如下,有需要的朋友可以关注

本文地址

合集地址

介绍

UML(Unified Modeling Language)用例图的缩写为UCD,其中UCD代表Use Case Diagram。用例图是软件系统设计中的一种图形化表示工具,用于描述系统的功能需求和用户与系统之间的交互。用例图主要用于捕捉系统的行为视图,展示系统中的参与者(actors)和用例(use cases)之间的关系。

用例图中的元素

在UML(Unified Modeling Language)用例图中,常见的元素包括:

  1. 参与者(Actors):参与者是与系统进行交互的外部实体,可以是人、其他软件系统、硬件设备等。参与者可以触发用例的执行,也可以从系统中接收结果。参与者通常以图标形式表示,如人的图标或系统图标。
  2. 用例(Use Cases):用例代表系统中的一个功能或一个用户场景,描述了系统提供的服务。用例通常以椭圆形状表示,并使用有意义的名称来描述其功能。每个用例描述了一个或多个参与者与系统之间的交互流程。

这些元素一起构成了用例图,通过用例图可以清晰地描述系统的功能需求和用户与系统之间的交互关系,帮助开发团队和利益相关者更好地理解和沟通系统的设计。

用例图中的关系有哪些

在UML(Unified Modeling Language)用例图中,常见的关系有以下几种:

1. 关联关系(Association)

关联关系表示参与者(Actor)与用例(Use Case)之间的连接。它们表示参与者与用例之间的通信和交互关系。关联关系通常使用直线连接参与者和用例。

假设我们正在设计一个客户管理系统,其中包含以下几个用例:

  1. 创建客户档案(Create Customer Profile)
  2. 更新客户信息(Update Customer Information)
  3. 查看客户详情(View Customer Details)
  4. 删除客户档案(Delete Customer Profile)

在这个客户管理系统中,我们还有两个参与者:

  1. 管理员(Administrator):负责管理系统和客户档案的管理员。
  2. 客户(Customer):使用系统的客户。

现在我们来看一下哪些场景是关联关系:

关联关系示例 1:

  • 参与者:管理员
  • 用例:创建客户档案
  • 关联关系:管理员与创建客户档案之间建立关联关系,表示管理员可以触发创建客户档案的操作。

关联关系示例 2:

  • 参与者:客户
  • 用例:更新客户信息
  • 关联关系:客户与更新客户信息之间建立关联关系,表示客户可以触发更新自己信息的操作。

关联关系示例 3:

  • 参与者:管理员
  • 用例:查看客户详情
  • 关联关系:管理员与查看客户详情之间建立关联关系,表示管理员可以触发查看客户详情的操作。

关联关系示例 4:

  • 参与者:管理员
  • 用例:删除客户档案
  • 关联关系:管理员与删除客户档案之间建立关联关系,表示管理员可以触发删除客户档案的操作。

在这些关联关系中,参与者与各个用例之间建立了连接,表示参与者可以触发或执行相应的用例。这些关联关系在用例图中通过直线连接参与者和用例来表示。

2. 包含关系(Include)

包含关系表示一个用例(包含者)包含另一个用例(被包含者)的行为。当一个用例需要调用另一个用例以完成其功能时,可以使用包含关系来表示这种关系。包含关系通常使用带箭头的虚线表示。

假设我们正在设计一个客户管理系统,其中包含以下几个用例:

  1. 创建客户档案(Create Customer Profile)
  2. 更新客户信息(Update Customer Information)
  3. 查看客户详情(View Customer Details)
  4. 删除客户档案(Delete Customer Profile)

在这个客户管理系统中,我们可以看到一些用例之间存在包含关系:

包含关系示例 1:

  • 用例:更新客户信息
  • 包含关系:更新客户信息包含了创建客户档案
  • 描述:在执行更新客户信息的过程中,如果客户档案不存在,则需要先执行创建客户档案的操作,因此创建客户档案是更新客户信息的一个子功能。这种关系可以使用包含关系来表示。

包含关系示例 2:

  • 用例:删除客户档案
  • 包含关系:删除客户档案包含了查看客户详情
  • 描述:在执行删除客户档案的过程中,需要先查看客户详情来确认要删除的客户信息。因此,查看客户详情是删除客户档案的一个子功能。这种关系可以使用包含关系来表示。

在这些包含关系的示例中,一个用例包含了另一个用例的行为,也就是说,一个用例的功能需要调用另一个用例来完成。这种关系在用例图中可以用带箭头的虚线来表示。

3. 扩展关系(Extend)

扩展关系表示一个用例(扩展者)可以在特定条件下扩展另一个用例(被扩展者)的功能。当一个用例的某个功能是可选的,并且仅在满足一定条件时才会发生时,可以使用扩展关系来表示这种关系。扩展关系通常使用带箭头的虚线表示。

假设我们正在设计一个客户管理系统,其中包含以下几个用例:

  1. 创建客户档案(Create Customer Profile)
  2. 更新客户信息(Update Customer Information)
  3. 查看客户详情(View Customer Details)
  4. 删除客户档案(Delete Customer Profile)

在这个客户管理系统中,我们可以找到一些使用扩展关系的场景:

扩展关系示例 1:

  • 基础用例:创建客户档案
  • 扩展用例:验证客户信息
  • 描述:当执行创建客户档案的操作时,可以选择进行验证客户信息的扩展。验证客户信息是一个可选的扩展功能,仅在需要验证客户信息时才会发生。通过扩展关系,我们可以将验证客户信息扩展与创建客户档案基础用例关联起来。

扩展关系示例 2:

  • 基础用例:更新客户信息
  • 扩展用例:记录修改日志
  • 描述:当执行更新客户信息的操作时,可以选择记录修改日志的扩展。记录修改日志是一个可选的扩展功能,用于记录更新客户信息的操作历史。通过扩展关系,我们可以将记录修改日志扩展与更新客户信息基础用例关联起来。

在这些扩展关系的示例中,一个用例可以在特定条件下扩展另一个用例的功能。扩展关系通过带箭头的虚线表示,并指示扩展发生的条件。通过扩展关系,我们可以描述系统中的可选功能,并以清晰的方式表示这些功能与基础用例之间的关系。

4. 泛化关系(Generalization)

泛化关系表示一个用例或参与者是另一个用例或参与者的特殊情况。泛化关系用于描述继承关系,其中子用例或子参与者继承了父用例或父参与者的行为和属性。泛化关系通常使用带空心三角形的实线表示。

假设我们正在设计一个客户管理系统,其中有两种类型的客户:普通客户(Regular Customer)和VIP客户(VIP Customer)。在这个系统中,我们可以使用泛化关系来表示这两种客户之间的关系。

泛化关系示例:

泛化关系示例 1:

  • 父用例:创建客户档案
  • 子用例:创建普通客户档案、创建VIP客户档案
  • 描述:创建普通客户档案和创建VIP客户档案都是创建客户档案的特殊情况。这里的泛化关系可以表示为父用例“创建客户档案”和子用例“创建普通客户档案”以及“创建VIP客户档案”之间的继承关系。

泛化关系示例 2:

  • 父用例:查看客户详情
  • 子用例:查看普通客户详情、查看VIP客户详情
  • 描述:查看普通客户详情和查看VIP客户详情都是查看客户详情的特殊情况。这里的泛化关系可以表示为父用例“查看客户详情”和子用例“查看普通客户详情”以及“查看VIP客户详情”之间的继承关系。

在这些泛化关系的示例中,子用例继承了父用例的行为和属性,子用例是父用例的特殊情况。通过泛化关系,我们可以使用父用例来定义通用的行为和属性,并通过子用例来表示不同情况下的特殊行为和属性。在用例图中,泛化关系通常使用带空心三角形的实线来表示。

5. 依赖关系(Dependency)

依赖关系表示一个元素(依赖者)依赖于另一个元素(被依赖者)。当一个元素的变化可能影响到另一个元素时,可以使用依赖关系来表示这种关系。依赖关系通常使用带箭头的虚线表示。

假设我们正在设计一个客户管理系统,其中包含以下几个用例:

  1. 创建客户档案(Create Customer Profile)
  2. 更新客户信息(Update Customer Information)
  3. 发送邮件通知(Send Email Notification)

在这个客户管理系统中,我们可以找到一些使用依赖关系的场景:

依赖关系示例 1:

  • 用例:发送邮件通知
  • 依赖关系:发送邮件通知依赖于更新客户信息
  • 描述:当执行发送邮件通知的操作时,需要获取最新的客户信息来构建邮件内容。发送邮件通知的操作依赖于更新客户信息的结果。因此,发送邮件通知用例依赖于更新客户信息用例。

依赖关系示例 2:

  • 用例:创建客户档案
  • 依赖关系:创建客户档案依赖于发送邮件通知
  • 描述:在执行创建客户档案的操作时,需要发送邮件通知给相关人员。创建客户档案的操作依赖于发送邮件通知的结果。因此,创建客户档案用例依赖于发送邮件通知用例。

在这些依赖关系的示例中,一个用例的执行依赖于另一个用例的结果或输出。依赖关系可以帮助我们描述用例之间的依赖关系,以确保正确的顺序和流程。在用例图中,依赖关系通常使用带箭头的虚线来表示。

对比记忆

包含关系和扩展关系的区别

包含关系和扩展关系是用例图中两种不同的关系,用于描述用例之间的关联和扩展。

包含关系(Inclusion Relationship)是一种用于描述一个用例包含另一个用例的关系。在包含关系中,一个用例的功能需要调用另一个用例来完成。被包含的用例是包含用例的一部分,也就是说,包含用例将使用被包含用例的功能来完成自身的行为。包含关系通常用于表示一种可重用的行为或功能,以便将其用于多个用例中。

扩展关系(Extension Relationship)是一种用于描述一个用例在特定条件下扩展另一个用例的功能的关系。在扩展关系中,一个用例可以在特定条件下扩展另一个用例的功能,以增加额外的行为或功能。扩展关系通常用于表示一种可选的或条件性的功能,只有在特定条件下才会触发扩展用例的执行。

区别如下:

  • 包含关系强调一个用例的功能需要调用另一个用例来完成,被包含的用例是包含用例的一部分。
  • 扩展关系强调一个用例可以在特定条件下扩展另一个用例的功能,扩展用例是基础用例的可选或条件性扩展。

泛化关系和扩展关系的区别

泛化关系(Generalization Relationship)和扩展关系(Extension Relationship)是用例图中两种不同的关系,用于描述用例之间的关联和继承。

  1. 泛化关系:
  • 泛化关系用于描述用例之间的继承关系,表示一个用例是另一个用例的特殊情况或子类。
  • 通过泛化关系,一个用例可以继承另一个用例的行为和属性。
  • 泛化关系适用于表示用例之间的一般与特殊关系,其中子用例继承了父用例的通用行为。
  • 在用例图中,泛化关系通常使用带空心三角形的实线来表示。
  1. 扩展关系:
  • 扩展关系用于描述一个用例在特定条件下扩展另一个用例的功能。
  • 通过扩展关系,一个用例可以在特定条件下增加额外的行为或功能,扩展用例是基础用例的可选或条件性扩展。
  • 扩展关系适用于表示用例之间的可选或条件性功能扩展,其中扩展用例依赖于基础用例的执行,并在满足特定条件时才会触发执行。
  • 在用例图中,扩展关系通常使用带箭头的虚线来表示。

总结来说,泛化关系用于表示用例之间的继承关系,子用例是父用例的特殊情况;而扩展关系用于表示一个用例在特定条件下扩展另一个用例的功能。它们描述了不同类型的关联和行为,用于表示不同的用例之间的关系。

泛化关系和包含关系的区别

泛化关系(Generalization Relationship)和包含关系(Inclusion Relationship)是用例图中两种不同的关系,用于描述用例之间的关联和组织结构。

  1. 泛化关系:
  • 泛化关系用于描述用例之间的继承关系,表示一个用例是另一个用例的特殊情况或子类。
  • 通过泛化关系,一个用例可以继承另一个用例的行为和属性,子用例是父用例的扩展。
  • 泛化关系适用于表示用例之间的一般与特殊关系,其中子用例继承了父用例的通用行为。
  • 在用例图中,泛化关系通常使用带空心三角形的实线来表示。
  1. 包含关系:
  • 包含关系用于描述一个用例包含另一个用例的关系,表示一个用例的功能需要调用另一个用例来完成。
  • 被包含的用例是包含用例的一部分,它提供了一种可重用的行为或功能。
  • 包含关系适用于表示用例之间的组织结构和模块化,其中一个用例的功能包含了另一个用例的功能。
  • 在用例图中,包含关系通常使用带箭头的虚线来表示。

区别如下:

  • 泛化关系描述了用例之间的继承关系,其中子用例是父用例的特殊情况,子用例继承了父用例的行为和属性。
  • 包含关系描述了一个用例包含另一个用例的关系,其中一个用例的功能需要调用另一个用例来完成,被包含的用例提供了可重用的行为或功能。
  • 泛化关系强调继承和扩展的关系,子用例是父用例的特殊情况,继承了父用例的通用行为。
  • 包含关系强调模块化和组织结构,一个用例的功能包含了另一个用例的功能,被包含的用例提供了一种可重用的行为。

虽然泛化关系和包含关系在某些方面可能有一些相似之处,但它们描述的是不同的概念和关系。泛化关系用于描述继承关系,而包含关系用于描述组织和模块化关系。

缩写记忆方式

基础概念

简单来说,一共有五个关系。他们分别的关键点在如下: 1、依赖关系:一个用例的执行依赖于另一个用例的结果或输出 2、关联关系:参与者可以触发或执行相应的用例 3、泛化关系:子用例继承了父用例的行为和属性,子用例是父用例的特殊情况 4、包含关系:一个用例的功能需要调用另一个用例来完成 5、扩展关系:一个用例可以在特定条件下扩展另一个用例的功能

区别

包含关系中有重用的概念 扩展关系中有额外的概念 泛化关系中有继承的概念 依赖关系中有先后串联的概念

顺口溜

包含重用:箭头虚线 扩展额外:箭头虚线 泛化继承:空心三角形实线 依赖串联:箭头虚线 关联参与:直线

标签:关系,泛化,扩展,用例,客户,UML,客户档案
From: https://blog.51cto.com/u_14196886/6504548

相关文章

  • UML用例图
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址介绍UML(UnifiedModelingLanguage)用例图的缩写为UCD,其中UCD代表UseCaseDiagram。用例图是软件系统设计中的一种图形化表示工具,用于描述系统的功能需求和用户与系统之间的交互。用例图主要用于捕捉系统的行为视图,展示......
  • Learn UML with JUDE(一)
    我希望你能够使用JUDE去学习和体验UML,JUDE是一个建模工具,你可以用它去画UML。下面我会指导你通过一些实例去学习使用JUDE来画UML。一、Overview    UMLandUMLtools l    DescriptionofJUDE l    InstallationofJUDE l    FundamentalComponentsandB......
  • 常用的测试用例设计方法
    用的测试用例设计方法等价类划分 边界值分析 因果图分析     正交实验法条件组织特别多,每个条件状态特别多,排列组织C10*10  功能图分析方法(白盒测试) 错误推断法 需求文档转化法 ......
  • UML图详解
    引用1、为什么需要类图?类图的作用我们做项目的需求分析,最开始往往得到的是一堆文字,请看下面这堆文字:本项目是在一期的基础上增加对电缆、通讯工程的管理和施工详细数据的记录和统计,使整个系统更好的管理各工程项目从中标开始到竣工验收的全部过程和资料和分析施工过程的数据。......
  • springboot 测试用例 gradle
    在springboot2.4.5之后的变成了jinut5直接引用即可不需要排除org.junit.jupiter.api.Testorg.springframework.boot:spring-boot-starter-test测试数据H2packagecom.example.test_pro_gradle;importorg.junit.jupiter.api.Test;importorg.slf4j.Logger;impor......
  • pytest + yaml 框架 -37.mark 标记对用例运行时长断言
    前言pytest执行用例的时候,我们希望对用例的运行时间断言,当用例执行时长大于预期标记此用例失败。@pytest.mark.runtime(1)运行时长单位是秒此插件已打包上传到pypihttps://pypi.org/project/pytest-runtime-yoyo/1.0.0/环境准备pipinstallpytest-yaml-yoyo此功能在v1.......
  • pytest文档 88- pytest-runtime-yoyo 对用例运行时长断言
    说明pytest执行用例的时候,我们希望对用例的运行时间断言,当用例执行时长大于预期标记此用例失败。@pytest.mark.runtime(1)运行时长单位是秒此插件已打包上传到pypihttps://pypi.org/project/pytest-runtime-yoyo/1.0.0/基本示例test_demo.pyimportpytestimporttime......
  • 测试用例的设计方法(转)
    等价类划分方法:方法简介 一)定义  是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 二)划分等价类:  等价类是指某个输入域的子集合。在该子集合中,各......
  • UML类图说明
    1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向......
  • 针对 B/S、C/S 架构的 180 个简单测试案例—窗口测试用例
    -测试清单可以提供给开发人员查阅,以保证在开发阶段就避免出现一些常见的问题。几点说明:1)用不同的用户角色执行这些测试场景,如:管理用户,来宾用户等。2)对于web应用,这些场景应该在客户认可的多种浏览器的各个版本上进行测试,如:IE,Firefox,Chrome,Safari等。3)用不同的屏幕分辨率进行测试,如......