MD 更新:未知

需求工程总结

概述

需求工程是软件工程中关于需求的系统化方法,包括需求获取、分析、规格说明、验证和管理。

需求分类

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

需求获取

需求抽取过程

  1. 需求发现和理解:通过访谈、问卷、观察、原型等方法收集需求
  2. 需求分类和组织:将需求按业务、用户、功能等维度分类
  3. 需求优先级排序和协商:确定需求的优先级,解决冲突
  4. 需求文档化:编写需求规格说明书

常用获取方法

  • 用户访谈
  • 问卷调查
  • 观察用户工作流程
  • 原型法
  • 头脑风暴
  • 联合应用开发(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 【】
数据存储(文件)暂时存储的数据。流向文件的数据流表示写文件,流出表示读文件
外部实体

数据流图答题技巧

  1. 数据平衡原则:父图与子图保持平衡
  2. 补充实体:人物角色、外部系统
  3. 补充存储:”…表”
  4. 补充数据流
    • 顶层图与0层图对比,是否有顶层图有但0层没有的数据流
    • 检测图中每个加工,是否存在只有出没有入,或反之
    • 根据输入的数据流无法产生对应的输出
  5. 补充加工名:把加工涉及的数据流在说明中标识出来,在数据流中找”动词+名词”

状态转换图(STD)

  • 状态:初态、终态、中间状态
  • 事件:触发状态转换的条件
  • 动作:状态转换时执行的操作

E-R图(实体关系图)

  • 实体:现实世界中的对象
  • 属性:实体的特征
  • 联系:实体之间的关系(1:1, 1:n, m:n)

面向对象需求分析

基本概念

  • 对象:属性(数据)+ 方法(操作)+ 对象ID
    • 实体类:映射需求中的实体,保存需要存储的信息
    • 控制类:控制用例工作的类,一般由动宾结构的短语转化(如:身份验证器)
    • 边界类:用于封装在用例内、外流动的信息或数据流(接口)

UML图分类

静态图

  • 类图:一组类、接口、协作和它们之间的关系
  • 对象图:一组对象及它们的关系
  • 构件图:一个封装的类和它的接口
  • 部署图:软硬件之间映射
  • 制品图:系统的物理结构
  • 包图:由模型本身分解而成的组织单元及它们的依赖关系

动态图

  • 用例图:系统与外部之间的交互
  • 交互图
    • 顺序图:强调时间顺序
    • 通信图
    • 定时图:时间
  • 活动图:类似于流程图
  • 状态图:状态

UML关系

用例图关系

  1. 包含关系(include)

    flowchart LR
    A[学生] --> B(学习)
    A --> C(测验)
    C -.->|include|D(权限检查)
    B -.->|include|D
    • 提取出来的公共用例称为抽象用例
    • 原始用例称为基本用例
  2. 泛化关系

    flowchart TD
    A[用户] --> B(登录)
    C(手机号登录) --> B
    D(用户名密码登录) -->B
    • 父子关系
  3. 扩展关系(extend)

    flowchart LR
    A[用户] --> B(看视频)
    C(冲会员) -.->|extend| B
    • 一个基本用例和多个扩展用例

类图关系

  • 依赖关系:一个事物变化影响另一个事物
  • 泛化关系:特殊/一般关系
  • 关联关系:一组链,链是对象之间的连接
  • 聚合关系:整体与部分生命周期不同
  • 组合关系:整体与部分生命周期相同
  • 实现关系:接口与类之间的关系

需求规格说明

文档内容

  1. 引言
  2. 总体描述
  3. 具体需求
  4. 接口需求
  5. 性能需求
  6. 设计约束
  7. 其他非功能需求

需求验证

验证方法

  • 需求评审
  • 原型验证
  • 模型验证
  • 测试用例生成

需求管理

管理活动

  1. 需求跟踪:建立需求跟踪矩阵
  2. 需求变更控制:建立变更控制流程
  3. 需求版本控制:管理需求文档版本
  4. 需求状态跟踪:跟踪需求实现状态

考试重点

  1. 数据流图(DFD):补充实体、数据流、加工、存储
  2. UML图:用例图、类图、顺序图的关系和区别
  3. 需求分类:业务需求、用户需求、功能需求的区别
  4. 需求获取方法:各种方法的优缺点和适用场景
  5. 需求验证方法:不同验证方法的适用性

相关链接


创建时间:2026年5月10日 最后更新:2026年5月10日