软件架构设计 | 第3讲:用例建模 目录一、需求建模基础1.1 什么是需求1.2 需求建模的两个阶段1.3 需求规约的质量属性二、用例Use Case2.1 什么是用例2.2 用例的核心特点2.3 用例 vs 功能点三、参与者Actor3.1 什么是参与者3.2 参与者的类型3.3 如何识别参与者四、确定用例4.1 主序列和备选序列五、用例关系重点5.1 包含关系Include5.2 扩展关系Extend5.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 Case2.1 什么是用例用例定义了一个或多个参与者与系统之间的交互序列。2.2 用例的核心特点特点说明黑盒视角将系统看成黑盒不关心内部怎么做从参与者出发用例总是从参与者的输入开始包含主序列和备选序列主序列是正常流程备选序列是异常/替代流程2.3 用例 vs 功能点用例描述的是交互场景不是简单的功能列表。错误做法系统提供登录功能 正确做法用户输入用户名和密码系统验证身份登录成功进入首页三、参与者Actor3.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 备选序列理解考点用例的定义和特点基础考点活动图的基本元素基础考点