news 2026/6/20 19:00:30

软件架构设计 | 第3讲:用例建模

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件架构设计 | 第3讲:用例建模

目录

一、需求建模基础

1.1 什么是需求?

1.2 需求建模的两个阶段

1.3 需求规约的质量属性

二、用例(Use Case)

2.1 什么是用例?

2.2 用例的核心特点

2.3 用例 vs 功能点

三、参与者(Actor)

3.1 什么是参与者?

3.2 参与者的类型

3.3 如何识别参与者?

四、确定用例

4.1 主序列和备选序列

五、用例关系(重点!)

5.1 包含关系(Include)

5.2 扩展关系(Extend)

5.3 包含关系 vs 扩展关系(高频考点!)

六、用例的组织

6.1 不宜采用小粒度的包含用例

6.2 用例包(Use Case Package)

七、活动图描述用例的交互序列

7.1 什么是活动图?

7.2 活动图 vs 用例图

7.3 活动图的基本元素

八、课后思考题(含答案)

问题1:包含关系和扩展关系的区别是什么?各自在什么场景下使用?

问题2:如何识别系统的参与者?请列举四种参与者类型。

问题3:主序列和备选序列的区别是什么?请举一个生活中的例子。

九、本讲核心考点总结


内容:需求建模、用例与参与者、包含/扩展关系、活动图


一、需求建模基础

1.1 什么是需求?

需求描述用户对系统的期望,主要考虑外部特性:

需求类型说明例子
功能需求系统要提供什么功能"用户可以登录系统"
非功能需求系统应该满足什么质量属性"登录响应时间不超过1秒"

1.2 需求建模的两个阶段

  • 需求分析:分析涉众、当前系统、新系统特性
  • 需求规约:与用户达成共识的文档

1.3 需求规约的质量属性

属性说明
正确准确描述用户真正需要的
完整没有遗漏重要需求
无二义性每个需求只有一种理解方式
一致性需求之间不矛盾
可验证可以通过测试验证是否满足
非计算机专家能理解用户也能看懂
可修改容易修改和更新
可追踪能追溯到来源和后续设计

二、用例(Use Case)

2.1 什么是用例?

用例定义了一个或多个参与者与系统之间的交互序列。

2.2 用例的核心特点

特点说明
黑盒视角将系统看成黑盒,不关心内部"怎么做"
从参与者出发用例总是从参与者的输入开始
包含主序列和备选序列主序列是正常流程,备选序列是异常/替代流程

2.3 用例 vs 功能点

用例描述的是交互场景,不是简单的功能列表。

错误做法:"系统提供登录功能" 正确做法:"用户输入用户名和密码,系统验证身份,登录成功进入首页"


三、参与者(Actor)

3.1 什么是参与者?

参与者描绘与系统交互的外部用户,是一种角色,不一定是具体的人。

3.2 参与者的类型

类型说明例子
主要参与者负责启动用例顾客下单、管理员添加商品
次要参与者参与用例但不启动支付系统(被调用)、邮件系统(发送通知)
其他参与者其他外部交互实体定时器、传感器

3.3 如何识别参与者?

类型说明例子
人类参与者使用标准/非标准I/O设备与系统交互的人普通用户、管理员
外部系统参与者与系统交互的其他软件系统支付网关、第三方登录系统
设备参与者硬件设备打印机、扫码枪、传感器
计时器参与者时间触发的事件定时备份、定时报表生成

参与者是角色不是具体的人。比如"顾客"是一个角色,张三和李四都可以扮演这个角色。


四、确定用例

4.1 主序列和备选序列

序列类型说明例子
主序列(主场景)正常情况下的交互流程用户输入正确密码,登录成功
备选序列(替代场景)异常或替代情况用户密码错误,提示重新输入

生活例子:ATM取款

  • 主序列:插卡 → 输入密码 → 选择取款 → 输入金额 → 出钞 → 退卡
  • 备选序列1:密码错误 → 提示重新输入 → 连续3次错误 → 吞卡
  • 备选序列2:余额不足 → 提示余额不足 → 返回主菜单

五、用例关系(重点!)

5.1 包含关系(Include)

定义:标识多个用例中共同的交互序列,抽取为包含用例(抽象,不能独立执行),基用例包含并执行包含用例。

特点:

  • 包含用例是抽象的,不能独立执行
  • 基用例执行时,包含用例一定会被执行
  • 用于将复杂的交互序列层层细分

图示:

Plain Text

基用例 "下订单" │ │ <<include>> ▼ 包含用例 "验证用户身份"

生活例子: "下订单"、"查看订单历史"、"取消订单"三个用例都需要验证用户身份,抽取为包含用例。

5.2 扩展关系(Extend)

定义:将可替换/备选/异常分支分离成扩展用例。基用例不依赖扩展用例,扩展用例在条件为真时才执行。

特点:

  • 扩展用例不一定执行,只在条件满足时执行
  • 基用例不依赖扩展用例,可以独立运行
  • 通过扩展点名称和选择条件标识

图示:

Plain Text

基用例 "下订单" │ │ <<extend>> (条件:用户是VIP) ▼ 扩展用例 "应用VIP折扣"

生活例子: "下订单"用例中,只有用户是VIP时才触发"应用VIP折扣"扩展用例。

5.3 包含关系 vs 扩展关系(高频考点!)

对比维度包含关系(Include)扩展关系(Extend)
执行时机基用例执行时一定执行只在条件满足时执行
依赖关系基用例依赖包含用例基用例不依赖扩展用例
用例性质包含用例是抽象的,不能独立执行扩展用例可以独立理解
使用目的抽取公共的、重复的交互序列分离可选的、异常的分支
类比像函数调用(必须执行)像条件分支(可选执行)
箭头方向基用例 → 包含用例扩展用例 → 基用例

记忆口诀:包含是"必做公共事",扩展是"条件做额外事"。


六、用例的组织

6.1 不宜采用小粒度的包含用例

包含用例的粒度要适中。如果包含用例太小(如"输入用户名"),会导致用例图过于复杂,失去可读性。

6.2 用例包(Use Case Package)

当用例数量较多时,可以使用用例包来组织:

组织方式说明
按主要参与者分组所有"顾客"相关的用例放在一个包
按相同非功能需求分组所有需要高安全性的用例放在一个包

七、活动图描述用例的交互序列

7.1 什么是活动图?

活动图描述控制流和活动序列,显示顺序活动、决策结点、循环及并发活动。

7.2 活动图 vs 用例图

图类型关注点用途
用例图系统有哪些功能、谁使用需求概览
活动图用例内部的详细流程描述交互序列的细节

7.3 活动图的基本元素

元素说明图示
活动一个执行步骤圆角矩形
决策结点条件分支菱形
初始/终止流程开始和结束实心圆/同心圆
并发多个活动同时执行同步条(粗横线)

八、课后思考题(含答案)

问题1:包含关系和扩展关系的区别是什么?各自在什么场景下使用?

答案:

  • 包含关系:用于抽取多个用例中共同的、必须执行的交互序列。包含用例是抽象的,不能独立执行,基用例执行时一定会执行包含用例。例如:多个用例都需要"验证用户身份",可以抽取为包含用例。
  • 扩展关系:用于分离可选的、异常的或条件触发的分支。扩展用例在特定条件满足时才执行,基用例不依赖扩展用例,可以独立运行。例如:"下订单"用例中,只有VIP用户才触发"应用VIP折扣"扩展用例。

问题2:如何识别系统的参与者?请列举四种参与者类型。

答案:从四个维度识别:

  • 人类参与者:使用标准/非标准I/O设备与系统交互的人
  • 外部系统参与者:与系统交互的其他软件系统
  • 设备参与者:硬件设备
  • 计时器参与者:时间触发的事件

问题3:主序列和备选序列的区别是什么?请举一个生活中的例子。

答案:

  • 主序列:经常发生的正常流程,系统期望的执行路径
  • 备选序列:偶尔发生的异常或替代流程,系统需要处理的异常情况

例子:ATM取款

  • 主序列:插卡 → 输入密码 → 选择取款 → 输入金额 → 出钞 → 退卡
  • 备选序列1(密码错误):密码错误 → 提示重新输入 → 连续3次错误 → 吞卡
  • 备选序列2(余额不足):余额不足 → 提示余额不足 → 返回主菜单

九、本讲核心考点总结

考点重要程度
包含关系 vs 扩展关系高频考点
四种参与者类型高频考点
主序列 vs 备选序列理解考点
用例的定义和特点基础考点
活动图的基本元素基础考点

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 18:47:32

HeaderEditor插件:修改HTTP请求头绕过Google人机验证

1. 项目概述&#xff1a;一个插件如何成为网络访问的“润滑剂”如果你经常访问一些国外的技术文档、开源项目或者学术网站&#xff0c;特别是那些依赖Google服务的站点&#xff0c;那么下面这个场景你一定不陌生&#xff1a;页面加载到一半&#xff0c;一个巨大的“人机验证”弹…

作者头像 李华
网站建设 2026/6/20 18:36:58

blog_v1.1_从能跑到稳定

我把昨天那个 AI Agent&#xff0c;今天升级成了"每天自己跑"的版本 接上一篇&#xff1a;我用一周时间从零做了一个 AI 信息采集 Agent 如果说 v1.0 是"能跑给你看"&#xff0c;v1.1 就是"它每天自己跑给我看"。 这中间隔的不只是几行代码&…

作者头像 李华
网站建设 2026/6/20 18:28:15

Qwen3vl多模态微调实战:LLamaFactory+QLoRA高效训练指南

1. 项目概述&#xff1a;为什么是Qwen3vl LLamaFactory&#xff1f;这组合真不是随便凑的最近在实验室搭视觉语言模型微调环境时&#xff0c;反复被同事问&#xff1a;“你为啥非得用LLamaFactory跑Qwen3vl&#xff1f;HuggingFace Transformers不行吗&#xff1f;”——这个问…

作者头像 李华
网站建设 2026/6/20 18:15:11

Palworld存档编辑器终极指南:三步解锁游戏数据修改新境界

Palworld存档编辑器终极指南&#xff1a;三步解锁游戏数据修改新境界 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾想过在《幻兽帕鲁》…

作者头像 李华
网站建设 2026/6/20 18:09:22

Windows风扇控制终极指南:FanControl让你的电脑更安静高效

Windows风扇控制终极指南&#xff1a;FanControl让你的电脑更安静高效 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…

作者头像 李华