软件需求怎么写?

2023-09-14 17:50:28

前言:一般来说,软件产品的需求人员的主要输出物就是软件需求,如果这个软件产品就XX系统,人们口中的“系统需求”和“软件需求”就没有什么区别了。在车企行业,推行这ASPICE体系,在这个体系中明确申请了系统域和软件域,分别定义了系统需求和软件需求,那两者就有一些区别的。笔者作为一个开发转岗的软件需求,下文主要是在项目实战后结合《软件需求》的理论介绍,梳理出对于一名软需分析师,比较有益的编写指南。

1、 小故事

      是不是有些小小的沮丧??但这种情况确实又比较常见!既然不能做到完全避免,那如果降低发生的概率呢?

明确需求精确的程度,加强清晰的沟通,写出高质量的需求。

2、优秀需求的特点

       这个问题可以从两个方面来看,需求项和需求集。

2.1 需求项的理想特点

(1)完整性

     提供的信息可以让开发人员正确实现它,可以用TBD标识不确定项,并在过程中解决。

(2)正确性

     用户代表应审查需求

(3)可行性

     开发人员从技术角度检查实现的可行性,检查实现所需的时间、预算、人力等的可行性。

(4)必要性

     每个需求都应源自一个有权提供需求的途径。

(5)优先级顺序

     实现的先后顺序。

(6)无歧义

     不可能消除需求里所有的歧义,但评审时有同事的帮助可以清除大多数更严重的歧义。

(7)可验证性

     如不可验证,那是否正确实现将不是客观分析而是主观结果。测试人员擅长检查需求的可验证性。

       从7个维度来思考需求项的要求,也可以看出“评审”的重要性。在实施本工作之前,总觉得评审就是审核结果的形式,重点在于过与不过。但是学习此部分内容后,根深刻的理解了它所带有的讨论意义,也是基于此更明白我们实际操作评审中为什么总是会有那么多耗时的讨,因为需求本身也是强烈依赖“评审”以完善的。以软需分析人员的一己之力是不能做出好的需求的,这个工作是带有团队合作属性的。

2.2 需求集的理想特定

(1)完整性

     任何包含TBDSRS都是不完整的。

(2)一致性

     需求间如存在冲突,开发就要硬着头皮处理;记录每个需求的来源,不一致时找相关人员沟通。

(3)可修改性

     每个需求都有唯一标识,这样在必须修改的时候可以无歧义地引用和找出它们。

(4)追溯性

     回溯来源,向下追溯到设计、代码、测试。

需求集的理想特点,更倾向于整体的状态,以及域之间的追溯关系等。

永远不可能完美具备这些理想特点,但在写和评审时牢记这些,将得到更好的需求和软件。

3、需求编写指南

“套路”:

实践经历和来自相关者的反馈是最好的老师。

比如:同行审查)

“目标”:

①任何阅读需求的人对需求理解一致;

②每个读者的理解与作者试图表达的一致

相比教条地使用规则和简介的风格,表达所产生的最终效果更重要。

3.1 角度

从系统或者用户的角度来描写,以明确行为主体是谁能做什么。

3.2 写作风格

3.3 细化程度

       可以从“细节”和“粒度”两个维度思考细化程度问题,比如给外部客户的需求,细节上就应做到多场景;比如公司内部自研自用的,细节上就可考虑少场景;比如用少量用例就可以验证的需求可以粒度适宜即可,而需要大量不相关用例才可验证的,那就要拆分成粒度更细的场景。

3.4 表述技巧&避免歧义&避免不完整性

4、“优秀”举例

亮点:表格(信息清晰明确)、明确数字边界(无歧义)……

5、怎么做好需求?

    近期在一个行业分享视频中看到这样一个答复“要做到会提问!”,确实是的。

怎么提问呢?

——需格式就是一种笨但好用的办法,能保障基本信息不缺失。

软需格式:在XX情况下,XX模块/服务收到XX信号,进行XX的处理,输出XXX(如果有输出的话)。

——进阶款,就涉及到角色转换、经验等等。

依稀记得曾经在视频号看到的一个“需求挖掘”对话过程,略显搞笑,但是接近“崩溃”的追问。。。

后记:都说做需求很容易,但谁做谁知道,“痛苦程度”也要看个人的负责程度和公司的整体土壤。

与君共勉!

更多推荐

拿到第一个用户并提权

搭建环境真机安装python环境(python-IDE)java环境(java-IDE)PHP环境(phpstudy)火狐浏览器延长支持板(需要安装HackBar扩展插件)notepad++虚拟机安装kalilinuxWin10(CFT工具包,为防止有后门不安装在真机)拿到第一个用户权限并获取root权限1.信息探测探

修复Ripro主题扫码后空白或null或array的问题

WordPressRipro主题使用的人比较多,绝大部分用的盗版主题,RiPro主题使用虎皮椒V3支付接口在使用弹窗支付的时候,微信或者支付宝扫码后出现null或array,会发生在ripro所有版本中。下面是修复方法:打开ripro主题inc目录下的core-ajax.php文件,即如图位置进行编辑:服务器是宝塔的用

2023中国文化科技融交会 | 虚拟动力邀您共探数字人技术助力文旅产业数字化创新

2023年9月21日,由江苏省委宣传部、江苏省科学技术厅、江苏省委网信办、江苏省文化和旅游厅、江苏省广播电视局、南京市人民政府联合主办的2023中国(南京)文化和科技融合成果展览交易会在南京国际博览中心(元通)盛大开幕。展会亮点广|州|虚|拟|动|力作为深耕3D、AI虚拟人领域技术产品7年的提供商及解决方案提供商,广州

提升技术招聘有效性| 杜绝候选人刷题应试

企业在技术人员招聘中,时常出现候选人“笔试考高分,工作写Bug,绩效来垫底”的尴尬窘境,让企业倍感煎熬。不仅浪费时间精力、也增大招人的成本投入。如何招到真正合适的技术人选,成为摆在企业心头的难题。合适的技术人才,意味能满足实际工作的需求,而非仅有一堆理论知识储备。对企业而言,候选人解决实际问题的工程能力>理论知识。技术

【记录】深度学习环境配置(pytorch版)

1080面对Transformer连勉强也算不上了,还是要去用小组的卡完整记一个环境配置,方便后面自用✍️目前要简单许多,因为显卡驱动已经装好,后安装的库版本与其对应即可。nvidia-smi查看GPU信息**CUDA版本12.2conda-V查询conda版本22.9.0新建conda环境准备装python3.8co

【PyTorch 攻略(5/7)】训练和模型

一、说明训练模型是一个迭代过程。每次迭代称为纪元。该模型对输出进行猜测,计算其猜测中的误差(损失),收集误差相对于其参数的导数,并使用梯度下降优化这些参数。我们从这里加载前面的代码。%matplotlibinlineimporttorchfromtorchimportnnfromtorch.utils.dataimpo

1399: 最小生成树

题目描述最小生成树问题是实际生产生活中十分重要的一类问题。假设需要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然需要考虑这样一个问题,即如何在最节省经费的前提下建立这个通信网。可以用连通网来表示n个城市以及n个城市之间可能设置的通信线路,其中网的顶点表示城市,边表示两个城市之间的线路,赋于边

Python中的函数未定义的错误

前言:嗨喽~大家好呀,这里是魔王呐❤~!python更多源码/资料/解答/教程等点击此处跳转文末名片免费获取通过这个解释,我们将了解当Python程序显示类似NameError:name‘’isnotdefined的错误时,即使该函数存在于脚本中,也会出现这种情况。我们还学习了当我们使用拼写错误的变量或没有导入的内置函

Zookeeper集群 + Kafka集群

目录1、Zookeeper1.1Zookeeper概述1.1.1Zookeeper定义1.1.2Zookeeper工作机制1.1.3Zookeeper特点1.1.4Zookeeper数据结构1.1.5Zookeeper应用场景1.2Zookeeper选举机制1.3部署Zookeeper集群1.3.1安装前准备1.3.2

肖sir___环境的讲解详情__002

一、环境讲解1、jdk什么是JDK?JDK的作用?JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。包含了各种类库和工具,机器不是直接识别语言的,会借助工具的编译器,可以理解为翻译官,将一门语言翻译为机器可以识别的语言,Jdk能对Java进行编译,我们的工具

人机合作的有效性、安全性和可信度

确定人机协同中权力归属的原则和方法可以根据具体情境和任务的要求进行灵活选择。以下是一些常见的方法:专业领域授权:在专业领域中,权力可能更多地授予具有相关知识和经验的人类专家。他们能够理解和分析复杂的情况,并基于其专业判断做出决策。机器可以作为工具或辅助手段,提供数据分析、模型预测等支持。分工合作:根据任务的不同阶段或特

热文推荐