产品团队的需求验证和确认
需求核实过程是确保软件满足特定的规格要求,而验证则侧重于软件是否达到了最终用户的期望和需求。
如果你正在开发一种医疗产品,这种区别也可能在法规和标准中有所体现,例如:
820.30(f):设计验证应确认设计的成果符合设计的输入要求。
820.30(g):设计验证应确保设备与定义的用户需求和预期用途相符。
你可能听过“验证”和“确认”这两个词被混淆使用,没错,这个现象非常普遍。然而,这在测试过程中可能会引发混淆,如果你在严格受规管的行业中开发产品,关键是产品要按照预期进行,且要避免产生昂贵的错误。
对于开发者来说,不清晰和不完整的需求可能会让他们感到失望。如果开发者不能在项目开始时就获得必要的信息,他们就必须自行进行解读,而这些解读并不总是正确的。这就导致了错误风险增高,且在产品开发周期进展中需要投入更多的资源来解决问题。
理解验证和确认的区别,以及在产品开发过程中如何各自使用它们,可以帮助降低成本、提高效率,并交付出更符合用户需求的产品。
什么是需求验证?
如果你过去将“验证”和“确认”这两个概念混为一谈,那么最重要的一点是要注意它们的顺序。在软件开发过程中,我们首先进行的是验证,然后才是确认。那么,每一个步骤中都包含什么内容呢?首先,我们来深入了解一下“验证”。
验证测试是为了确保程序按照明确规定的需求进行构建。在验证过程中,我们会进行一系列的活动,例如对代码进行审查、对整个程序进行逐步演练以及进行详细的检查等。
在验证阶段,你可能会发现一些被遗漏的需求或者是无效的需求。识别这些问题可以帮助你尽早地减少重做工作的风险以及因工作量超出预期而导致的额外成本。相比于在后期需要识别并修正大量代码,尽早发现并修复小错误要更为有效。
这里有一个例子,假设你正在驾驶前往一个新的目的地。你可能会将目的地输入到你的GPS中,然后GPS会为你提供前往那个地方的路线以及需要走的高速公路出口编号。如果你需要找的是第10个出口,而你刚刚经过了第1个出口,你会立刻知道你还需要再经过9个出口。这个过程就像是在进行验证,你在行驶过程中使用GPS对比路线,确认你的行驶方向是否正确。
另外一个例子是在电子表格中输入公式。当你输入了几行数据之后,你可能会去检查一下公式是否正确无误,以及是否按照预期工作。这个过程就像是在进行验证,它允许你在深入产品开发过程之前进行快速检查,确保你的工作是在正确的方向上进行的。
什么是需求确认?
对”需求确认”这个问题的解答可能会因你所在的行业以及正在被验证的需求类型而有所差异。
总的来说,当你已经明确了要验证的需求类型,并完成了相应的验证工作后,就应该进行确认测试了。确认测试能确认需求的准确性,确保这些需求实现了业务目标,满足了所有相关利益方的需求,并且被开发者清楚地理解。确认是找出遗漏的需求,并确保需求具备一系列重要特性的关键步骤。
软件确认涉及以下内容:
- 准确概述了最终用户的需求
- 只有一个确切的含义
- 可以根据需要进行修改
- 记录了客户真正需要的属性
- 可以轻易地链接到系统需求,如设计、代码和测试
确认并不关注你为达到目的地所走过的路,而是关注你是否达到了目标。例如,回顾一下上述驾车并根据出口号等地标导航的例子。假设目标是到达一条徒步路线。当你到达时,可能会提出一些问题。
远足路径是否符合预期? 我是否可以看到明显的路径和路径起点标志? 这个地方是否满足我的期望? 确认关注的就是这类问题。它并不在意你是如何到达那里的,而是在意你是否到达了正确的地方。
如果你正在设计一个电子表格,正如我们之前讨论的,你在验证过程中会检查公式是否工作正常。在确认过程中,你在确认最终的产品(即电子表格)是否满足用户的需求。
例如,使用电子表格的例子,我们可能确定我们要使用电子表格来减少完成“x”任务的时间或减少我们在执行“y”任务时出现的错误,因此我们设计了一个具有许多功能的电子表格,这些功能是根据我们的需求定义的。验证是询问,电子表格是否按照需求正常工作(“我们是否正确地构建了它”);确认是询问,电子表格是否实现了与x和y相关的目标(“我们是否构建了正确的东西”)。
即使一个产品完全通过了验证,它仍然可能无法满足用户的需求,即未通过确认。
例如,一个电子表格在验证阶段可能完全按照规定的需求制作,但在实际使用中,用户可能发现它并不能帮助他们提高效率或减少错误。这就意味着,这个电子表格在验证阶段是成功的,但在确认阶段失败了。
这是因为,虽然验证和确认都关注产品是否能满足用户需求,但两者的侧重点不同。验证主要关注产品是否按照规定的需求进行建造,而确认则关注产品在实际使用中是否能满足用户的实际需求和期望。因此,理解验证和确认的区别,并在产品开发过程中正确地应用它们,对于开发出既符合规定需求又能满足用户实际需求的产品是非常重要的。
验证和确认有什么区别?
当你在考虑验证和确认时,你可能对这两者之间的区别感到不确定。哪些活动属于确认范畴,哪些属于验证,你应该在何时执行每个活动?
假设你正在努力开发一个产品,此刻该进行验证测试了,因为验证总是在确认之前进行。在这个过程中,你会检查文档、设计、代码和程序,以确保软件按照需求被正确构建。目标是确保应用程序或设计的质量。你可能会执行如审查、演练或检查等活动。例如,在医疗设备行业,验证通常在产品的“设计等效”配置阶段进行。而确认通常在产品的“生产等效”阶段进行,这是根据820.30(g)的规定。
现在,是时候转向确认了。在这个过程中,你正在测试和确认产品是否满足客户的需求。这个过程中可能包括的任务有单元测试、集成测试或用户测试。正如我们在文章的开头所述,验证过程确保软件满足规格。而确认过程则关注软件是否满足最终用户的期望和需求。
使用需求管理软件优化验证和确认阶段的协作
对系统工程师来说,能够追踪数据类型之间的关系是至关重要的。然而,当需求、规格和验证文件都存在多个层次,且每个层次都有各自的利益相关者在执行各种任务时,可能会出现问题。
合适的软件解决方案可以简化复杂的情况,并使你能够追踪数据。你可以分析潜在变化的”谁”、”什么”、”在哪”、”为什么”,并确保重要数据不会被忽视。寻找一个能做到以下几点的软件解决方案:
- 将测试用例从问题陈述连接到你的需求和设计。如果你没有这个能力,你就无法确保没有忽视重要的事情。
- 将系统需求连接到业务和利益相关者的需求。如果你错过了一个关键的连接,你可能会面临未预计的费用,这可能会产生连锁反应,导致产品推出延迟,削弱利益相关者的信心,对最终利润产生负面影响。
- 改善分解。将低级需求与高级需求相关联至关重要,以确保所有组件和子组件都能组合成一个功能系统。在这个领域的错误可能导致额外的成本,因为你必须努力将部件重新组合,并在产品开发过程的后期实施更改。
一个软件解决方案是一种关键工具,可以帮助你管理验证和确认过程,并确保在整个系统生命周期中,每一项工程活动都相互联系。在一个地方捕获所有的沟通内容,并将所有的利益相关者集合在一起,实时全面地了解团队正在构建什么以及为什么构建,这是非常关键的。
走向未来
如果测试阶段没有得到妥善的规划,它可能会成为产品开发中最昂贵的部分。因此,集成验证和确认的过程是至关重要的,以确保节约成本并保证产品的高质量。如果最后产品未能达到最初设定的目标,那么投入的时间、金钱和努力都将被浪费。
幸运的是,当团队成员和数据能够与产品开发的活动和交付结果保持同步时,公司可以更快地将产品推向市场。利用创新的需求管理软件工具,可以轻松地缩短从创意阶段到价值创造和性能提升的时间。
需求管理
需求管理指南:
需求管理: 需求管理主要内容 | 需求管理的重要性 | 采用敏捷方法进行需求管理 | 如何克服需求管理的 5 大挑战 | 更多
需求编写: 功能需求的示例和模板 | 采用 EARS 方法来改进需求工程 | 如何编写一份优秀的产品需求文档(PRD) | 功能性需求与非功能性需求的区别 | 有效需求的特征 | 更多
需求收集和管理流程: 需求工程概述 | 产品团队的需求分析指南 | 敏捷产品团队的 11 种需求收集技巧 | 定义和实施需求基线 | 更多 需求的可追溯性: 什么是需求可追溯性 | 可追溯性在现代产品和系统开发中的关键作用 | 如何创建和使用需求追溯矩阵 | 更多
需求确认和验证: 产品团队的需求验证和确认 | 更多
需求管理领域文章:
做好需求分析的4大关键认知 | 盘点国内9款热门需求管理系统 | 构建产品路线图的方法与工具 | 做好需求优先级判断的7种主流模型 | 采用敏捷方法进行需求管理 | 更多
相关文章:
产品团队的需求验证和确认
需求核实过程是确保软件满足特定的规格要求,而验证则侧重于软件是否达到了最终用户的期望和需求。 如果你正在开发一种医疗产品,这种区别也可能在法规和标准中有所体现,例如: 820.30(f):设计验证应确认设计的成果符合…...

【JVM】类加载的过程
文章目录 类的生命周期加载验证准备解析初始化简要概括 类的生命周期 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载 (Loading)、验证(Verification)、准备…...
Golang 结构化日志包 log/slog 详解(四):分组、上下文和属性值类型
上一篇文章讲解了 log/slog 包中的自定义日志属性字段和日志级别,本文讲解下分组、上下文和属性值类型 分组输出 slog 支持将字段放在组中并且可以给分组指定名称。如何展示分组的内容,取决于使用的 handler,例如 TextHandler 使用点号分隔…...

小白学Python:提取Word中的所有图片,只需要1行代码
#python# 大家好,这里是程序员晚枫,全网同名。 最近在小破站账号:Python自动化办公社区更新一套课程:给小白的《50讲Python自动化办公》 在课程群里,看到学员自己开发了一个功能:从word里提取图片。这个…...
pip修改位于用户目录下的缓存目录
默认 pip 缓存目录: Windows: C:\Users\${用户名}\AppData\Local\pip\cache Linux: ~/.cache/pip 一、修改方式 1.命令方式 pip config set global.cache-dir "D:\kwok\data\pip-cache" 2.配置文件方式 ① Windows: C:\Users\${用…...

更新、修改
MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法: update 表名 列名该列新值, 列名该列新值, ... where 记录匹配条件; 说明:update 更新、修改 set 设置 …...

山西电力市场日前价格预测【2023-09-25】
日前价格预测 预测说明: 如上图所示,预测明日(2023-09-25)山西电力市场全天平均日前电价为442.30元/MWh。其中,最高日前电价为720.46元/MWh,预计出现在19: 00。最低日前电价为276.06元/MWh,预计…...
从collections库的Counter类看items()方法和enumerate()方法
下面的代码是针对文件的词频统计,使用了collections库及其Counter类 import collections def count_word_frequency(text): words text.lower().split() word_counts collections.Counter(words) return word_counts def count_fileword_frequency(fi…...
2023-09-24 LeetCode每日一题(LRU 缓存)
2023-09-24每日一题 一、题目编号 146. LRU 缓存二、题目链接 点击跳转到题目位置 三、题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存i…...

《计算机视觉中的多视图几何》笔记(10)
10 3D Reconstruction of Cameras and Structure 本章主要描述了如何利用2张图片来恢复相机的参数以及物体在三维空间中的形状。 文章目录 10 3D Reconstruction of Cameras and Structure10.1 Outline of reconstruction method10.2 Reconstruction ambiguity10.3 The proje…...

【一、虚拟机vmware安装】
安装虚拟机 下载 官方下载地址:https://www.vmware.com/cn.html 大概流程就是,最重要的事最后一步...

uniapp 离线打包 plus.runtime.install 安装页面不弹起
uniapp 离线打包 plus.runtime.install 安装页面不弹起 updateVersion(webview : any, eventTitle : string, eventContent : string) {const loading plus.nativeUI.showWaiting(准备下载);var dtask plus.downloader.createDownload(eventContent,{method: GET,timeout: 5…...

Docker 自动化部署(保姆级教程)
Docker 自动化部署 1. jenkins 介绍1.1 参考链接:1.2 jenkins 概述1.3 jenkins部署项目的流程 2. jenkins 安装2.1 基于docker 镜像2.2 启动 jenkins 后端服务2.3 登录 jenkins 服务后端 3. jenkins自动化部署开始3.1 下载需要的插件3.2 创建任务3.2.1 描述3.2.2 配…...

北工大汇编题——分支程序设计
题目要求 信息检素程序设计:在数据区,有9个不同的信息,编号 0-8,每个信息包括20 个字符。从键盘接收 0-8 之间的一个编号,然后再屏幕上显示出相应编号的信息内容,按“q”键退出 完整代码 DATAS SEGMENTn0…...

贴片电容耐压值选取和特性(包含实际电路和PCB)
一、一般电容的特性 ①容值大的电容,一般通低频率; ②容值小的电容,一般通高频率。 注:详细请看这位博主的篇文章: 大电容为什么虑低频小电容为什么又虑高频?(个人整理) 二、贴片电容的耐压选取 ①贴片电容有2…...
【云原生】kubernetes中pod(进阶)
目录 一、资源限制 业务cpu 内存 1.1CPU 资源单位 1.2 内存 资源单位 示例1 示例2: 二、健康检查:又称为探针(Probe) 2.1探针的三种规则 2.2 Probe支持三种检查方法 2.3示例 示例1:exec方式 示例3…...
Cesium 问题:获取高度值,高度值又是相对于谁来说的
文章目录 问题分析 问题 今天在开发中,甲方提出一个这样的问题,你的高度是怎么算出来的,对此,我只知道使用并不知道怎么来的,因此特意查了一番资料,希望帮助到大家 分析 在 Cesium 中,我们可以使…...
第三、四、五场面试
第三场 共享屏幕做题(三道简单题) 替换空格成%20(双指针) 删除升序链表中的重复元素(指针)有效的括号(栈) 第四场、第五场 自我介绍 项目拷打 整个项目架构rpc模块的情况分析的数…...

力扣-290.单词规律
Idea 先建立一个hashmap,记录s串中的每个单词以及对应的下标再建立一个hashmap,记录pattern串中相同字母以及对应的下标遍历pattern串时,遇到不同字母存到pat表中,同时将下标对应的s中的单词存入到查重test集中,因为如…...

常见限流算法学习
文章目录 常见限流算法学习前言限流算法基本介绍固定窗口计数器限流算法计数器限流算法相关介绍计数器限流算法的实现(基于共享变量)计数器限流算法的实现(基于Redis) 滑动窗口计数器算法滑动时间窗口算法相关介绍介绍滑动时间窗口…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...