软件需求的定义:
指用户对系统在功能、行为、性能、设计约束等方面的期望。包括业务需求、用户需求、功能需求和非功能性需求。
需求工程的主要阶段:
需求开发阶段:需求获取、需求分析、形成需求规格说(SRS)、需求确认与验证
需求管理阶段:变更控制、版本控制、需求追踪、需求状态追踪
需求确认与验证后形成需求基线,需求管理是对需求基线的管理。这个基线是客户和开发者之间对于产品功能和非功能需求的一个约定,是需求开发和需求管理之间的桥梁。
一、需求获取
需求获取的基本步骤:
1. 开发高层的业务模型;2. 定义项目范围和高层需求;3.识别用户角色和用户带遍;4. 获取具体的需求;5. 确定目标系统的业务工作六;6.需求整理和总结
需求获取的方法:
1. 用户面谈:最有效的方法,成本高,需要有专业领域知识
2. 需求专题讨论会:短暂而紧凑的时间段内召集所有相关人员讨论,消除歧义,交互好,成本高
3. 问卷调查:用户多,成本低
4. 现场观察:复杂流程和操作,现场观察可以更直观的了解需求
5. 原型化方法:针对客户早期需求不明确
6. 头脑风暴:业务时新的业务,业务流程不确定。集思广益,发散思维,创造性头脑碰撞
二、需求分析
1. 结构化分析方法:
核心:数据字典;
三个模型和表现方式:功能模型(数据流图);行为模型(状态转换图);数据模型(ER图)
2. 面向对象分析方法
UML 4+1试图:逻辑视图、实现视图、部署视图、进程视图、用例视图(核心)
三、需求跟踪
需求跟踪提供了由需求到产品实现的整个过程范围的明确查询的能力。需求跟踪的目的是建立和维护“需求-设计-编程-测试”之间的一致性,确保所有的工作成果符合用户需求。
需求跟踪的两种方式:
1. 正向跟踪:检查SRS中的每个需求是否都在后续的工作成果中可以找到。
2. 逆向追踪:检查设计文档、代码、测试用例等,确保工作成果都能在SRS中找到。
四、需求变更控制
变更控制过程:
- 问题分析和变更描述:进一步分析问题,检查他的有效性
- 变更分析和成本计算:进行影响分析待会儿评估,估计该变更引起的所有改动的成本,有需求变更委员会决定是否变更
- 变更实现:根据该变更的影响范围,按照开发的过程模型执行相应的变更
- 归档:所有的变更都需要做记录留档
常见的需求变更策略:
- 所有的需求变更必须遵循变更控制工程
- 对于未获得批准的变更,不应该做设计和实现工作
- 变更应该由项目变更控制委员会决定实现哪些变更
- 项目风险承担者应该能了解变更的内容
- 绝不能从项目配置库中删除或修改变更请求的原始文档
- 每一个集成的需求变更编序能跟踪到一个经核准的变更请求,以保持水平可追踪性
需求变更委员会(CCB):是项目所有者权益代表,负责裁定接受哪些变更。CCB由项目所涉及的多方成员共同组成。