《软件需求工程(第2版)》一2.3 需求工程在软件开发中的地位

简介: 本节书摘来自华章出版社《软件需求工程(第2版)》一书中的第2章,第2.2节,作者 毋国庆 梁正平 袁梦霆 李勇华,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.3 需求工程在软件开发中的地位

2.3.1 需求工程对软件开发的影响

从软件工程提出的各种开发模型中可看出,需求工程是软件开发过程中的一个阶段。有些改进的开发模型,如快速原型模型也是因用户需求问题而提出的。需求工程处于软件开发的开始阶段,提供了软件项目其余部分得以实施的根基。显然,如果在开发的后期出现错误,受到影响的只是与后期阶段相关的工作,修正错误通常也是相对容易的事情。然而,如果错误出现在开始的阶段,而且没有立即发现和纠正,那么所有后续阶段的工作都是在错误的基础上进行的,修正错误的成本将是很大的。这个道理也和修建房屋一样,如果房屋的地基存在问题,则在该地基上修建的房屋是否会牢靠就值得怀疑。因此,需求工程在软件开发中起着十分重要的作用。需求工程对软件开发的影响如下:
需求是制定项目计划的基础。因为开发资源和进度安排的估算都应建立在对最终软件系统的真正理解上。
需求工程所产生的最终产物(需求规格说明)是软件设计和软件实现的基础。因为软件设计工作要根据功能需求来确定系统的结构和模块,而模块又是编写代码的依据。
需求规格说明是测试工作和用户验收软件系统的依据。用户需求是测试工作的重要参考。如果未清楚说明软件系统在某些条件下的期望行为,系统测试人员将很难弄清楚正确的测试内容。此外,软件系统能否最终满足用户需求,与需求规格说明能否正确和完整地反映用户需求是紧密相关的。
需求规格说明是软件维护工作的依据。
因此,需求工程不再仅限于软件开发的最初阶段,其贯穿于软件系统的整个开发工作中。

2.3.2 需求工程面临的困难

需求工程是人们通过不断地认识和深入研究而形成的结果。需求工程对软件开发的影响是很大的。随着软件系统日益大型和复杂化,软件需求的开发和管理也日益复杂,而且需求工程自身也面临诸多有待解决的问题,如:
1)需求获取与需求分析的困难性。
有些需求可能用户也不是很清楚;
需要用户与开发人之间进行充分的交流和协商;
需求间的冲突和矛盾的检查以及解决;
需求是否完整和确定;
合适的需求建模的方法和技术。
2)需求描述语言和规范化的困难性。
怎样规范化用户需求;
规范化哪些用户需求;
非形式化和形式化描述语言的使用。
3)需求验证的困难性。
需求规格说明正确性的确认和验证;
验证的方法和技术;
如何进行自动验证。
4)需求管理的困难性。
需求规格说明书的质量保证;
需求规格说明书的版本管理;
需求变更的控制。
以上只是列举了需求工程面临的部分困难和问题。如何解决这些困难和问题,决定了需求工程的目的、研究内容和所要完成的实际工作。

相关文章
|
4月前
|
敏捷开发 持续交付
探索现代软件开发中的敏捷实践
【7月更文挑战第8天】 在快速变化的技术世界中,敏捷开发已经成为了软件开发团队的必选策略。本文旨在深入探讨敏捷实践在现代软件开发中的应用,并分析其对项目成功的影响。通过实际案例分析,我们将揭示敏捷方法如何提高团队效率、增强产品功能以及缩短上市时间。文章不仅为软件开发专业人士提供实用指南,同时也为非技术读者呈现敏捷转型的洞见。
|
4月前
|
测试技术
系统分析与设计问题之软件开发中的“分析阶段”是否只限于软件行业
系统分析与设计问题之软件开发中的“分析阶段”是否只限于软件行业
|
敏捷开发 测试技术 持续交付
互联网软件常见开发方法
互联网软件常见开发方法
212 0
|
搜索推荐 开发者
软件工程高效学 | 软件的内涵与危机
软件工程是计算机领域的一门专业基础课,它对于培养大家的软件素质、提高大家的软件开发能力与软件项目管理能力具有重要意义。本篇介绍软件工程的基本概念,包括软件的内涵、软件危机的产生、软件危机的表现及原因等相关内容。
154 0
软件工程高效学 | 软件的内涵与危机
sbs
|
SQL Oracle 关系型数据库
软件需求工程
前言之前看过一些系统分析相关,偏信管、软工专业的书:《系统分析与设计方法》,《软件需求》。 需求工程 部分对实际开发工作有不少帮助。相信很多开发也不太了解信管或者软工,更多关注于具体领域的前沿技术,所以这些概念应该能用到。文中部分是引用书中原文,部分是个人观点。文中产品,软件,系统是类似的含义。2020.7.10 —— by zz。需求需求一词的字典义是“被命令或强制性的东西;需要或者必要”,和软
sbs
608 1
软件需求工程
|
测试技术
【软件测试基础理论】软件内卷早已存在!(非功能-可移植性)
【软件测试基础理论】软件内卷早已存在!(非功能-可移植性)
《软件需求工程(第2版)》一导读
许多人经过研究发现,当软件开发项目失败时,软件需求问题通常正是核心问题。因此,在软件开发过程中,必须极早和有效地发现和解决与软件需求相关的问题。
1170 1
|
测试技术 Python 编译器
8个嵌入式软件支柱
成功开发和启动嵌入式系统需要各种工程学科的广泛技能。每个嵌入式系统开发团队都需要八个不同软件开发领域的知识。开发人员掌握嵌入式软件这八大支柱的程度将直接影响开发成本,代码可扩展性以及其他关键开发指标中的系统稳健性。
1555 0
|
敏捷开发 开发者
《软件工艺师:专业、务实、自豪》一2.7 敏捷软件开发与软件工艺的关系
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第2章 ,第2.7节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1344 0