软件需求分析——需求工程过程

news2025/7/9 12:40:59

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

一:相关概念

需求工程过程的目的:介绍为软件加强型系统中的复杂软件设计的需求工程过程,涉及

  • 抽取需求
  • 分析需求
  • 验证需求
  • 管理需求

主要关注点:需求工程中要做些什么

过程:一组活动的有序集合

  • 具有结构性:一组有组织的活动
  • 具有目的性:将输入转换成输出
  • 作用:
    • 结构性帮助处理复杂问题
    • 过程定义帮助问题求解知识的重用

为什么要定义过程

  • 组织和控制过程的进展,达到可控可预测的目的
    • 活动的管理
    • 执行活动的人员的管理
    • 活动完成质量的管理
  • 发现活动进行的问题并在发现问题之后能够改进过程

系统工程过程:

  1. 系统需求工程:整体系统的需求,相对高层的需求,关键约康
  2. 体系结构设计:系统分解为相对独立的子系统
  3. 需求划分:需求划分到这些子系统上,决定那些需求由软件实现
  4. 软件需求工程:高层软件需求分解到细一些的软件组件的需求
  5. 子系统开发:硬件和软件子系统平行设计和实现
  6. 系统集成:硬件和软件子系统集成为一体
  7. 系统验证:对照需求验证系统

过程改进:

  • 目标:
    • 质量改进
    • 日程缩减
    • 资源缩减
  • 主要涉及的问题
    • 过程成熟度
    • 需求过程的成熟度模型
      • 初始级:经验式需求工程,常常出现需求的问题
      • 可重复级:标准化需求工程;较少的需求问题
      • 定义级:定义明确的基于最好的实践的过程,恰倒好处的过程改进

过程的作用:

  • 规定需求工程要进行的活动
  • 定义活动的输入/输出
  • 管理和控制需求工程进程
  • 明确岗位的职责和任务(过程和角色挂钩)
  • 通过过程控制保证需求的质量

二:需求工程的输入和输出

需求工程的输入

  • 存在系统的信息:要被替换的系统或者目标系统将与之交互的系统的功能
  • 需求相关者的需要:系统的需求相关者在什么方面需要目标系统来支持他们的工作
  • 组织标准:组织中涉及系统开发实践和质量管理等方面的标准
  • 规章条例:适用于系统的诸如健康和安全条例等外部规定
  • 领域信息:关于系统的应用领域的一般信息

需求工程的输出

  • 一致同意的需求:关于系统需求的描述,这个描述对需求相关者来说是可理解的,并且已经得到他们的同意
  • 系统的规格说明:在某些情况下可被实现的系统功能的更详细的规格说明
  • 系统模型:一组从不同方面描述系统的模型,比如,数据流模型、过程模型、等等

在这里插入图片描述

三:需求工程过程模型

过程模型:过程的简化描述

过程模型的类型

  • 粗粒度模型:活动的大致的序列、给出活动的上下文、显示过程的输入和输出
  • 细粒度模型:特定过程的细化模型、用于理解和改进存在的过程
  • 角色-活动模型:刻画参与过程的不同角色,以及他们进行的活动
  • 实体-关系模型:显示过程的输入、输出、中间结果、以及它们之间的关系,用于质量管理系统,作为过程活动的补充

粗粒度纯线性模型:
在这里插入图片描述

粗粒度线形迭代模型:
在这里插入图片描述
螺旋式模型:
在这里插入图片描述

角色-活动模型:
在这里插入图片描述

四:需求抽取和分析

抽取分析和协商螺旋:
在这里插入图片描述

需求抽取过程的关键活动

  • 设定目标:组织和业务目标
  • 获取背景知识:应用领域知识
  • 组织知识:将获取的知识组织起来
  • 采集需求相关者的需求:咨询需求相关者

在这里插入图片描述

需求抽取的四个维度:
在这里插入图片描述

需求的来源:

  • 客户(实际的或潜在的)
  • 任何原有的解系统及其文档
  • 原有系统的用户
  • 新系统的潜在用户
  • 应用领域专家
  • 相关的技术标准和法规

需求抽取的机制:

  • 交谈法
  • 问卷法
  • 任务观察
  • 头脑风暴
  • 联合应用开发
  • 用例和场景

需求分析过程:

  • 目标:发现初步需求中的冲突
  • 主要活动:
    • 必要性检查
    • 一致性和完整性检查
    • 可行性检查

需求协商过程:

  • 目标:确定能得到一致同意的需求
  • 主要活动:
    • 需求讨论
    • 需求优先化
    • 达成一致意见的需求的确认

在这里插入图片描述

五:需求验证

需求验证过程

  • 需求分析
    • 需求抽取阶段的“粗”需求
    • 通常非形式化非结构化的表示
    • 不完整、存在不一致
    • 解决“我们得到了正确的需求吗?”
  • 需求验证
    • 检查需求文档,完整的系统需求
    • 明显的不完整和不一致已经去掉
    • 文档的表述符合规范
    • 解决“我们是否把需求搞对了?”

需求验证过程:输入与输出
在这里插入图片描述

需求审查:
在这里插入图片描述
组织审查的注意事项:

  • 规模
    • “足够的人,使得相关的经验都有”
    • 最少:3 (4如果写的人在的话)
    • 最多:7(如果领导没有经验的话,可以少一些)
  • 期限
    • 不要超过2个小时
    • 如果太长了注意力会漂移
  • 输出
    • 所有的审查员必须同意这个结果
    • 所有的发现都应该写下来
  • 范围
    • 关注于一小部分的设计,而不是整个事情
  • 时间表
    • 一旦作者完成了一件产品就开始检查它
    • 不要太早:产品还没有准备好———发现作者已经意识到的问题
    • 不要太晚:产量已经在使用———错误要改就要花费很大的代价
  • 目的:记住最大的好处是来自于固定这个过程,采集数据以帮助你下次不要犯同样的错误

审查指南:

  • 在审查之前
    • 将形式的审查安排进项目规划中
    • 训练所有的审查人
    • 保证所有的出席人都要提前准备
  • 在审查期间
    • 审查产品,而不是它的作者,使意见是构造性的、专业的、以及和任务相关的
    • 严格按照日程进行,领导必须防止拖延
    • 限制辩论和反驳,记录下问题留着以后讨论,只识别问题,当时不要去试图解决它
    • 全要写下来
  • 在审查之后
    • 审查这个审查过程

选择审查人:

  • 可能的候选人
    • 审查方面的专业人员(比如,QA人员)
    • 来自与作者同一个开发小组的人
    • 因为有专业经验而被邀请的人
    • 对产品有兴趣的人
    • 有什么东西可以贡献的访问人员
    • 来自组织中其它部门的人
  • 要排除的人
    • 负责审查作者本人的任何人(比如,产品线经理)
    • 任何已经知道与其他审阅者有个人冲突的人
    • 任何没有资格来做这件事的人
    • 所有的管理人员
    • 任何其出现会带来兴趣上的矛盾的人

将审查结构化:

  • 能够将审查结构化为不同的形式
    • 经验的:依赖于审查人的经验
    • 检查表:
      • 使用一个关于问题/观点的检查表
      • 检查表被裁剪为文档的形式
    • 主动审查(基于观点的阅读)
      • 每个审查者从一个特定的目的来阅读,使用专门的问卷
      • 不同的审查者有效地采用不同的观点
  • 这些不同是有含义的,比如,研究指明:
    • 主动审查比经验的和检查表方法能发现更多的错误
    • 在经验式和检查表方法之间没有明显的不同
    • 会议式审查可能会是多余的

五:小结

  • 需求工程过程是一组活动的结构化序列,它产生用来说明待开发系统的需求文档。需求工程过程涉及需求抽取、需求分析和协商、和需求验证等活动。
  • 需求工程过程模型是从某个特定的角度出发构建的简化过程描述。
  • 需求抽取涉及对包含应用领域、要解决的问题、组织的需要和约束、以及系统相关者需要的辅助功能等在内的所有问题的理解。可以采用的技术包括面谈法、问卷法、情景法、软系统方法、原型法等。
  • 当出现需求重叠和冲突时需要进行需求协商。
  • 需求抽取、分析和协商是相互交织在一起的过程,在需求被所有需求相关者接受前,可能需要多次的重复。
  • 需求验证关注于检查需求文档的最终草案以发现其中的错误。最常用的需求验证方式是需求审查,检查表在组织需求验证过程中是一种有用的方式。原型法是需求验证的另一种有效的方法。
  • 需求变化是不可避免的,因而要求有有效的需求管理机制来管理这些变化。可追踪性信息记录了需求与需求的来源之间,需求之间,需求和系统设计之间等的依赖关系,这些依赖关系对变化影响分析至关重要。

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

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

相关文章

Isaac-gym(7):物理模拟(actor生成、创建、控制等)

1. 创建actor 1.1 actor的创建与句柄 actor是GymAsset的实例。函数create_actor将一个参与者添加到环境中,并返回一个参与者句柄,该句柄可用于以后与该参与者交互。出于性能原因,最好在actor创建期间保存句柄,而不是在模拟运行时…

[同向双指针] 209. 长度最小的子数组 713. 乘积小于 K 的子数组 3. 无重复字符的最长子串

同向双指针 该文结合灵神讲解进行编码:https://www.bilibili.com/video/BV1hd4y1r7Gq 该类滑动窗口一般符合某种单调性。 当不满足条件时左指针后移,当满足条件时右指针后移。 假设数组长度为 n,左指针最多移动 n 次,右指针最…

【无人机】基于RRT算法实现四旋翼无人机的安全和最小能量轨迹规划附matlab代码和报告

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

Linux安装RabbitMQ步骤分享

1、Erlnag安装 1.1、 安装Erlang版本要求 Erlang安装需要对应各自的版本 RabbitMQ Erlang Version Requirements — RabbitMQ 1.2、 Erlang安装 1、目录准备 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq2、添加仓库地址 为了减少安装的错误 我们使用仓库安装 ,类似于m…

【算法篇-数论】快速幂

快速幂1. 利用快速幂优化的时间复杂度2. 快速幂方法及代码3.总结文章参考自 B站董晓算法 1. 利用快速幂优化的时间复杂度 所谓的快速幂就是快速计算底数的n次幂暴力求幂的话时间复杂度为O(n) 利用快速幂可以做到 时间复杂度为 O(log2n) 2. 快速幂方法…

操作系统4小时速成:I/O管理,spooling脱机技术,设备分配,分配数据结构,IO调度,IO子系统,IO控制方式,IO分类

操作系统4小时速成:I/O管理,spooling脱机技术,设备分配,分配数据结构,IO调度,IO子系统,IO控制方式,IO分类 2022找工作是学历、能力和运气的超强结合体,遇到寒冬&#xf…

一、什么是 MQ

MQ的概念 MQ (Message Queue)消息队列,是在消息传输过程中存储消息的容器。多用于分布式系统之间的通信。 队列是基础数据结构中 “先进先出” 的一种数据结构。 消息对列,指把要传输的数据消息放在队列中,用队列机制…

SpringBoot:速成总结+实战——员工管理系统

这篇文章先是总结SpringBoot,当然我很多源码都没有仔细的去抠,而且这样一个成熟的框架想都不用想就知道源码很复杂,先学框架怎么用。接着就用SpringBoot完成一个较为简单的项目:员工管理系统。 目录端口号被占用怎么办什么是Sprin…

Hadoop总结——Hadoop基础

一、Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 主要解决,海量数据的存储和海量数据的分析计算问题 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈 二、Hadoop发展历史 1)Lucene--Doug Cutting开…

python中深拷贝和浅拷贝的区别

文章目录值的引用浅拷贝可变数据类型与不可变数据类型不可变数据类型可变数据类型深拷贝深拷贝浅拷贝总结若将需要注释若干行,则将这些行选中,然后按住 ctrl / 键就可以了,再按一次,即可取消多行注释若要批量缩进,那么…

磷脂酰丝氨酸 猪脑(phosphatidylserine,PS)试剂级;丝氨酸磷脂

磷脂酰丝氨酸(phosphatidylserine,PS)又称丝氨酸磷脂,二酰甘油酰磷酸丝氨酸,简称PS,是一类普遍存在的磷脂,通常位于细胞膜的内层,磷酯化合物中的磷酸甘油酯类,是细胞膜组…

QGIS创建要素与属性

QGIS之矢量操作——创建要素与属性 创建要素 打开常用的工具条:View—Toolbar 这样常用的工具条就加载进来了 新建矢量图层,并设置字段等等: 创建属性,选中你的矢量图层,右键选择Toggle_Editing(或者点击…

SpringBoot项目上线运维

文章目录一.高级属性配置1.1 简介1.2 临时属性设置1.3 配置文件的四级分类1.4 自定义配置文件二.多环境开发2.2 多环境开发(yaml版)2.3 多环境开发多文件版(yaml版)2.4 多环境开发(Properties版)2.5 多环境…

这次把怎么做好一个PPT讲清-画图篇

文章目录概述布尔运算PPT幻灯片中如何设置形状对象格式每一个图形既是一个形状,又是一个文本框如何用PPT来实现三维3D效果,附参数设置详解怎么用ppt画三维立体图?**PPT做3D可动样机****PPT做3D[动态图标]****PPT做3D插画**如何使用[PPT绘图]&#xff1f…

图像处理:图像清晰度评价

目录 0、实现效果 1、概述 2、模糊度分类 1、运动模糊 2、压缩模糊 3、高斯模糊 3、清晰度量化指标 Brenner 能量梯度函数(Energy of Gradient) ​编辑 Roberts Laplace SMD(灰度方差)函数 SMD2 (灰度方差乘积)函数 …

JUC学习笔记——并发工具线程池

在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的并发工具线程池 我们会分为以下几部分进行介绍: 线程池介绍自定义线程池模式之Worker ThreadJDK线程池Tomcat线程池Fork/Join 线程池介绍 我们在这一小节简单介绍一下线程池 线程池简介…

Linux基础教程:9、linux进程管理(2)

前面我们讲到fork创建子进程,那么这一期我们接着讲创建进程之后如何调试以及插入其他进程、特殊进程、和进程如何退出; 同样我们写了一个C语言程序,但是在这个程序中是有两个进程,我们调试的时候只会选择一个进程调试&#xff0c…

了解ixgbe网卡驱动— 驱动注册(纯代码分享)

1 ixgbe 网卡注册驱动 和大部分设备驱动一样,网卡驱动是作为一个 module 注册到 kernel 的 通过 module_init() -> ixgbe_init_module() -> pci_register_driver() 注册 ixgbe_driver 通过 module_exit() -> ixgbe_exit_module() -> pci_unregister_dr…

【仿牛客网笔记】项目进阶,构建安全高效的企业服务——置顶、加精、删除

添加依赖,去掉版本 实现置顶、加精的修改,删除 首先开发数据访问层,因为是对帖子的操作所以无论是置顶、加精最终是要修改帖子,先打开DiscussPostMapper增加修改的操作,一个修改类型,一个修改状态。 打…

[iOS]MonkeyDev安装

MonkeyDev官方安装文档:https://github.com/AloneMonkey/MonkeyDev/wiki/%E5%AE%89%E8%A3%85 1.安装HomeBrew 终端输入指令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 选择源后安装 更多安装方式可以参…