根据作者定义软件需求为:业务知识(包括业务事件、业务实体和业务规则)、问题列表和其他因素(如设计约束和非功能性需求等)
需求三个层次:
1. 业务需求:软件系统的建设目标,软件开发的努力方向。通常由组织的高层人员指出;
2. 用户需求:系统用户需要通过系统完成什么任务,如何完成等。通常需要通过用户访谈、调查、场景分析等手段获取;
3. 软件需求:通过提炼用户需求,归纳与分析后通过建模语言(如原型图等)体现出软件需求。
需求的三种类型
1. 功能需求:功能需求重点在于组织,需要很好的描述清楚作者建议采用“用例方法”来进行描述;
2. 非功能需求:如系统功能的性能要求等(每次请求相应时间低于x秒)要规避信息传递的无效性以及非功能需求的局限性;
3. 设计约束:技术选型、预期软硬件环境、预期使用环境。
优秀的需求标准
1. 完整性:通过验证以业务导向的层次结构来保证需求的完整性。验证的方式为分别向组织中的 高层、中层、操作员来分别验证需求;
2. 正确性:不失真及时验证需求,review首要方式;
3. 无歧义性
4. 必要性
5. 有优先级:核心是划分业务优先级其次是技术优先级和项目优先级(评级模型 “KANO分析模型”);
6. 可行性
7. 可验证性
需求工程工作范畴
1. 需求开发
* 需求获取
掌握科学的需求获取手段,避免获取范围不足存在局限性。核心在于主动获取避免被动;
* 需求分析
需求分析是向下分解外加向上提炼
* 编写规约
对需求文档的书写,核心在于“共享”与“更新”;
* 需求验证
评审研讨会。
2.需求管理
* 基线管理
* 变更管理
* 需求跟踪