软件开发与过程管理——需求定义

目录

一. 需求概述

1.1 需求的定义

1.2 需求错误的高昂代价

1.3 需求的三个层次及关系 

1.4 需求工程

1.5 需求工程的基本活动

二. 需求定义的产物和要素

软件开发与过程管理专栏


一. 需求概述

1.1 需求的定义

        IEEE(美国电气电子工程师学会)软件工程标准词汇表(1997年)将需求定义为:

  • 用户解决问题或达到目标所需的条件或能力;
  • 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力; 
  • 一种反映上面两点中任一种所描述的条件或能力的文档说明;      

        需求就是以一种清晰、简洁、一致无二义性的方式对一个待开发系统中各个有意义陈述方面的一个集合。

        所以需求分析就是分析软件用户的需求是什么。

软件开发与过程管理——需求定义_第1张图片

1.2 需求错误的高昂代价

        需求错误占全部缺陷的三分之一。说明需求错误是系统软件开发中最重要的错误。    

  • 假如在编码阶段发现需求错误,则需要根据修改的需求重新进行设计;    
  • 假如是在测试阶段发现需求错误,则需要根据修改的需求重新进行设计并重新编码;    
  • 假如是在维护阶段发现的需求错误,就需要根据修改的需求重新进行设计,重新编码,并再次进行测试。            

       结论:一定要尽量消除或者减少需求阶段产生错误的可能。 

1.3 需求的三个层次及关系 

  • 业务需求是需求定义的产物;
  • 用户需求是需求捕获的结果;
  • 软件需求是需求分析和建模的综合。

软件开发与过程管理——需求定义_第2张图片

 1)业务需求:

        业务需求的提出人通常是企业/组织的高层管理人员。业务需求是彻底从业务角度描述的,是指导软件开发的高层需求。明确地定义业务需求,将给整个团队指出努力的方向,这整个开发活动将有积极的意义

软件开发与过程管理——需求定义_第3张图片

 2)用户需求:

        用户需求是从用户角度描述的系统功能需求非功能需求,通常只涉及系统的外部行为,而不涉及系统的内部特性。

 3)软件需求:

  • 需要分析问题领域及其特性,从中发现问题域和计算机系统的共享知识,建立系统的知识模型;
  • 将用户需求部署到系统模型,即定义系列的系统行为,让它们联合起来实现用户需求,每一个系统行为即为一个系统需求;
  • 是需求工程当中最为重要的需求分析活动,又称建模与分析活动;

 软件需求可分为三种类型:

软件开发与过程管理——需求定义_第4张图片

  •  功能需求:

        描述系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,一般不考虑系统的实现细节。

        功能需求的要点在于如何组织;

  • 非功能需求:

        从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求,例如响应时间、数据精度、可靠性、开发过程的标准等。

        非功能需求要注意保证信息的有效传递和注意其局部性;

软件开发与过程管理——需求定义_第5张图片

 一般在软件开发过程中可以将非功能需求划分为:性能需求,质量属性,对外接口等

软件开发与过程管理——需求定义_第6张图片

软件开发与过程管理——需求定义_第7张图片

软件开发与过程管理——需求定义_第8张图片

  •  设计约束:一般包括非技术因素决定的技术选型问题,以及预期的软硬件环境,预期的使用环境等

软件开发与过程管理——需求定义_第9张图片

        从此多维视图中可以看出,系统所有者、用户、设计人员、开发人员所面对的都是局部视图, 而需求分析人员则扮演了必须从全局看待系统的角色。也就是常说的“需求分析人员是用户与开发人员之间的桥梁”。

1.4 需求工程

软件开发与过程管理——需求定义_第10张图片

软件开发与过程管理——需求定义_第11张图片

1.5 需求工程的基本活动

        需求工程的活动主要包括需求开发需求管理两个方面的工作。需求开发是实现的目标,需求管理是保证需求开发得以有序实现的基础和保障。

1)需求开发:主要包括需求获取、分析、规格说明和验证。

软件开发与过程管理——需求定义_第12张图片

  • 需求获取的目的

        从项目的战略规划开始建立最初的原始需求,需要研究系统将来的应用环境,确定系统的涉众,了解现有的情况,建立新系统的目标,获取为支持新系统目标而需要的业务过程细节和具体的用户需求;

  • 需求分析的目的 

        保证需求的完整性和一致性。以需求获取阶段的原始需求和业务过程细节出发,将目标、功能和约束映射为软件行为,建立系统模型,然后在抽象后的系统模型中进行分析,标识并修复其中存在的不一致问题,发现并弥补遗漏的需求。 

  • 需求规格说明的目的 

        将完整、一致的需求与能够满足需求的软件行为以文档的方式明确地固定下来。在文档中,可以使用非形式化的文本进行描述,也可以用半形式化的图形语言进行描述(如UML),还可以采用形式化的语言进行描述。

  • 需求验证目的 

        保证需求及其文档的正确性。即需求正确地反映了用户的真实意图。另外需求验证通过检查和修正,保证需求文档的完整性和一致性。需求验证之后的需求文档应该是得到所有涉众一致同意的软件需求规格说明,将成为规划、设计、测试、用户手册等编写的工作基础。对帮助项目开发人员建立共同的前景和试图具有重要的作用。 

2)需求管理:

        对需求开发所建立的需求基线的管理,它在需求基线完成之后正式开始。 在需求工程结束之后继续存在,在设计、测试、时限等后继的软件系统开发中保证需求作用的持续、稳定发挥。 监督并管理需求实现和变更。

        在用户和项目组之间达成共识、并已经按需求属性建立需求数据库的需求,是建立需求基线的基本条件。 

  • 需求管理目的 

        在客户与开发方之间建立对需求的共同理解的基础上,实现需求并在实现的过程中,维护需求与其它工作成果的一致性,并控制需求的变更。

  • 需求实现:在系统概要分析、详细分析和系统编码、测试等开发过程中,实现系统的需求。
  • 需求跟踪:通过比较需求文档与后续工作成果之间的对应关系,建立与维护“需求跟踪矩阵”,确保产品依据需求文档进行开发。
  • 需求变更控制:依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,防止需求变更失去控制而导致项目发生混乱。 


二. 需求定义的产物和要素

需求定义的产物:战略规划报告或者称为“前景及范围”文档;有时也称为“项目综述与愿景”文档

软件开发与过程管理——需求定义_第13张图片


软件开发与过程管理专栏

https://blog.csdn.net/weixin_53919192/category_11798300.htmlhttps://blog.csdn.net/weixin_53919192/category_11798300.html

你可能感兴趣的:(软件开发及过程管理,学习,经验分享,需求分析,软件工程,软件构建)