有效需求的特征
如何区分优秀的软件需求和软件需求规格说明书(SRS)与可能导致问题的需求和规格说明书?在这篇文章中,我们将首先讨论单个需求应该具有的几种不同特性。然后,我们将讨论成功的SRS整体应具有的理想特征。
1.有效需求的特性
在理想的环境下,每个单独的用户需求、业务需求和功能需求都会展现出以下各节所述的特质。
完整性
每个需求都必须全面地描述预期交付的功能,必须包含所有开发者需要用于设计和实施该功能的信息。如果发现某些信息缺失,最好用“待定”(TBD)标记出。在继续推进项目前,必须解决每个需求中标记“待定”的问题。
没有任何规定你需要在建构开始之前让整个需求集合完整。在大多数情况下,你永远无法达到这个目标。然而,使用迭代或增量开发生命周期的项目应该有一套完整的需求集合,供每次迭代使用。
如果使用的是最低规格要求,不同的人可能会基于不同的假设和决策来填补空缺部分,每个人就会按照自己的理解来执行任务。口头保留需求信息也会导致业务分析师、开发者和测试人员对需求集的理解不同。
正确性
每个需求都必须准确地描述预期构建的功能。
我们应当依据真实世界的需求作为参考,如真实用户或更高级别的系统需求。如果软件需求与父系统需求冲突,则该需求就是错误的。只有用户代表能决定用户需求(例如用例)是否正确,所以用户或其代理人必须认真要审查需求。
可行性
每个需求的实施必须在系统及其运行环境的已知能力和限制之内。为了避免指开发法达成的需求,让开发人员在整个需求完善过程中与市场部门或BA一起工作是必要的。
开发人员可以提供实际的反馈,告诉你在技术上哪些需求是可以实现的,哪些是不能实现的,以及哪些需求虽然能实现,但成本过高。增量开发方法和概念验证原型是两种可以用来评估需求是否可行的方法。
必要性
每个需求都应该描述利益相关者真正需要的功能,或者为了满足外部系统需求或者标准而必须具备的功能。每个需求都应该由有权力提出需求的人或团体提出。要追溯每个需求的来源,比如用户需求(用例)、业务规则或其他有价值的来源,以确保需求的合理性和必要性。
优先级
对每一个功能需求、特性、用例或用户故事进行优先级排序,以表明它们对于特定产品版本的重要性。如果所有的需求被视为同等重要,那么当面临预算削减、项目超出预定时间、人员流失或在开发过程中新增需求等情况时,项目经理会很难做出决策。因此,对需求进行优先级排序是成功进行迭代开发的关键因素。
明确性
所有阅读需求声明的人都应该得到同样的、一致的理解,但是由于自然语言的复杂性,往往容易产生歧义。所以应当使用简单、明了、直接的语言来编写需求,这种语言应当适应用户领域的特性。”可理解性”是一个和”无歧义性”关联的需求质量目标:读者需要能够理解每个需求所表述的内容。在词汇表中,我们应当对所有的专业术语以及可能引起读者困惑的术语进行定义。使用需求模板,如EARS模型,是确保需求以简洁、明确的语言编写的一种有效方法。
可验证性
你应该考虑是否能设计出一些测试,或者采取其他验证方法,比如检查或者示例演示,以确定产品是否正确地实现了每个需求。如果一个需求不能被验证,那么确定它是否被正确实现就变成了一种主观判断,而不是基于客观事实的分析。那些不完整的、矛盾的、无法实现的或者含糊不清的需求也是无法进行验证的。
2.有效软件需求规范说明的特点(SRS)
拥有优秀的个别需求语句并不足够。汇集成软件需求规格说明(SRS)的需求集合应该展示以下各节描述的特性。
完整性
SRS(软件需求规格书)中不应该缺少任何需求或者必要的信息。缺失的需求很难被察觉,因为它们并不存在!将注意力集中在用户的任务上,而不是系统的功能上,可以帮助你防止信息的不完整。Karl Weigers是《软件需求,第三版》的作者,他说:“我不知道有什么方法可以百分之百确定你没有遗漏任何一个需求。”他的书中有一章提供了一些建议,让你可以检查是否漏掉了一些重要的需求。
一致性
一致的软件需求不应该与同类型的其他需求或者更高级别的业务需求、系统需求或用户需求有所冲突。在进一步进行开发之前,需要解决所有的需求冲突。如果你发现两个需求之间存在冲突,你可能需要通过进一步的研究才能知道哪一个(如果有的话)是正确的。记录每个需求的来源可以帮助你在发现软件需求规格说明书中存在冲突时,知道应该去找谁进行讨论。
可修改性
你应当有能力在需要的时候修订软件需求规格说明(SRS),并能追踪到每个需求的修改历史。这意味着每个需求都需要被唯一地标记,并且与其他需求分开表达,以便你可以清晰地引用它。
每个需求应当只在SRS中出现一次。如果在一个复制的需求上只改动一处,很容易产生矛盾。所以,应考虑把后面出现的同样的需求通过交叉引用指向原先的需求,而不是复制需求。目录和索引可以使SRS更易于修改。把需求保存在数据库或者商业需求管理工具中,可以使这些需求变成可重复使用的对象。
可追溯性
可追溯的需求可以向后链接到其来源,向前链接到实现该需求的设计元素和源代码,以及验证实现是否正确的测试用例。可追溯的需求会被赋予独一无二、持久的标识符。它们应当以结构化、细粒度的方式编写,而不是写成长篇的叙述性段落。你应该避免把多个需求整合到一条声明中,因为每个需求可能会关联到不同的设计元素和代码部分。
3.怎么确保需求和软件需求规范(SRS)具备上述特征?
确保需求和软件需求规范(SRS)符合上述标准的最佳方法,是让项目中的多个利益相关者都参与审核编写好的SRS。不同的利益相关者会从不同的角度发现不同类型的问题。例如,分析师和开发人员并不会对需求的完整性或正确性进行评估;而用户也不会去评估技术的可行性。
创建符合所有标准的SRS不是件容易的事。然而,如果在编写和审核需求时我们始终牢记这些标准,那么最终所编写的需求文档质量就会更高,更利于我们交付出优质的产品。
需求管理指南:
需求管理: 需求管理主要内容 | 需求管理的重要性 | 采用敏捷方法进行需求管理 | 如何克服需求管理的 5 大挑战 | 更多
需求编写: 功能需求的示例和模板 | 采用 EARS 方法来改进需求工程 | 如何编写一份优秀的产品需求文档(PRD) | 功能性需求与非功能性需求的区别 | 有效需求的特征 | 更多
需求收集和管理流程: 需求工程概述 | 产品团队的需求分析指南 | 敏捷产品团队的 11 种需求收集技巧 | 定义和实施需求基线 | 更多 需求的可追溯性: 什么是需求可追溯性 | 可追溯性在现代产品和系统开发中的关键作用 | 如何创建和使用需求追溯矩阵 | 更多
需求确认和验证: 产品团队的需求验证和确认 | 更多
需求管理领域文章:
做好需求分析的4大关键认知 | 盘点国内9款热门需求管理系统 | 构建产品路线图的方法与工具 | 做好需求优先级判断的7种主流模型 | 采用敏捷方法进行需求管理 | 更多
相关文章:
有效需求的特征
如何区分优秀的软件需求和软件需求规格说明书(SRS)与可能导致问题的需求和规格说明书?在这篇文章中,我们将首先讨论单个需求应该具有的几种不同特性。然后,我们将讨论成功的SRS整体应具有的理想特征。 1.有效需求的特…...
基于51单片机无线温度报警控制器 NRF24L01 多路温度报警系统设计
一、系统方案 1、本设计默认采用STC89C52单片机,如需更换单片机请联系客服。 2、接收板LCD1602液晶实时显示当前检测的2点温度值以及对应的上下限报警值。发射板由DS18B20采集温度值,通过无线模块NRF24L01传给接收板。 3、按键可以设置温度上下限值&…...
Spring Data JPA的@Entity注解
一、示例说明 rules\CouponTypeConverter.java Converter public class CouponTypeConverterimplements AttributeConverter<CouponType, String> {Overridepublic String convertToDatabaseColumn(CouponType couponCategory) {return couponCategory.getCode();}Overr…...
CANoe panel中,Path Dialog如何保存选择的文件路径
这里写目录标题 Path Dialog控件的设置系统变量和环境变量 Path Dialog控件的设置 过滤加载的文件类型 填写格式为:Hex file |.hex 其中Hex file为自定义name,.hex为你想识别的文件类型 系统变量和环境变量 系统变量:在canoe的Environmen…...
关于es中索引,倒排索引的理解
下面是我查询进行理解的东西 也就是说我们ES中的索引就相当于我们mysql中的数据库表,索引库就相当于我们的数据库,我们按照mapping规则会根据相应的字段(index为true默认)来创建倒排索引,这个倒排索引就相当于我们索引…...
k8s service (二)
K8s service (二) Endpoint Endpoint是kubernetes中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod访问地址,它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成,这些Pod通过Endpoints…...
桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?
一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…...
SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习
SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习(增删改查的操作) 上一篇我们的项目搭建好了,也写了简答的Junit测试类进行测试,可以正确映射…...
学习笔记:Opencv实现限制对比度得自适应直方图均衡CLAHE
2023.8.19 为了完成深度学习的进阶,得学习学习传统算法拓展知识面,记录自己的学习心得 CLAHE百科: 一种限制对比度自适应直方图均衡化方法,采用了限制直方图分布的方法和加速的插值方法 clahe(限制对比度自适应直方图…...
R语言处理缺失数据(1)-mice
#清空 rm(listls()) gc()###生成模拟数据### #生成100个随机数 library(magrittr) set.seed(1) asd<-rnorm(100, mean 60, sd 10) %>% round #平均60,标准差10 #将10个数随机替换为NA NA_positions <- sample(1:100, 10) asd[NA_positions] <- NA #转…...
SpringBoot自动配置原理
Spring Boot 的自动配置可以根据添加的jar依赖,自动配置 Spring Boot 应用程序。例如,我们想要使用Redis,直接在POM文件中增加spring-boot-starter-data-redis依赖,然后我们配置下连接信息就可以使用了。 那么Spring Boot 是如何…...
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 五)
管理应用拥有的状态概述 LocalStorage:页面级UI状态存储 LocalStorage是页面级的UI状态存储,通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内,页面间共享状态。 本文仅介绍LocalStora…...
Java基础篇——反射枚举
反射&枚举 课程目标 1. 【理解】类加载器 2. 【理解】什么是反射 3. 【掌握】获取Class对象的三种方式 4. 【掌握】反射获取构造方法并创建对象 5. 【掌握】反射获取成员变量并使用 6. 【掌握】反射获取成员方法并使用 7. 【掌握】反射综合案例 8. 【理解】枚举B友:http…...
每日一学——案例难点Windows配置
在Windows上配置DNS服务器有几个步骤: 步骤1:打开网络连接设置 在任务栏上右键单击网络图标,并选择“打开网络和Internet设置”。 在新窗口中,选择“更改适配器选项”。 在打开的窗口中,找到正在使用的网络适配器&a…...
2023.8 - java - 运算符
Java 运算符 算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 算术运算符 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 表格中的实例假设整数变量A的值为10,变量B的值为20: …...
推荐三款Scrum敏捷项目管理工具/敏捷管理实践
免费版敏捷工具推荐: Leangoo领歌 Leangoo领歌是ScrumCN(scrum.cn)旗下的一款永久免费的专业敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、缺陷管理、统计度量等。包括小…...
WARNING: undefined behavior - version of Delve is too old for Go version
在更新了 go 版本后,使用 goland 进行调试会报错 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.5 (maximum supported version 1.19)这是因为 go 的版本升级后,相对 dlv 的版本就低了。 所以解决办法就是升级对应的…...
https非对称加密算法
非对称加密算法原理 在客户端公开公钥,服务端保存私钥 1.客户端第一次请求先请求443端口,从443端口下载公钥。 2.客户端将数据进行公钥算法进行加密,将秘文发送到服务端 服务端收到秘文后,通过私钥算法进行解密得到明文数据。…...
“深入探索JVM:Java虚拟机背后的奥秘“
标题:深入探索JVM:Java虚拟机背后的奥秘 摘要:本文将深入探索Java虚拟机(JVM)的内部工作原理和关键组成部分,揭示JVM背后的奥秘。通过对类加载机制、内存管理、垃圾回收、即时编译等方面的详细介绍&#x…...
树莓派系统入门教程(三)—— 使用Windows上的VSCode远程连接树莓派进行Python开发
树莓派系统入门教程(三)—— 使用Windows上的VSCode远程连接树莓派进行Python开发 1. 安装VSCode和SSH扩展2. SSH连接配置3. 连接到树莓派4. 运行Python程序5. 建议和注意事项 很多开发者更喜欢在大屏幕和强大的开发环境中编写代码,但同时他们…...
如何使用HTML5新增的标签来优化SEO?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用HTML5新增的标签来优化SEO?⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对…...
LVS之keepalived
1、keepalived 概述 总结:Keepalived 软件就是通过VRRP协议来实现高可用功能。 应用场景:企业应用中,单台服务器承担应用存在单点故障的危险 单点故障一旦发生,企业服务将发生中断,造成极大的危害 VRRP通信原理&…...
Linux(入门篇)
Linux(入门篇) Linux概述Linux是什么Linux的诞生Linux和Unix的渊源GNU/LinuxLinux的发行版Linux VS Windows Linux概述 Linux是什么 Linux是一个操作系统(OS) Linux的诞生 作者:李纳斯托瓦兹(git也是他开发的😂&am…...
如何构造不包含字母和数字的webshell
利用不含字母与数字进行绕过 1.异或进行绕过 2.取反进行绕过 3.利用php语法绕过 利用不含字母与数字进行绕过 基本代码运行思路理解 <?php echo "A"^""; ?> 运行结果为! 我们可以看到,输出的结果是字符"!"。之所以会…...
springboot(JavaCV )实现视频截取第N帧并保存图片
springboot(JavaCV )实现视频截取第N帧并保存图片 现在视频网站展示列表都是用img标签展示的,动图用的是gif,但是我们上传视频时并没有视屏封面,就这需要上传到服务器时自动生成封面并保存 本博客使用jar包的方式实现…...
Linux面试笔试题(5)
79、下列工具中可以直接连接mysql的工具有【c 】。 A.xhsell B.plsql C.navicat D.以上都不是 Navicat 是一套可创建多个连接的数据库开发工具, 让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、 SQL Server、Oracle、PostgreSQL和 SQLite 。它与…...
WordPress文章:创建和优化您的网站内容
WordPress是一种流行的内容管理系统(CMS),用于创建和管理网站。无论您是个人博客作者、企业网站管理员还是电子商务店主,WordPress都是一个强大而灵活的平台,可帮助您展示和传达您的信息。本文将为您提供一些关于创建和…...
Selenium webdriver_manager根据浏览器版本自动下载对应驱动程序
前言 webdriver_manager是什么? webdriver_manager 是 Python 中的一个库,用于管理 Web 驱动程序。它的作用是自动下载和设置不同浏览器(如 Chrome、Firefox、Edge 等)的 Web 驱动程序,以便在自动化测试中使用这些浏…...
2023 - java - 强制类型转换和装箱
强制类型转换和装箱: 在 Java 中,(Integer) 和(int) 是两个不同的类型转换操作符,它们的效果是不一样的。 int a (Integer) t.getContent(); 这条语句使用了装箱(Boxing)操作,将一个整数对象(…...
使用ansible自动化部署Kubernetes
使用 kubeasz 部署 Kubernetes 集群 服务器列表: IP主机名角色192.168.100.142kube-master1,kube-master1.suosuoli.cnK8s 集群主节点 1192.168.100.144kube-master2,kube-master2.suosuoli.cnK8s 集群主节点 2192.168.100.146kube-master3,kube-master3.suosuoli…...
使用编辑字母做免费网站/官方网站百度一下
可在API下,ctrlF 查找arrays, Arrays类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。 在此列出几个常用的: 1.static String Arrays.toString(数组类型…...
程序员找工作的网站/关键词首页排名优化价格
pcr实验室污水处理设备厂家介绍中、高等院校、科研院所、食品药品检验、产品质检所、疾控中心、环境监测、农产品质检、检验检疫、粮油检测、动物疾控、血站、畜牧、医疗机构、医院、生物制药、石油化工、p1实验室、p2实验室、p3实验室、prc实验室企业等实验室、化验室废水处理…...
重庆建网站价格/爱站网长尾关键词挖掘工具的作用
安防行业正在进入“去安防化”的时代。 旧的规则逐步瓦解,新的秩序,则以“科技跨界”的形式重塑。 何为去安防化?新的秩序又会如何重塑? 3月23日,雷锋网(公众号:雷锋网) & AI掘金志将在杭州举办第二…...
上海网站建设 觉策动力/互联网网络推广
sentinel 启动配置项 官网:https://sentinelguard.io/zh-cn/docs/general-configuration.html 启动配置项 参数设置 # 虚拟机设置:-Dkeyvalue,优先级最高 -Dcsp.sentinel.config.fileclasspath:sentinel.properties# 配置文件设置 -Dcsp.sen…...
成都建设厅网站/沈阳关键词seo
嗯,小子自己以前也为安装和卸载SQL2008、2005苦恼过。自己在网上从查找了好多资料,最终解决了自己的问题。下面的我将用两则博文来分享我所找到的有关于如何完全卸 载SQL2008、2005的方法。希望能够对大家有所帮助。 大家在卸载SQL 2008、2005时可以参考…...
网站如何做下载链接/能去百度上班意味着什么
golang UnitTest的书写规范和简单适用 规范: 单元测试文件名必须以xxx_test.go命名测试函数必须是TestXxx开头方法参数必须 t *testing.T测试文件和被测试文件必须在一个包中 示例: hello.go package mainfunc add(x int,y int)int{return xy }main_…...