第四章 需求工程
软件需求是决定软件开发是否成功的一个关键因素,一旦发生错误,将会给整个软件开发工作带来极大的损害。
一.软件需求
软件需求定义:用户解决问题或达到目标所需要的条件或能力。
系统或系统部件满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。
一种反映上面所描述的条件或能力的文档说明。
1.业务需求
业务需求是组织或客户对于系统的高层次目标要求,定义了项目的远景和范围,即确定软件产品的发展方向、功能范围、目标客户和价值来源。
2.用户需求
用户需求是从用户角度描述的系统功能需求和非功能需求,通常只涉及系统的外部行为,而不涉及系统的内部特性。
3.功能需求和非功能需求
功能性需求描述系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,一般不考虑系统的实现细节。
4.系统需求
系统需求是更加详细地描述系统应该做什么,通常包括许多分析模型,诸如对象模型、数据模型、状态模型等。系统需求主要面向开发人员进行描述,是开发人员进行软件设计的基础。
二.需求工程过程
1.需求获取
需求获取是在问题及其最终解决方案之间架设桥梁的第一步。
需求获取应该集中在用户任务上,而不是集中在用户接口上,其主要工作内容包括:
聆听用户的需求;分析和整理所获取的信息;形成文档化的描述。
2.需求分析
需求分析主要是对收集到的需求进行提炼、分析和认真审查,以确保所有的项目相关人员都明白其含义,并找出其中的错误、遗漏或其他不足的地方,形成完整的分析模型。
主要内容:
定义系统边界;建立软件原型;分析需求可行性;确定需求优先级;建立需求分析模型;创建数据字典。
3.需求规格说明
软件需求规格说明(Software Requirement Specification,SRS)是需求开发的结果,它精确地阐述了一个软件系统必须提供的功能和性能以及它所要考虑的限制条件。
软件需求规格说明具有广泛的使用范围,并成为用户、分析人员和设计人员之间进行理解和交流的手段。
4.需求验证
需求验证是为了确保需求说明准确、完整地表达必要的质量特点。
需求验证主要围绕需求规格说明的质量特性展开,这些质量特性包括正确性、无二性、完整性、可验证性、一致性、可修改性和可跟踪性等。
5.需求管理
软件需求的最大问题在于难以清楚确定以及不断发生变化,这也是软件开发之所以困难的主要根源,因此有效地管理需求是项目成功的基础。
需求管理的任务是分析变更影响并控制变更过程,主要包括变更控制、版本控制和需求跟踪等活动。
三.需求获取技术
需求获取的关键在于通过与用户的沟通和交流,收集和理解用户的各项要求。
1.面谈
2.需求专题讨论会
需求专题讨论会也许是需求获取的一种最有力的技术。
3.观察用户工作流程
被动观察和主动观察。
4.原型化方法
抛弃式原型和演化式原型。
5.基于用例的方法
确定参与者;确定用例;描述用例。