《软件需求工程(第2版)》一1.4 需求规格说明

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

1.4 需求规格说明

软件需求规格说明亦称软件需求规约或功能规格说明,可以说是需求工程最终产生的结果。所谓需求规格说明是软件所应满足的全部需求,并可用文档的方式完整和精确地陈述这些需求。需求规格说明是项目相关人员对将要开发的软件系统所达成的共识,是进行系统设计、实现、测试和验收的基本依据,也是整个软件开发过程中最重要的文档[11]。需求规格说明同时代表了权限的移交点:客户对需求规格说明的说明内容拥有最终发言权,而开发人员则需根据软件需求规格说明实施软件系统的开发。因此,最终开发出的软件系统是否能真实、全面地满足客户的要求,取决于需求规格说明是否真实、完整和一致地反映客户的真正意图。
需求规格说明应精确地描述一个软件系统必须提供的功能和性能,以及所要考虑的约束条件与限制。因此,需求规格说明也可以说是集成了13节中所定义的所有软件需求,并使用某种描述语言如自然语言按照规定的书写格式编写的文档。关于需求规格说明的模板和具体内容,将在后面给予详细说明。
需求规格说明在软件系统开发中起着十分重要的作用,但要把用自然语言表达的需求完整无误地表达出来并不是一件容易的工作。因为各人的理解不同,即便是同一个人,他在不同的时间也可能产生不同的理解。因此,作为一个质量较高的需求规格说明,通常应满足如下的特征[12]。
完整性。每一项需求必须将所要实现的功能描述清楚,以便开发人员获得设计和实现这些功能所需的必要信息。
正确性。每一项需求都必须准确地陈述其要开发的功能。做出正确判断的参考是需求的来源,如用户或高层的系统需求规格说明。如果软件需求与对应的系统需求相抵触,则是不正确的。只有用户才能确定需求的正确性。这就是一定要有用户的积极参与的原因。
可行性。每一项需求都必须在已知系统和环境的权能和限制范围内是可以实施的。为避免不可能实现的需求,最好在获取需求(或收集需求)的过程中,始终有一位软件开发小组的成员与需求分析人员或考虑市场的人员在一起,由他负责检查技术的可行性。

必要性。每一项需求都应把客户真正需要的和最终系统所遵从的标准记录下来。“必要性”也可以理解为每项需求都是用来授权你编写文档的“根源”。要使每项需求都能回溯至某项客户的输入,如使用实例或别的来源。
划分优先级。给每项需求、特性或使用实例分配一个实施优先级,以指明它在特定产品中所占的分量。如果把所有的需求都看作同样重要,那么项目管理者在开发、节省预算或调度中就丧失了控制自由度。
无二义性。对所有需求说明都只能有一个明确统一的解释,由于自然语言极易导致二义性,所以尽量把每项需求用简洁明了的语言表达出来。避免二义性的有效方法包括对需求文档的正规审查,编写测试用例,开发原型以及设计特定的方案脚本。
可验证性。检查每项需求是否能通过设计测试用例或其他的验证方法。如用演示、检测等来确定产品是否确实按需求实现了。如果需求不可验证,则确定其实施是否正确就成为主观臆断,而非客观分析了。一份前后矛盾、不可行或有二义性的需求也是不可验证的。

相关文章
|
关系型数据库 MySQL
Mysql连接无效(invalid connection)解决方案
Mysql连接无效(invalid connection)解决方案
1757 0
Mysql连接无效(invalid connection)解决方案
|
数据可视化 测试技术
一文了解软件测试规范
软件测试规范是测试工作的依据和准则,在进行软件测试时,应在相关国标文件的要求和指导下完成测试工作,这样可以从根本上保证软件测试工作的质量,进而提升软件产品的质量。 一个完整的软件测试规范应该包括对规范本身的详细说明,例如规范的目的、范围、文档结构、词汇表、参考信息、可追溯性、方针、过程/规范、指南、模板、检查表、培训、工具、参考资料等。
1402 0
一文了解软件测试规范
|
缓存 JavaScript 前端开发
浏览器对地址栏中输入的URL的处理过程
【8月更文挑战第20天】
398 0
|
7月前
|
人工智能 运维 Serverless
DeepSeek 模型云上部署评测:零门槛实现智能升级
DeepSeek 模型云上部署评测:零门槛实现智能升级
530 2
inux CentOS 7 如何进入默认工作目录 [root@localhost ~]
这篇文章讨论了如何在Linux CentOS 7系统中进入默认工作目录。默认工作目录通常是用户的主目录,表示为`[root@localhost ~]`,其中波浪号`~`代表当前用户的主目录。文章可能还包含了如何打开这个默认工作目录的步骤和说明。不过,具体内容没有提供详细信息,通常可以通过打开终端并使用`cd ~`命令来进入默认工作目录。如果需要更详细的步骤或有特定的问题,可能需要查看原文获取更多信息。
|
算法 数据库
操作系统:经典进程同步问题的高级探讨
操作系统:经典进程同步问题的高级探讨
210 1
|
机器学习/深度学习 自然语言处理 算法
分词算法在自然语言处理中的应用与性能比较
分词算法在自然语言处理中的应用与性能比较
|
运维 开发者 Docker
Docker容器部署实战:从入门到精通
【8月更文挑战第31天】 本文将引导读者了解如何使用Docker容器技术来简化和加速应用程序的部署过程。文章将通过实际案例探讨Docker的基本概念、架构,以及如何创建、管理和维护Docker容器。我们将通过详细的代码示例和操作指导,展示如何在本地环境或云基础设施上部署应用,并讨论如何克服在实际部署中可能遇到的挑战。无论你是DevOps工程师、软件开发者还是IT专业学生,本文都将为你提供深入理解并有效使用Docker的全面指南。
|
NoSQL Linux Shell
Linux MongoDB重启命令
【5月更文挑战第8天】
1262 6
|
数据建模 测试技术 uml
【软件工程】期末复习总结(通俗易懂,学不会来打我)
【软件工程】期末复习总结(通俗易懂,学不会来打我)