软件需求分析——需求的理论基础

news2025/8/2 20:13:24

如果有兴趣了解更多相关内容,可以来我的个人网站看看:瞳孔空间

一:需求的涵义

研究对象:软件加强型系统中的软件

软件加强型系统:泛指由计算机技术支持的互相联系着的一组人类活动组成的系统。与物理设备和人类社会活动相关。比如:游戏软件与物理设备、用户ERP(企业资源计划)系统与组织运作过程

需求的定义:

  1. 用户为了解决问题或达到某些目标所需要的条件或能力
  2. 系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或能力
  3. 对1或2中的一个条件或一种能力的一种文档化表述

问题域与解系统:

  • 软件系统与外部环境
    在这里插入图片描述
  • 当现实的状况与人们期望的状况产生差距时,就产生了问题
  • 要解决问题,就需要改变现实当中某些实体的状态或改变实体状态变化的演进顺序,使其达到期望的状态或演进顺序
  • 这些实体和状态构成了问题解决的基本范围,称为该问题的问题域(Problem Domain)
  • 软件系统通过影响问题域,能够帮助人们解决问题,称为解系统
    在这里插入图片描述

共享现象:软件系统能够与问题域进行交互和相互影响的原因在于,软件系统中的某些部分对问题域中的某些部分的具有模拟特性。换句话说,软件系统当中含有问题域某些部分的模型(或模拟),常见的模型包括数据模型、对象模型、处理模型等。问题域中的某些信息能够和模型中的信息建立映射关系,这些通过映射建立的共同知识,就是问题域和解系统之间的共享现象
在这里插入图片描述

需求:需求是用户对问题域当中的实体状态或事件的期望描述。包括直接需求与间接需求。
例如:

  • 一旦书籍被借出,在归还之前它不能被再次借阅
  • 在归还的书超过30天的归还期限时,归还后应该进行超期处罚
    在这里插入图片描述

规格说明:规格说明是解系统为满足用户需求而提供的解决方案,规定了解系统的行为特征

  • 主要包括两个部分
    • 对共享现象(模型)的描述
    • 系统对共享现象所施加的操作的描述
  • 也可以看作是一种需求
    • 完全针对系统行为发出的期望
    • 一种理想的、完全不需要进行任何额外努力即可转换为系统行为的需求
      在这里插入图片描述

问题域特性:问题域自治的规律性称为问题域特性,包括结构特性和行为特性等

  • 问题域特性的重要性
    • 要想解决问题,它就需要了解问题域特性,将解决方案和问题域特性结合起来
    • 要防止解系统的引入在问题域当中引发未预见的连锁反应
  • 需要关注的问题域特性
    • 间接约束
    • 约束和假设

从问题域、需求和规格说明的关系看需求工程:设描述明确的问题域特性为E,定义良好的系统行为为S,预期的需求为R,

  • 需求工程的目的就是根据E,构建S,使得E,S -> R。
  • 需求工程的困难之处
    • 不存在描述明确的E
    • 不存在确定的针对S的评估标准R
    • E, R => S是一个创造性的过程
  • 需求工程的主要工作
    • 需求开发,确定R
    • 研究问题背景,描述问题域特性E
    • 构建解系统,描述解系统行为S,使得E, S => R

二:需求的类型

2.1:分类方式

有以下分类方式:

  • 功能需求(Functional Requirement):和系统主要工作相关的需求,即在不考虑物理约束的情况下,用户希望系统能够执行的活动,这些活动可以帮助用户完成任务。功能需求主要表现为系统和环境之间的行为交互
  • 性能需求(Performance Requirement):系统整体或系统组成部分应该拥有的性能特征,例如CPU使用率、内存使用率等
  • 系统需求(System Requirement):包括硬件需求、软件需求和其他需求
  • 质量属性(Quality Attribute):系统完成工作的质量,即系统需要在一个“好的程度”上实现功能需求,例如可靠性程度、可维护性程度等
  • 对外接口(External Interface):系统和环境中其他系统之间需要建立的接口,包括硬件接口、软件接口、数据库接口等等
  • 约束:进行系统构造时需要遵守的约束,例如编程语言、硬件设施等
  • 系统需求
    • 硬件需求
    • 软件需求
    • 其他需求

三类问题和三种需求变化方式:

  • S类型程序(可说明的)
    • 问题能够被形式地和完全地陈述出来
    • 接受:按照这个规格说明,这个程序是正确的吗
    • 这种软件不会进化,对规格说明的改变定义一个新的问题,因而是新的程序
  • P类型程序(问题求解)
    • 现实世界问题的不精确陈述
    • 接受:对这个问题来说,这个程序是一个可以接受的解决方案吗
    • 这种软件很可能要连续地进化
      • 因为这个方案是决不会完美的,并且是能够被改进的
      • 因为现实世界要变化,所以这个程序也要变化
  • E类型程序(被嵌入的)
    • 一个变成它建模世界的一部分的系统
    • 接受:完全依赖于观点和判断
    • 这个软件是固有的进化的,软件和世界的变化相互影响

在这里插入图片描述

2.2:功能需求

功能需求具有层次性:
在这里插入图片描述

业务需求:

  • 系统建立的战略出发点,表现为高层次的目标,它描述了组织为什么要开发系统
  • 为了满足用户的业务需求,需求工程师需要描述系统高层次的解决方案,定义系统应该具备的特性
  • 参与各方必须要对高层次的解决方案达成一致,以建立一个共同的前景
  • 特性说明了系统为用户提供的各项功能,它限定了系统的范围

用户需求:

  • 执行实际工作的用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么
    • 直接用户
    • 间接用户
  • 对所有的用户需求,都应该有充分的问题域知识作为背景支持
  • 特性
    • 模糊、不清晰
    • 多特性混杂
    • 多逻辑混杂

系统需求:

  • 用户对系统行为的期望,一系列的系统行为联系在一起可以帮助用户完成任务,满足业务需求
  • 系统需求可以直接映射为系统行为,定义了系统中需要实现的功能,描述了开发人员需要实现什么
  • 将用户需求转化为系统需求的过程是一个复杂的过程
    • 首先需要分析问题领域及其特性,从中发现问题域和计算机系统的共享知识,建立系统的知识模型
    • 然后将用户需求部署到系统模型当中,即定义系列的系统行为,让它们联合起来实现用户需求,每一个系统行为即为一个系统需求
    • 该过程就是需求工程当中最为重要的需求分析活动,又称建模与分析活动

从功能需求的层次性看需求开发:
在这里插入图片描述

2.3:性能需求

速度(Speed),系统的响应时间

  • 例如PR2.3.3-1:所有的用户查询都必须在10秒内完成

容量(Capacity),系统所能存储的数据量

  • 例如PR2.3.3-2:系统应该能够存储至少10万条销售记录

吞吐量(Throughput),系统在连续的时间内完成的事务数量

  • 例如PR2.3.3-3:解释器每分钟应该至少解析5000条没有错误的语句

负载(Load),系统可以承载的并发工作量

  • 例如PR2.3.3-4:系统应该允许200个用户同时进行正常的工作

实时性(Time-Critical),严格的实时要求

  • 例如PR2.3.3-5:监测到病人异常后,监控器必须在0.5秒内发出警报

2.4:质量属性

  • 系统为了满足规定的及隐含的所有要求而需要具备的要素称为质量
  • 质量属性是为了度量质量要素而选用的特征
  • 质量模型就是能够为质量需求的描述和评价提供工作基础的特征集及特征之间的联系
  • 质量属性的重要性
    • 对设计的影响很大
    • 对越复杂的系统越为重要
    • [Robert19901]:真实的现实系统中,在决定系统的成功或失败的因素中,满足非功能属性往往被满足功能性需求更为重要

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

质量属性的开发:

  • 用户并不能明确地提出他们对产品质量的期望。并不了解软件系统的开发过程,也就无从判断哪些质量属性会在怎样的程度上给设计带来多大的影响,也无法将他们对软件系统的质量要求细化成一组组的可量化的质量属性
  • 需求工程师
    • 质量属性大都是和功能需求联系在一起的,因此需要对照软件的质量属性检查每一项功能需求,尽力去判断质量属性存在的可能性
    • 对于一些不和任何功能需求相联系的全局性质量属性,需求工程师要在碰到特定的实例时意识到它们的存在

2.5:对外接口

解系统和其他系统之间的软硬件接口:

  • 接口的用途
  • 接口的输入输出
  • 数据格式
  • 命令格式
  • 异常处理要求

用户界面:利用专门的人机交互设计文档记录

2.6:约束

总体上限制了开发人员设计和构建系统时的选择范围

  • 系统开发及运行的环境:包括目标机器、操作系统、网络环境、编程语言、数据库管理系统等
  • 问题域内的相关标准:包括法律法规、行业协定、企业规章等
  • 商业规则:用户在任务执行中的一些潜在规则也会限制开发人员设计和构建系统的选择范围

三:需求工程的路线

在这里插入图片描述

问题分析和背景分析

  • 发现问题比发现需求要简单的多
  • 进行背景分析,以更好的理解用户的问题
  • 问题分析
    • 明确问题
    • 定义业务需求
    • 制定解决方案
    • 确定系统特性

需求获取

  • 根据项目范围,确定问题域的范围
  • 确定需求获取的源头
  • 确定获取的主题和内容
  • 选择需求获取的方法
  • 围绕获取的内容,运用需求获取的方法,从源头获取需求
  • 对获取过程中出现的分歧和问题,在项目前景的指导下进行解决
  • 经过需求获取过程,可以得到获取的文档资料,其中以获取笔录为主

需求分析

  • 建立一个综合考虑了问题域特性和需求的系统模型
  • 根据系统模型将用户需求转化为系统需求

文档化和验证

  • 产生规格说明
  • 进行验证

四:优秀需求的特性

完整性:

  • 不需要做更多的扩展就可以充分的说明用户所需要的系统功能
  • 每一个需求的描述都应该包含开发人员设计和实现这项功能需要的所有信息

正确性

  • 真实的反映用户的意图
  • 必须请需求的提出者予以确认

精确性

  • 描述仅包含必要的信息
  • 简洁、清晰

可行性

  • 由开发人员进行检查
  • 需要进行一定的分析和研究,而不是单纯的凭借经验和直觉
  • 必要的时候要通过开发原型来加以验证

必要性

  • 满足用户的业务需求所必需的

无歧义

  • 每一项需求都应该有而且只能有一种解释
  • 定义一个可以共同理解的词汇表

可验证

  • 通过分析、检查、模拟或者测试等方法能够判断需求是否被满足
  • 不可验证的需求往往是因为描述模糊或者过于抽象,所以在进行需求的描述时要
    • 让需求具体化
    • 小心形容词和副词的使用
    • 避免程度词的使用

五:常见的需求错误

需求并没有反映用户的真实需要

  • 用户在表达自己的需要时,可能会在潜意识下进行一定的加工
  • 在人际交流当中,信息会发生自然的衰减,甚至扭曲(应对方案:检查和确认)

模糊和歧义的需求

  • 无意中写出模糊和歧义的需求定义往往是因为选词造句不当(应对方案:为项目中重要的词汇建立一个公共的可共同理解的词汇表)
  • 有意产生的模糊和歧义的需求定义往往是为了应付对需求持有不同立场的用户(应对方案:在项目前景的指导下,促进用户之间的协商解决)

明显的信息遗漏

  • 明显的信息遗漏,其主要原因在于项目的范围定义不当(应对方案:加强对业务需求的处理)
  • 不明显的信息遗漏,往往是因为相关信息难以发现(应对方案:靠需求工程师的经验来加以避免)

不必要的需求

  • 用户将之作为和开发人员谈判的筹码
  • 用户在交流当中,用户总是倾向于表达各种各样的需要(应对方案:根据业务需求进行用户需求的过滤和选择)
  • 需求开发人员“画蛇添足”(应对方案:保持以用户为中心)

不切实际的期望

  • 用户并不掌握关于软件系统构建的相关技术知识,所以用户可能会提出一些已有软件技术无法实现的期望(应对方案:软件开发者提供可行性、成本等足够的技术参考信息,帮助用户对其进行取舍和调整)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux网络协议栈源码分析 - 传输层(TCP的输出)

1、TCP write系统调用(tcp_sendmsg) 1.1、write系统调用 socket的write系统调用栈: write最终调用tcp_sendmsg发送消息。 1.2、tcp_sendmsg报文分段 tcp_sendmsg主要是对用户的消息按MSS进行分段、添加到发送队列并将用户数据拷贝到分段里面,根据相关判断设置PSH标…

[附源码]SSM计算机毕业设计超市收银系统论文JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

学生台灯是灯管的好还是led的好?分享学生专用台灯第一品牌

给学生使用的话肯定是led灯更好的,主要是对眼睛有保护作用的,灯管一般当做主要照明灯具是可以的,在家中客厅里,卧室就是灯管,使用led灯是想要补足亮度的,全光谱的国AA级台灯,更健康、更适应人类…

计算机网络---ARP、DHCP与ICMP

(一)IP 地址与硬件地址 IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(MAC地址),它是平面式的。在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部&…

并肩刘德华,对战周杰伦,腾格尔老师线上演唱会即将拉开帷幕

在刚刚结束的第三十五届金鸡奖上面,著名爱国艺人刘德华,又一次出现在大众的视野当中。来自香港的天王刘德华,是一个著名的音乐人和演员,他拳拳的爱国之情,也感动了无数的粉丝。 刘德华作为中国华语乐坛的中坚力量&…

22071班(11月18日)

1.在串口工具进行输入: echo 1 > /dev/myled0 ---->led1灯点亮 echo 0 > /dev/myled0 ---->led1灯熄灭 echo 1 > /dev/myled1 ---->led1灯点亮 echo 0 > /dev/myled1 ---->led1灯熄灭 echo 1 > /dev/myled2 ----…

【附源码】计算机毕业设计JAVA校园跑腿平台

【附源码】计算机毕业设计JAVA校园跑腿平台 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

什么是PaaS平台

PaaS平台概述 PaaS平台通常是基于IaaS平台构建的,PaaS平台和IaaS平台最大的差别是需求即服务。所有的管理都是以服务为粒度的,在IaaS以资源管理为中心的平台上提供了更高层次的抽象。 PaaS的本质 (1)运维自动化,故障…

统计聚类法的基本步骤:

统计聚类法的基本步骤: 1>形成数据框 2>计算距离阵 计算n个样品两两间的距离D。 3>进行系统聚类 (I)构造n个类,每个类只包含一个样品; (2)合并距离最近的两类为一新类; (3)计算新类与当前各类的距离,若类个数为1,…

观测云产品更新|Pipeline 使用体验优化;支持写入用户的自定义事件;自定义查看器支持选择更多类型的数据等

观测云更新 Pipeline 使用体验优化 Pipeline 支持过滤条件配置多选 支持将任意一个 Pipeline 脚本设置为“默认 Pipeline 脚本“,若当前数据类型在匹配 Pipeline 处理的时候,未匹配到其他的 Pipeline 脚本,则数据会按照默认 Pipeline 脚本的…

vs2017编译的64位libssh2库

需求:使用sftp上传下载文件 环境:windows vs2017 参考 链接: link 链接: link 编译 环境准备 libssh2依赖于openssl和zlib,所以需要有所以需要先编译:openssl和zlib才行。openssl和zlib。openssl和zlib我是下载人家编译好的…

【MySQL基础】数据库系统之关系型数据库与非关系型数据库

目录 一、数据库系统 1. 数据库 2. 数据库应用 3. 数据库管理系统(数据库软件) 3.1关系型数据库【RDBMS】 3.2非关系型数据库【NoSQL】 4. SQL和数据库管理系统的关系 5. 关系型数据库管理系统的组成 💟 创作不易,不妨点…

DIY CY7C68013A模块为逻辑分析仪

DIY CY7C68013A模块为逻辑分析仪摘要工具软件步骤参考资料:摘要 将淘宝购买的CY7C68013A模块修改为8通道逻辑分析仪。 购买的CY7C68013A模块如下: 工具软件 Zadig:用于安装逻辑分析仪驱动。 PulseView:Sigrok逻辑分析仪应用软…

Python面向对象2-继承-

文章目录目标一. 继承的概念二. 单继承三. 多继承 [python又支持多继承了]四. 子类重写父类同名方法和属性 #TODO目标 继承的概念单继承多继承子类重写父类的同名属性和方法子类调用父类的同名属性和方法多层继承super()私有属性和私有方法 一. 继承的概念 生活中的继承&…

实验(三):单片机I/O口实验-模拟开关灯

一、实验目的与任务 实验目的: 1.掌握单片机I/O口输入输出使用; 2.掌握单片机I/O口位操作的编程。 任务: 1.根据要求编写程序,并写出原理性注释; 2. 检查程序运行的结果,分析一下是…

VLAN和VLAN间路由

VLAN和VLAN间路由一 交换机二 vlan2.1 华为交换机的特性2.2 access接口2.2.1 在华为交换机上配置access接口2.2.2 access接口接收到报文的处理流程(打vlan tag)2.2.3 access接口发送报文的处理流程(剥离\弹出vlan tag)![在这里插入…

【仿牛客网笔记】项目进阶,构建安全高效的企业服务——权限控制

引入依赖 将登录检查拦截器删除掉 授权 首先显示路径 除了这些请求,其他的请求统统允许。 当权限不够处理的时候 返回XML是异步请求 添加denied的路径 获取用户权限的方法 将结果存入到集合中,实例化一个集合 获得用户权限,并把…

java框架学习笔记——SpringMVC

SpringMVC1. SpringMVC简介1.1 什么是MVC1.2 Spring MVC1.3 Spring MVC 的常用组件2. Hello SPring MVC2.1 基础配置2.2 总结3. RequestMapping注解3.1 功能3.2 位置3.3 value属性3.4 method属性3.5 params属性3.6 headers属性3.7 SpringMVC支持ant风格的路径3.8 SpringMVC支持…

数据中心网络方案设计

大家好,我是技福的小咖老师。 云计算、大数据、人工智能等技术的快速发展,对承载数据流量的数据中心网络提出了更高的要求,高吞吐量、高可靠性、低时延、适应服务器虚拟化等都是业务对数据中心网络提出的要求。为了满足业务对网络的要求&…

若依 弹出复选框表格

需求: 工资表用户应该可以弹框选择(弹窗选择用户表的id) 最后效果差不多这样: 步骤: 1.首先,先看我们需求啊, 工资表用户应该可以弹框选择 通过需求确认: 与这个需求关联的表有…