需求工程总结
概述
需求工程是软件工程中关于需求的系统化方法,包括需求获取、分析、规格说明、验证和管理。
需求分类
flowchart LR A(软件需求) subgraph 需求层次 B1[业务需求] B2[用户需求] B3[功能需求] end subgraph 功能需求维度 C1[功能需求] C2[性能需求] C3[设计约束] end subgraph 项目管理维度 D1[基本需求,明示] D2[期望需求,隐含] D3[兴奋需求,多余] end A --分层--> B1 B3 --> C1 A --QFD--> D2
需求获取
需求抽取过程
- 需求发现和理解:通过访谈、问卷、观察、原型等方法收集需求
- 需求分类和组织:将需求按业务、用户、功能等维度分类
- 需求优先级排序和协商:确定需求的优先级,解决冲突
- 需求文档化:编写需求规格说明书
常用获取方法
- 用户访谈
- 问卷调查
- 观察用户工作流程
- 原型法
- 头脑风暴
- 联合应用开发(JAD)
需求分析
结构化分析(SA)
flowchart LR %% 中心区域 subgraph core direction TB BM([行为模型]) DD((数据<br>字典)) FM([功能模型]) DM([数据模型]) BM --- DD FM --- DD DD --- DM end %% 左侧:数据流图 DFD[数据流图] DFD_DETAIL["✓ 数据流<br>✓ 加工<br>✓ 数据存储<br>✓ 外部实体"] DFD --> DFD_DETAIL FM --- DFD %% 上方:状态转换图 STD[状态转换图] STD_DETAIL["✓ 状态(初态、终态)<br>✓ 事件"] BM --> STD STD --> STD_DETAIL %% 右下:E-R图 ER[E-R图] ER_DETAIL["✓ 实体<br>✓ 联系"] DM --> ER ER --> ER_DETAIL %% 右侧:数据字典说明 DICT_DETAIL["✓ 数据元素<br>✓ 数据结构<br>✓ 数据流<br>✓ 数据存储<br>✓ 加工逻辑<br>✓ 外部实体"] DD --> DICT_DETAIL
数据流图(DFD)
| 元素 | 说明 | 图元 |
|---|---|---|
| 数据流 | 表示数据流向,含有的名词表示数据的含义 | —> |
| 加工 | 输入数据与输出数据间的变换 | O 【】 |
| 数据存储(文件) | 暂时存储的数据。流向文件的数据流表示写文件,流出表示读文件 | |
| 外部实体 |
数据流图答题技巧
- 数据平衡原则:父图与子图保持平衡
- 补充实体:人物角色、外部系统
- 补充存储:”…表”
- 补充数据流:
- 顶层图与0层图对比,是否有顶层图有但0层没有的数据流
- 检测图中每个加工,是否存在只有出没有入,或反之
- 根据输入的数据流无法产生对应的输出
- 补充加工名:把加工涉及的数据流在说明中标识出来,在数据流中找”动词+名词”
状态转换图(STD)
- 状态:初态、终态、中间状态
- 事件:触发状态转换的条件
- 动作:状态转换时执行的操作
E-R图(实体关系图)
- 实体:现实世界中的对象
- 属性:实体的特征
- 联系:实体之间的关系(1:1, 1:n, m:n)
面向对象需求分析
基本概念
- 对象:属性(数据)+ 方法(操作)+ 对象ID
- 类:
- 实体类:映射需求中的实体,保存需要存储的信息
- 控制类:控制用例工作的类,一般由动宾结构的短语转化(如:身份验证器)
- 边界类:用于封装在用例内、外流动的信息或数据流(接口)
UML图分类
静态图
- 类图:一组类、接口、协作和它们之间的关系
- 对象图:一组对象及它们的关系
- 构件图:一个封装的类和它的接口
- 部署图:软硬件之间映射
- 制品图:系统的物理结构
- 包图:由模型本身分解而成的组织单元及它们的依赖关系
动态图
- 用例图:系统与外部之间的交互
- 交互图:
- 顺序图:强调时间顺序
- 通信图
- 定时图:时间
- 活动图:类似于流程图
- 状态图:状态
UML关系
用例图关系
-
包含关系(include)
flowchart LR A[学生] --> B(学习) A --> C(测验) C -.->|include|D(权限检查) B -.->|include|D
- 提取出来的公共用例称为抽象用例
- 原始用例称为基本用例
-
泛化关系
flowchart TD A[用户] --> B(登录) C(手机号登录) --> B D(用户名密码登录) -->B
- 父子关系
-
扩展关系(extend)
flowchart LR A[用户] --> B(看视频) C(冲会员) -.->|extend| B
- 一个基本用例和多个扩展用例
类图关系
- 依赖关系:一个事物变化影响另一个事物
- 泛化关系:特殊/一般关系
- 关联关系:一组链,链是对象之间的连接
- 聚合关系:整体与部分生命周期不同
- 组合关系:整体与部分生命周期相同
- 实现关系:接口与类之间的关系
需求规格说明
文档内容
- 引言
- 总体描述
- 具体需求
- 接口需求
- 性能需求
- 设计约束
- 其他非功能需求
需求验证
验证方法
- 需求评审
- 原型验证
- 模型验证
- 测试用例生成
需求管理
管理活动
- 需求跟踪:建立需求跟踪矩阵
- 需求变更控制:建立变更控制流程
- 需求版本控制:管理需求文档版本
- 需求状态跟踪:跟踪需求实现状态
考试重点
- 数据流图(DFD):补充实体、数据流、加工、存储
- UML图:用例图、类图、顺序图的关系和区别
- 需求分类:业务需求、用户需求、功能需求的区别
- 需求获取方法:各种方法的优缺点和适用场景
- 需求验证方法:不同验证方法的适用性
相关链接
创建时间:2026年5月10日 最后更新:2026年5月10日