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

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

1.2 什么是软件需求

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

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

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

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

相关文章
|
程序员 人工智能 Serverless
通义灵码保姆级教程:官网、安装、使用指南、常见问题、线上活动、官方答疑
通义灵码保姆级教程:官网、安装、使用指南、常见问题、线上活动、官方答疑
21488 1
|
SQL 移动开发 算法
MySQL 8.0.23 Hypergraph Join Optimizer代码详解
MySQL Join MySQL本身没有常规意义上的执行计划,一般情况就是通过JOIN和QEP_TAB这两个结构组成。QEP_TAB 的全称是Query Execution Plan Table,这个“Table“可以是物理表、内存表、常量表、子查询的结果表等等。作为整个单独JOIN执行计划载体之前还承担着整个执行路径的调用和流转,但是从8.0.20后,全面的生成了独立的
1860 0
MySQL 8.0.23 Hypergraph Join Optimizer代码详解
|
计算机视觉 Python
图像增强、锐化,利用 Python-OpenCV 来实现 4 种方法!
图像增强目的使得模糊图片变得更加清晰、图片模糊的原因是因为像素灰度差值变化不大,图片各区域产生视觉效果似乎都是一样的, 没有较为突出的地方,看起来不清晰的感觉 解决这个问题的最直接简单办法,放大像素灰度值差值、使图像中的细节更加清晰。
图像增强、锐化,利用 Python-OpenCV 来实现 4 种方法!
|
测试技术 Apache 数据安全/隐私保护
使用 Apache JMeter 事务控制器的详细指南
Apache JMeter 的事务控制器用于组合多个请求成一个事务,以便衡量整体性能。创建测试计划涉及添加线程组、事务控制器和采样器,配置参数如线程数、Ramp-Up时间和循环次数。在事务控制器内,添加HTTP请求模拟用户登录和访问主页等操作。通过勾选选项,包括计时器和处理器时间。添加监听器如汇总报告和查看结果树来分析结果,从而评估系统性能瓶颈。事务控制器对于测试复杂业务流程的性能非常有用。
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL 5.7 下载安装一步到位
下载步骤 安装准备 安装MySQL 图形化界面推荐
MySQL 5.7 下载安装一步到位
|
程序员 数据库
如何快速画出一副漂亮的架构图
为什么要画好一幅架构图?一幅漂亮的架构图既是创作者的深度结构化思考和表达,对于读者来说也更加容易理解架构所要表达的意思。
30638 16
|
监控 物联网 5G
驾驭车联网的力量:深入车联网网络架构
车联网,作为移动互联网之后的新风口,以网联思想重新定义汽车,将其从简单的出行工具演化为个人的第二空间。车联网涵盖智能座舱和自动驾驶两大方向,本文将从车联网基础网络角度带您深入探讨车联网的网络构架。
驾驭车联网的力量:深入车联网网络架构
|
弹性计算 固态存储 异构计算
2023阿里云GPU服务器学生优惠价格表
2023阿里云GPU服务器学生优惠价格表,阿里云GPU租用费用价格表,GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折优惠,阿里云百科分享阿里云GPU服务器学生优惠价格、GPU服务器收费价格表、GPU服务器多少钱一个小时等费用明细表:
1407 1
2023阿里云GPU服务器学生优惠价格表
|
XML 安全 Oracle
干货 | 最全最详细的Weblogic漏洞总结(建议收藏)
干货 | 最全最详细的Weblogic漏洞总结(建议收藏)
7395 0
|
网络协议 算法
第 9 章 TCP 粘包和拆包及解决方案
第 9 章 TCP 粘包和拆包及解决方案
380 0