《软件需求工程(第2版)》一1.2 什么是软件需求

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

1.2 什么是软件需求

“需求”这个词在日常生活中经常使用。通常的需求是指人对于客观事物需要的表现,体现为愿望、意向和兴趣,因而成为行动的一种直接原因。例如,当某个顾客向裁缝师傅订做一套服装时,这位裁缝师傅首先要获得这位顾客的一些数据,如身高、胸围、腰围、臂长和样式等,然后根据这些数据制作服装。这些数据就是该顾客订做服装的具体需求。试想,如果裁缝师傅将顾客的这些具体需求弄错或者根本不知道的情况下,无论其如何精心制作,使用多好的面料,其所做的工作都将是枉然的!因为客户可能根本不能穿,或者穿着不舒适。这个例子说明,需求对最终产品能否适用是至关重要的。同理,对于软件开发来说,软件需求就是软件用户认为其所使用的软件应该具备的功能和性能。

对于软件需求的定义,不同的研究人员有不同的看法。A Davis认为,软件需求是从软件外部可见的、软件所具有的、满足于用户的特点、功能及属性等的集合[5]。I Sommerville认为,需求是问题信息和系统行为、特性、设计和实现约束的描述的集合[7]。而M Jackson等人则认为,需求是客户希望在问题域内产生的效果[8,9]。在比较正式的文档中,IEEE软件工程标准词汇表将需求定义为[10]:①用户解决问题或达到目标所需的条件或能力;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。其中①是从用户的角度定义的,②是从软件系统的角度定义的。

关于软件需求还有其他不同的定义。产生这些不同形式的定义的原因,一是需求工程的发展过程还不太长,人们的认识还在不断深入;二是真正的“需求”实际上是在人们的脑海中形成的,很难给予准确的定义。这也是导致需求工程难度很大的原因之一。不过,根据这些定义,我们可以认为软件需求是指软件系统必须满足的所有功能、性质和限制。

对于一个软件系统,不同的人对它应具有的功能和性能会有不同的需求。例如,对于文字处理系统这一软件,A先生打算将其用于编辑英文论文。于是他希望文字处理系统具有能简单地描述数学公式、检查英语单词和文法等功能。B先生则打算利用文字处理系统制作贺年卡片。他希望系统具有能处理图片和进行彩色打印的功能等。C先生则希望文字处理系统具有简单地制作中文文档和快速打印的功能等。于是,即使对于同一个文字处理系统,由于使用者的立场不同,其应具有的功能和性能也变得有所不同。因此,对于软件开发者来说,在开发一个软件系统之前,应考虑该系统的使用者有什么样的需求,该软件能解决什么问题等。否则,开发出的软件要么使用者不满意,要么根本不能使用,从而导致软件开发费用和时间的浪费。

相关文章
|
运维 架构师 测试技术
如何开发一个软件
软件开发
155 0
|
6月前
|
机器学习/深度学习 自然语言处理 Devops
探索软件测试自动化的新思路
在当今快节奏的软件开发领域,传统的软件测试方法已经无法满足快速迭代和高质量交付的需求。本文将探讨如何借助最新的技术手段和方法,为软件测试自动化注入新的活力,提高测试效率和质量。
|
Web App开发 安全 数据安全/隐私保护
一文带你了解五款提高工作效率的软件,赶紧收藏!
人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。
157 0
|
存储 安全 网络安全
推荐5款助你高效工作的小软件
现在,有很多实用的工具和软件可以帮助我们更高效地完成各种任务。以下是5款值得推荐的工具软件,能够极大地提高我们的工作效率。
67 1
|
消息中间件 分布式计算 NoSQL
如何了解一个软件的设计?
刚入职,接手新项目,面对一个全新项目,怎么快速研究它? 很多人直接看源码,一头扎入代码,很快就迷失其中,最初那股子探索精神,也会逐渐被迷茫所替。有多少次你满怀激情打开一个开源项目,结果多半坚持不了就放弃。问题出在哪?迷茫是因为缺少对软件整体了解,如同不带地图指南针就闯入热带雨林,迷路只是早晚。阅读源码是必经一步,却不是第一步。应先从了解软件设计开始。
133 0
sbs
|
SQL Oracle 关系型数据库
软件需求工程
前言之前看过一些系统分析相关,偏信管、软工专业的书:《系统分析与设计方法》,《软件需求》。 需求工程 部分对实际开发工作有不少帮助。相信很多开发也不太了解信管或者软工,更多关注于具体领域的前沿技术,所以这些概念应该能用到。文中部分是引用书中原文,部分是个人观点。文中产品,软件,系统是类似的含义。2020.7.10 —— by zz。需求需求一词的字典义是“被命令或强制性的东西;需要或者必要”,和软
sbs
611 1
软件需求工程
|
设计模式 网络安全
全面的软件知识结构
全面的软件知识结构
116 0
《软件需求工程(第2版)》一导读
许多人经过研究发现,当软件开发项目失败时,软件需求问题通常正是核心问题。因此,在软件开发过程中,必须极早和有效地发现和解决与软件需求相关的问题。
1174 1
下一篇
无影云桌面