软件工程期末复习(6)需求分析的任务

需求分析

需求分析的任务

“建造一个软件系统的最困难的部分是决定要建造什么……没有别的工作在做错时会如此影响最终系统,没有别的工作比以后矫正更困难。”                                                      

                                                                                                                     —— Fred Brooks

 

需求难以建立的原因:

  • 误解
  • 交流障碍
  • “完整性”问题
  • 需求永远不会稳定
  • 用户意见不统一
  • 错误的要求
  • 认识混淆

 

需求为何重要?------软件项目失败的原因:

  •  不完整的需求(13.1%)
  • 缺少用户的参与(12.4%)
  • 缺乏资源(10.6%)
  • 不切实际的期望(9.9%)
  • 缺乏行政支持(9.3%)
  • 改动需求和说明(8.7%)
  • 缺少计划(8.1%)
  • 不再需要该系统(7.5%)

需求为何重要?------有关软件错误的一些认识:

事实1: 在软件生命周期中,一个错误发现得越晚,修复错误的费用越高

事实2:   许多错误是潜伏的,并且在错误产生后很长一段时间才被检查出来 

Boehm从TRW公司所做的软件项目中得出结论:所有被检测出来的错误中的54%实际上是在编码和单元测试阶段以后才被发现的;更糟糕的是,此类错误中的绝大部分(占45%)是属于需求和设计阶段的,而编码阶段的错误只占9%。 

事实3:     在需求过程中会产生很多错误

DeMarco在一份研究报告中指出,被检查出来的错误的56%产生的根源可以追溯到需求阶段。AIRMICS所进行的一项调查发现,在一份美国军方大型管理信息系统的需求规格说明书中存在着500多个错误,当然这仅仅是一个软件项目中的一次调查。

事实4:   在需求阶段,代表性的错误为疏忽、不一致和二义性 

美国海军研究实验室对海军A-7E飞机上的飞行操作程序进行实地测试,得出的研究数据表明: A-7E项目中77%的需求错误特点是不明确-疏忽、不一致和二义性。

  • 49% 不正确的事实
  • 31% 疏忽
  • 13% 不一致
  • 5%  二义性
  • 2%  放错位置

 事实5 :  需求错误是可以被检查出来的

Basili和Weiss的数据表明:在A-7E的软件定义文档中,33%的需求错误是通过人工检查出来的。 Celko觉得利用自动分析工具能够从SRS中检查出来相当数量的错误。

由上面这些事实,能得出如下四点结论:

  • 在需求过程中会产生很多错误(事实3和4)
  • 许多错误并没有在早期被发现(事实2)
  • 这样的错误是能够在产生的初期被检查出来的(事实5)
  • 如果没有及时检查出来这些错误,软件费用会直线上升(事实1)

需求过程不仅是可能的而且也是值得的

什么是需求?

  • 需求:就是系统的特征,或对系统为达到某个目标所能做的事情的一个描述。
  • 需求:是对问题信息和系统行为、特性、设计及制造约束的描述的集合。
  • 需求过程本质:在问题空间与求解空间中间架设桥梁。

项目干系人(Stakeholder)

  • 直接或间接从正在开发的系统中获益的人
    • 业务运行管理人员
    • 产品管理人员
    • 市场销售人员
    • 内部和外部客户
    • 最终用户
    • 顾问
    • 产品工程师、软件工程师、支持和维护工程师以及其他人员

 项目干系人需求、系统需求:

  • 需求可能首先从项目干系人角度表达为一个非形式化的、不详细的、高层的描述,称为项目干系人需求(客户需求);
  • 然后从开发者角度出发,发展成更详细的形式,即系统需求。

功能需求、非功能需求

功能需求:系统与环境间的交互——描述系统必须支持的功能和过程的系统需求。

非功能需求:客户给出的具体约束、指标——描述操作环境和性能目标的系统需求。

二者的区别:功能需求描述系统应该做什么,非功能需求则为如何实现这些需求设定约束。

例如:

功能需求可能声明:系统必须提供一些验证系统用户身份的工具

非功能需求可能声明:验证过程必须在4秒内完成。

应该考虑到的非功能需求 

  • 性能:实时性、资源利用、硬件配置限制、精确度
  • 可靠性:有效性、完整性
  • 安全/保密性
  • 运行限制:使用频度、运行期限、控制方式(如本地或远程)、对操作员的要求
  • 物理限制:系统的规模等限制
  • 用户界面友好性:易用性

需求的特征

  • 正确性:要确保需求的表达中没有引入错误(faults)。
  • 一致性:确保没有互相冲突、矛盾的需求;确保没有不确定的需求。
  • 完整性:如果需求描述了所有可能的状态,以及状态的变化、输入、过程和约束,那么这组需求就是完整的。
  • 现实性:确保客户要求系统做的事真的能做到。
  • 实用性:确保需求和要解决的问题有直接关系。
  • 可检验性:必须能写出测试来说明需求已被满足。
  • 可回溯性:保证每个系统功能都能追溯到一组要求它的需求;确保很容易找到处理系统特定方面的某一组需求。 

需求文档

需求文档的可能使用者:
  • 系统客户:需要阅读需求文档来检验是否表达了他们的需要;
  • 软件项目管理者:需求文档是制定项目计划的基础之一;
  • 系统工程师:需要理解待开发系统;
  • 系统测试工程师:要依据需求文档制作测试用例,验证开发出的系统是否满足要求;
  • 系统维护人员:使用需求文档理解初始系统的特性和系统不同部分之间的关系。
两种需求文档:
  • 需求定义(需求描述)
    • 用应用域术语编写
    • 彻底列举客户/用户想要系统做些什么
    • 由客户/用户和开发人员共同编写
  • 需求规约(软件需求规格说明,Software Requirements Specification)
    • 用开发人员擅长的技术术语编写
    • 需求定义的技术性版本,方便设计人员理解
    • 由分析人员编写

需求分析的任务

  • 必须理解并描述问题的信息域,根据这条准则应该建立数据模型;
  • 必须定义软件应完成的功能,这条准则要求建立功能模型;
  • 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型;
  • 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节
  • 确定对系统的综合要求
    • 功能需求
    • 性能需求
    • 可靠性和可用性需求
    • 出错处理需求
    • 接口需求:用户接口需求;硬件接口需求;软件接口需求;通信接口需求
    • 约束:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台 逆向需求
    • 将来可能提出的要求
  • 分析系统的数据要求
    • 建立数据模型
      • E-R图
    • 复杂数据结构的描述
      • 数据字典
      • 层次方框图
      • Warnier图
    • 数据库
      • 数据规范化
  • 导出系统的逻辑模型
    • 软件系统详细的逻辑模型通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述
  • 修正系统的开发计划
    • 可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

半小时搞懂STM32面经知识——RCC

1. 时钟的概念 时钟是由电路产生的具有周期性的脉冲信号,相当于单片机的心脏,要想使用单片机的外设必须开启时钟。 时钟对单片机有什么作用? 1. 驱动外设的本质是寄存器,而寄存器需要时钟触发才能改写值。 2. 时钟频率越高&#…

基于Docker的JMeter分布式压测

一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试。如本网站所示,一个JMeter实例将能够控制许多其他的远程JMeter实例,并对你的应用程序产生更大的负载。JMeter使用Java RMI[远程方法调用]来与分布式网络中的对象进行交互。JMeter主站…

前端已死? Bootstrap--JS-jQuery

目录 Bootstrap--JS-jQuery 1 jQuery基础 介绍 基础语法: $(selector).action() 1.1 安装jQuery 地址 基础语法: $(selector).action() 2 jQuery事件 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。 jQuery常用事件 2.1 鼠标事件…

栅格地图、障碍物地图与膨胀地图(障碍物地图(三)写一张障碍物地图)

花了不少时间看完了障碍物地图的大致思路,这里简单根据前面的思路来写一个简易版的障碍物地图。 1.订阅一张地图 首先,我们需要一张静态地图作为原始数据,这个我们可以订阅当前的map来获取: void map_test1::MapCallback(const…

软件库V1.5版本iApp源码V3

软件库V1.5版本iApp源码V3 配置教程在【mian.iyu】的【载入事件】 更新内容: 1、分类对接蓝奏(免费,付费,会员,广告),支持蓝奏文件描述设置为简介(改动:首页.iyu&#…

Kubernetes二进制(单master)部署

文章目录 Kubernetes二进制(单master)部署一、常见的K8S部署方式1. Minikube2. Kubeadmin3. 二进制安装部署4. 小结 二、K8S单(Master)节点二进制部署1. 环境准备1.1 服务器配置1.2 关闭防火墙1.3 修改主机名1.4 关闭swap1.5 在/e…

Linux常用指令集合

ls显示目录文件 选项: -a 所有文件(all所有) -l 详细信息(Information信息)(自动包含-1) 所以常用 ll -1 一行只输出一个文件。 -R 列出所有子目录下的文件。…

运维别卷系列 - 云原生监控平台 之 02.prometheus exporter 实践

文章目录 [toc]exporter 简介常用的 exporternode-exporter 实践创建 svc创建 daemonsetprometheus 配置服务发现 exporter 简介 随着 Prometheus 的流行,很多系统都已经自带了用于 Prometheus 监控的接口,例如 etcd、Kubernetes、CoreDNS 等&#xff0c…

基于Springboot的校园疫情防控信息管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园疫情防控信息管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层…

保研机试之【文件描述符】

A选项: 一个文件描述符对应着系统级文件表中的一项 B选项 C选项 D选项 E选项 F选项 综上,我认为这道题选择B、C、E、F~

内网工具之LDP的使用

LDP 是微软自带的一款活动目录信息查询工具,在域控的 cmd 窗口执行 ldp 命令即可打开 LDP 工具。普通域成员主机默认是没有 LDP 工具的,可以自行上传ldp.exe 工具上去查询活动目录信息。不在域内的机器,也可以通过上传 ldp.exe 工具上去执行。…

接口测试基础

1、接口测试 接口:系统之间数据交互的通道。 硬件接口软件接口 接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。 接口地址 接口参数 2. 为什么要学接口测试? 提前介入测试、尽早发现问题 3、接口测试学什…

网上有哪些赚钱的方法能一天赚二三十?盘点7个靠谱的搞钱副业和赚钱软件

想在家里躺着就能把钱赚?这不再是遥不可及的梦想!随着互联网的飞速发展,网上赚钱的方式层出不穷,总有一款适合你。 今天,就让我们一起揭开这些神秘面纱,看看哪些网上赚钱秘诀能让你轻松实现月入过万&#x…

OpenAI GPT-4

本文翻译整理自:https://openai.com/index/gpt-4-research/ (March 14, 2023) 文章目录 一、关于 GPT-4二、能力视觉输入Visual inputs: chart reasoningSample 2 of 7 操纵性Steerability: Socratic tutorSample 1 of 3 三、局限性四、风险与缓解措施五、训练流程…

运维别卷系列 - 云原生监控平台 之 01.prometheus 入门和部署

文章目录 [toc]什么是 PrometheusPrometheus 架构及其一些生态系统组件Prometheus 的工作模式Prometheus 的适用场景Prometheus 的不适用场景Prometheus 词汇表 Prometheus 启动参数Prometheus 配置文件通用占位符定义配置文件示例解释服务发现 Prometheus 部署创建 namespace创…

Vue入门到关门之Vue3学习

一、常用API 注意:本文项目均使用脚手架为 Vite 1、setup函数 (1)介绍 如果在项目中使用配置项API,那么写起来就和vue2的写法是一样的;但是如果在项目中写的是组合式API,那么组件中所用到的&#xff1a…

深度学习入门到放弃系列 - 阿里云人工智能平台PAI部署开源大模型chatglm3

通过深度学习入门到放弃系列 - 魔搭社区完成开源大模型部署调用 ,大概掌握了开源模型的部署调用,但是魔搭社区有一个弊端,关闭实例后数据基本上就丢了,本地的电脑无法满足大模型的配置,就需要去租用一些高性价比的GPU机…

宝兰德成为中国信通院政企信创促进中心成员 共谱信创产业新篇章

近日,中国信通院云计算标准和开源推进委员会2024年第一次全体工作会议圆满结束。会上,宝兰德获得由中国信通院和EDCC政企信息技术应用创新促进中心授予的荣誉证书,成为政企信创促进中心成员单位。 关于政企信创促进中心 中国信通院政企信创促…

uniapp高性能图片裁剪插件,可添加水印

效果图&#xff1a; 插件地址&#xff1a;高性能图片裁剪&#xff0c;裁剪图片后自动添加水印 - DCloud 插件市场 示例&#xff1a; <template> <view><button click"select">选择图片</button><image mode"widthFix" :src&qu…

DOM重点核心(注册事件+DOM事件流)

目录 1.注册事件 注册时间概述 addEventListener() 删除事件 2.DOM事件流 DOM事件流理论 事件对象 事件对象的常见属性和方法 e.targe 和 this的区别 阻止默认行为 阻止冒泡 事件委托 禁止右键菜单和禁止选中文字 获得鼠标的坐标&#xff08;可视区、页面、浏览器…