需求工程
软件需求
是指用户对系统在功能、行为、性能、设计约束等方面的期望。
是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。
两大过程
需求开发->需求获取、需求分析、需求定义(需求规划说明书SRS)、需求验证。
需求管理->变更控制、版本控制、需求跟踪、需求状态跟踪。
三个层次
业务需求(business requirement)
反映了组织机构或客户对系统、产品高层次的目标要求。
用户需求(user requirement)
描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望。这两种构成了用户原始需求文档的内容。
功能需求 (functional requirement)
定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足业务需求。
非功能需求
作为补充,软件需求规格说明还应包括非功能需求。
它描述了系统展现给用户的行为和执行的操作等。
它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。
所谓约束是指对开发人员在软件产品设计和构造上的限制,常见的有设计约束和过程约束。
质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。
概述
需求工程是指应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述待开发系统及其行为特征和相关约束。
需求工程覆盖了体系结构设计之前的各项开发活动,主要包括分析客户要求、对未来系统的各项功能性及非功能性需求进行规格说明。
需求工程的目标简单明了:确定客户需求,定义设想中系统的所有外部特征。
活动阶段
- 需求获取
- 形成需求规格(或称之为需求文档化)
按照相关标准,生成需求模型的文档描述,用户原始需求书作为用户和开发者之间的一个协约,往往被作为合同的附件;软件需求描述规约作为后续软件系统开发的指南。 - 需求确认与验证
以需求规格说明为输入,通过用户确认、复审会议、符号执行、模拟仿真或快速原型等途径与方法,确认和验证需求规格的完整性、正确性、一致性、可测试性和可行性,包含有效性检查、一致性检查、可行性检查和确认可验证性。 - 需求管理
包括需求文档的追踪管理、变更控制、版本控制等管理性活动。
软件需求开发的最终文档经过评审批准后,则定义了开发工作的需求基线 (Baseline)。 这个基线在客户和开发者之间构筑了计划产品功能需求和非功能需求的一个约定 (Agreement)。需求约定是需求开发和需求管理之间的桥梁。
需求管理是一个对系统需求变更、了解和控制的过程。
需求管理过程与需求开发过程相互关联,当初始需求导出的同时就启动了需求管理规划,一旦形成了需求文档的初稿,需求管