软件需求怎么写?

前言:一般来说,软件产品的需求人员的主要输出物就是软件需求,如果这个软件产品就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(如果有输出的话)。

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

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

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

与君共勉!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DMNet复现(一)之数据准备篇:Density map guided object detection in aerial image

一、生成密度图 密度图标签生成 采用以下代码,生成训练集密度图gt: import cv2 import glob import h5py import scipy import pickle import numpy as np from PIL import Image from itertools import islice from tqdm import tqdm from matplotli…

哈希及哈希表的实现

目录 一、哈希的引入 二、概念 三、哈希冲突 四、哈希函数 常见的哈希函数 1、直接定址法 2、除留余数法 五、哈希冲突的解决 1、闭散列 2、开散列 一、哈希的引入 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找…

浅析三维模型3DTile格式轻量化处理常见问题与处理措施

浅析三维模型3DTile格式轻量化处理常见问题与处理措施 三维模型3DTile格式的轻量化处理是大规模三维地理空间数据可视化的关键环节,但在实际操作过程中,往往会遇到一些问题。下面我们来看一下这些常见的问题以及对应的处理措施。 变形过大:压…

Vue入门--vue的生命周期

一.什么是Vue 二.Vue的简介 官方网址 特点 三. 前后端的分离 重大问题 优势 4.Vue入门 定义一个管理边界 ​编辑 测试结果 vue的优势 ​编辑 测试结果 5.Vue的生命周期 vue的生命周期图 ​编辑建立一个html 测试结果 一.什么是Vue Vue是一种流行的JavaScript前端框…

【Graph Net学习】GNN/GCN代码实战

一、简介 GNN(Graph Neural Network)和GCN(Graph Convolutional Network)都是基于图结构的神经网络模型。本文目标就是打代码基础,未用PyG,来扒一扒Graph Net两个基础算法的原理。直接上代码。 二、代码 …

无涯教程-JavaScript - MDETERM函数

描述 MDETERM函数返回数组的矩阵行列式。 语法 MDETERM (array)争论 Argument描述Required/OptionalArrayA numeric array with an equal number of rows and columns.Required Notes 数组可以作为单元格范围给出,如A1:C3;作为数组常量,如{1,2,3; 4,5,6; 7,8,9}&#xff1…

【刷题】蓝桥杯

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法,x y2 − z2(yz)(y-z) 即xa*b,ayz,by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是(r-l)*x&am…

服务网格和微服务架构的关系:理解服务网格在微服务架构中的角色和作用

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

六、串口通信

六、串口通信 串口接口介绍使用串口向电脑发送数据电脑发送数据控制LED灯 串口接口介绍 SBUF是串口数据缓存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器;读操作时,读出的是接收寄存器…

【uniapp】Dcloud的uni手机号一键登录,具体实现及踩过的坑,调用uniCloud.getPhoneNumber(),uni.login()等

一键登录Dcloud官网请戳这里,感兴趣的可以看看官网,有很详细的示例,选择App一键登录,可以看到一些常用的概述 比如: 1、调用uni.login就能弹出一键登录的页面 2、一键登录的流程,可以选择先预登录uni.prelo…

数据库----数据查询

1.6 查询语句 语法:select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制]1.6.1 字段表达式 mysql> select 锄禾日当午; ------------ | 锄禾日当午 | ------------ | 锄禾日当午 | ---…

C++---多态

多态 前言多态的概念多态的定义及实现多态的构成条件虚函数虚函数的重写虚函数重写的两个例外协变(基类与派生类虚函数返回值类型不同)析构函数的重写 override和final 虚函数的默认参数 抽象基类 前言 在买火车票的时候,如果你是学生,是买半价票&#…

微服务保护-Sentinel

初识Sentinel 雪崩问题及解决方案 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时&a…

基于SpringBoot的旅游系统

基于SpringBootVue的旅游系统、前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户 用户:浏览旅游…

Rockchip RK3399 - USB触摸屏接口驱动

---------------------------------------------------------------------------------------------------------------------------- 开发板 :NanoPC-T4开发板eMMC :16GBLPDDR3 :4GB 显示屏 :15.6英寸HDMI接口显示屏u-boot &…

三维模型3DTile格式轻量化压缩文件大小的技术方法研究

三维模型3DTile格式轻量化压缩文件大小的技术方法研究 倾斜摄影三维模型,由于数据量大、复杂度高,轻量化压缩成为其在网络传输和实时渲染中必不可少的环节。以下是几种常用的3DTile格式轻量化压缩技术方法: 几何简化:这是一种最…

K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName

第五章 Service 什么是 Service为什么需要 ServiceService 特性Service 与 Pod 关联Service type 类型如何使用 Service多端口配置 1 什么是 Service 1.1 定义 官网地址: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/ 将运行在一个或一组 Pod…

uniapp视频播放功能

UniApp提供了多种视频播放组件,包括视频播放器(video)、多媒体组件(media)、WebView(内置Video标签)等。其中,video和media组件是最常用的。 video组件 video组件是基于HTML5 vide…

iOS-砸壳篇(两种砸壳方式)

CrackerXI砸壳呢,当时你要是使用 frida-ios-dump 也是可以的; https://github.com/AloneMonkey/frida-ios-dump frida-ios-dump: 代码中需要更改的:手机中的内网ip 密码 等 最后放到我的砸壳路径里: python dump.py -l查看应用…