系统架构设计师备考第24天——需求工程
一、需求工程的核心概念
-
需求定义
- 三层需求结构:
- 业务需求:组织/客户的高层目标(如“提升银行交易效率”)。
- 用户需求:用户使用系统需完成的任务(如“客户可在线转账”)。
- 功能需求:开发人员需实现的具体功能(如“支持实时转账接口”)。
- 非功能需求:性能、安全、约束条件(如“响应时间≤2秒”)。
- 三层需求结构:
-
需求工程的意义
- 历史背景:20世纪80年代中期形成独立子领域,因软件规模扩大,需求错误导致项目失败率上升(Brooks指出需求是软件工程的“本质困难”)。
- 目标:精准定义客户需求,明确系统所有外部特征。
二、需求工程的五大阶段
阶段 | 核心任务 | 关键输出 |
---|---|---|
1. 需求获取 | 通过用户访谈、业务观察捕获需求,识别所有涉众(用户、测试、维护等角色)。 | 用户原始需求说明书 |
2. 需求分析 | 建立概念模型,抽象描述需求(如业务流程图、用例图)。 | 需求分析模型 |
3. 需求规格化 | 按标准生成文档(如用户需求书→合同附件;软件需求规约→开发指南)。 | 需求规格说明书(SRS) |
4. 需求验证 | 检查完整性、一致性、可行性(方法:原型演示、评审会议)。 | 基线化的需求文档 |
5. 需求管理 | 追踪需求变更、版本控制、维护需求链(如图5-5所示流程)。 | 需求变更记录、版本跟踪矩阵 |
三、需求获取的实操步骤
- 建立高层业务模型:理解应用领域(如银行系统),绘制业务流程图。
- 定义项目范围:明确系统边界与外部交互(用上下文图/顶层用例图表示)。
- 识别涉众角色:包括用户、客户、测试人员等,选择代表参与需求讨论。
- 细化具体需求:逐条收集功能、性能、安全等详细需求(如“每日处理100万笔交易”)。
- 梳理业务工作流:确定核心业务流程与规则(如“贷款审批需3级审核”)。
- 需求整合:汇总为综合需求文档,涵盖功能、性能、成本等维度。
四、高频考点与典型考题
考点1:需求层次区分
考题:
某电商系统需“支持每日千万级订单处理”( );
“用户可1分钟内完成支付”( );
“采用HTTPS协议保障数据安全”( )。
选项:A.业务需求 B.用户需求 C.功能需求 D.非功能性需求
答案:A、B、D
考点2:需求管理活动
考题:
需求管理中“跟踪基线需求状态”的目的是( )。
选项:
A. 控制需求变更
B. 确保项目计划与需求一致
C. 管理需求依赖关系
答案:B
考点3:需求验证方法
简答题:列举需求验证的四种方法并说明适用场景。
参考答案:原型法(用户确认界面)、评审会(团队一致性检查)、模拟测试(性能验证)、符号执行(逻辑正确性)。
五、核心总结
- 需求基线:需求文档评审通过后形成的“约定”,是开发与管理的桥梁。
- 变更控制铁律:需求管理核心是控制基线变动,避免“后期修改成本倍增”(瀑布模型痛点)。
- 实践警示:需求获取需多角色协作(用户+开发人员),遗漏需求=项目失败主因!
掌握以上内容可覆盖90%考试重点,建议结合“需求基线流程图”(教材图5-5)深化理解管理流程!