初学者指南:用例图——开启您的软件工程之旅

目录

背景:

基本组成:

关联(Assciation):

包含(Include):

扩展(Extend):

泛化(Inheritance):

完整银行系统用例图:

总结:


背景:

用例图(Use Case Diagram)是一种在软件开发和系统设计中广泛使用的图形化工具,它属于UML(Unified Modeling,统一建模语言)的一部分。用例图通过展示参与者(Actor)与系统用例(Use Case)之间的交互关系,来描述系统功能需求和行为

基本组成:

名称

表示

名词解释

系统(System)

用一个矩形代表一个系统,然后将系统名称放在顶部。矩形用于定义系统的范围,矩形内的所有内容都在系统内发生,矩形外的所有内容都不会在系统外发生

参与者(Actor)

与系统交互的外部实体,可以是用户、其他系统或任何能够触发系统功能的实体

用例(Use Case)

描述系统的一个功能或行为,是系统参与者提供的一项服务或完成一个任务

关联(Assciation)

参与者与用例间的关系
包含(Include)

参与者之间或用例之间的关系
扩展(Exten)

用例之间的关系
泛化(Inheritance)

用例之间的关系

关联(Assciation):

关联关系,用实线表示。表示参与者与用例与用例之间的通信,任何一方都可以发送和接收消息。

例子:在银行系统中,客户(参与者)与登录(用例)之间存在关联关系。客户登录银行应用、客户检查账单、客户转账、客户付款。这种之间的连接或交互就是关联关系

包含(Include):

包含关系,把一个较复杂用例所表示的功能分解成较小的步骤,是上一个用例过程中不可可少的。箭头指向包含的子用例

例子:登录是基本用例,验证密码是包含用例,在银行系统中,每次客户登录时,银行应用都会验证密码

扩展(Extend):

扩展关系,用例功能的延伸,相当于为基础用例提供一个附加功能。(指向基础用例)

基本用例和扩展用例,当执行基本用例时,扩展用例有时候会触发有时候不会触发,扩展用例只会在满足某种条件的时候才会触发,

当有扩展关系时,使用一条带有箭头的虚线指向基本用例

例子:在银行系统中,登录是基本用例,而提示登录错误是一个扩展用例,银行应用不会在每次可客户登录时都提示登录错误消息,而是当客户输入错误的密码时,才会提示登录错消息。因为这是一个扩展关系,所以画一条带有箭头的虚线,箭头指向基本用例。

转账和支付者两个动作完成之前都需要检查余额是否充足

泛化(Inheritance):

泛化关系是一种继承关系,它表示一般与特殊的关系。在用例图中,泛化关系通常用于描述用例或参与者之间的继承关系。一个用例(或参与者)可以是另一个用例(或参与者)的特化或子类,继承父类(基类)的所有行为或者特征。

例子:在银行系统中,当客户使用银行应用付款时,可以从支票账户进行付款或者从储蓄账户进行付款,付款是一个通用用例。从支票账户付款和从储蓄账户付款是专门用例,可以把它们叫做父用例和子用例,子用例有着父用例的功能,并且子用例还具有特有的功能。

完整银行系统用例图:

总结:

用例图的好处解释
清晰表达系统需求通过展示参与者与系统之间的交互,使系统需求更加明确和直观
促进沟通为开发团队、测试团队、业务分析师等提供了共同的语言和理解基础
识别系统功能明确列出系统需要实现的功能,有助于后续的设计和开发工作
降低开发风险通过早期识别潜在的问题和需求变更,减少开发过程中的风险和不确定性
支持迭代开发易于更新和调整,适应迭代开发过程中的需求变化
提高开发效率为开发团队提供了明确的指导,减少不必要的开发和测试工作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

针对oneplus6 怎么选择lineage源码的什么分支

针对oneplus6 怎么选择lineage源码的什么分支 : 先刷入 官方LineageOS-20 从而正常启动, 正常启动 说明 官方LineageOS-20 中的驱动是正常的 再用 编译LineageOS源码的分支20 ,并用https://github.com/LineageOS/android_device_oneplus_enchilada/blob…

Python yeild关键字

定义生成器函数 def sync_generator(n):for i in range(n):yield i python复制代码 def sync_generator(n): 定义了一个名为 sync_generator 的函数,它接受一个参数 n。for i in range(n): 在函数内部,有一个 for 循环,它遍历从 0 到 n-1 …

linux进程的状态之环境变量

我们在前面了解了进程的状态及相关概念 接下来我们接着上一篇进程的状态接着了解环境变量 进程的状态 文章目录 目录 文章目录 前言 二、环境变量 1、常见环境变量 2、查看环境变量 3、修改PATH 4、HOME 5、PATH ​编辑 6、和环境变量相关的命令 三、环境变量的组织…

什么是Flutter,有什么特点

Flutter 简介 Flutter 是由 Google 开发的一个开源 UI 软件开发工具包,用于构建跨平台的移动、Web 和桌面应用。Flutter 使用 Dart 语言编写,旨在提供高性能、美观且一致的用户界面。Flutter 的设计目标是让开发者能够使用一套代码库在多个平台上构建高…

仪表板展示|DataEase看中国:历年双十一电商销售数据分析

背景介绍 2024年“双十一”购物季正在火热进行中。自2009年首次推出至今,“双十一”已经成为中国乃至全球最大的购物狂欢节,并且延伸到了全球范围内的电子商务平台。随着人们消费水平的提升以及电子商务的普及,线上销售模式也逐渐呈现多元化…

ChatGLM2-6B微调记录【2】

模型推理测试 微调前的chatglm2-6b模型运行python predict.py --mode glm2 --model_path chatglm2-6b/运行结果记录 /data/user23262833/.conda/envs/chatglm/lib/python3.8/site-packages/transformers/utils/generic.py:311: FutureWarning: torch.utils._pytree._register…

置信传播算法复现

本文所涉及所有资源均在 传知代码平台 可获取。 目录 一.背景及意义介绍 1. 实际应用广泛 2. 理论研究重要性

操作系统-设备管理

一、中断的基本概念 中断是指在计算机执行程序的过程中,出现了某种紧急或异常的事件(中断请求),CPU需要暂停正在执行的程序,转去处理该事件(执行中断服务程序),并在处理完毕后返回断…

读数据工程之道:设计和构建健壮的数据系统32序列化和云网络

1. 序列化 1.1. 仅仅通过从CSV转换到Parquet序列化,任务性能就提高了上百倍 1.2. 基于行的序列化 1.2.1. 基于行的序列化是按行来组织数据 1.2.2. 对于那些半结构化的数据(支持嵌套和模式变化的数据对象)​,基于行的序列化需要…

R树、Quad树 (Quad Tree)数据结构详细解读

一、R 树 (R-Tree) R 树(R-Tree) 是一种 树形数据结构,主要用于在 多维空间(如 2D 或 3D 空间)中存储和检索 空间对象。R 树的设计目标是支持高效的 区域查询(range query) 和 邻近查询&#x…

【软件工程】ATAM架构权衡评估方法

ATAM架构权衡评估方法 概述质量属性有哪些?质量属性的效用树怎么构建?如何确定质量属性的优先级? 概述 ATAM(Architecture Tradeoff Analysis Method)是一种系统架构评估方法,由卡梅隆大学软件工程协会提出…

了解数据库分区

分区是将一个表或索引按照某种规则划分为多个更小的、更易于管理的部分。分区是将表的数据分成更小、更易于管理的部分的过程。分区有一些显著的好处,包括改善查询性能、增强数据库的可用性和可维护性。 1.为什么要分区? 表分区(Partitioning…

深度学习:Cross-attention详解

Cross-attention详解 Cross-attention,也称为编码器-解码器注意力,是Transformer架构中的一个关键组件,特别用于在解码器中整合来自编码器的信息。这种机制允许解码器在生成每个输出时,利用整个输入序列的上下文信息,…

09 顺序表的修改操作

顺序表的修改操作 一、数据修改 ​ 操作的步骤: ​ 1)判断顺序表是否为空,如果没有数据,操作失败; ​ 2)判断修改位置是否合理,不合理则操作失败; ​ 3)将i位置中的数…

深度学习⑨GANs

Discriminative and Generative Models Deep learning中主要两种模型 判别模型专注于从输入预测输出,例如分类任务。学习数据点和标签之间的特征 生成模型则试图理解数据是如何产生的,能够生成新的数据样本。理解数据分布和是否可以被预测 Quiz time: Discriminative mo…

游戏中Dubbo类的RPC设计时的注意要点

一.消费方 1.需要使用到动态代理,代理指定的接口,这样子接口被调用时,就可以拿到:"类名 方法名参数返回值" 这些类型。 2.既然是rpc,那么接口被调用时,肯定在动态代理中会进行网络消息的发送&a…

react中的组件传参

在React中,组件之间的数据传递是构建用户界面的关键部分。根据不同的需求和场景,有多种方式可以在React中传递参数,以下是对这些方式的详细说明: 一、通过props传递参数 这是React中最基本和最常用的数据传递方式。父组件通过属…

OSPF动态路由配置实验:实现高效网络自动化

实验主题:OSPF动态路由协议配置 实验背景 OSPF(Open Shortest Path First)是一种基于链路状态的路由协议,广泛应用于中大型网络中。它采用Dijkstra算法计算最短路径,以确保网络中的路由更新快速、稳定,并能…

AI引领PPT创作:迈向“免费”时代的新篇章?

AI引领PPT创作:迈向“免费”时代的新篇章? 在信息爆炸的时代,演示文稿(PPT)作为传递信息和展示观点的重要工具,其制作效率和质量直接关系到演讲者的信息传递效果。随着人工智能(AI)…

区块链技术在供应链管理中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 区块链技术在供应链管理中的应用 区块链技术在供应链管理中的应用 区块链技术在供应链管理中的应用 引言 区块链技术概述 定义与…