项目需求分析定义的灵魂拷问

关注、星标嵌入式客栈,精彩及时送达

[导读] 项目开发,一般都是按照需求驱动开发整个开发过程的。需求是开发的源头,即便是自己DIY一个小东西,心中所想也是一种需求,所以一个项目是否成功,需求分析做的是否到位也是至关重要的。七夕情人节刚过完了,想来有的盆友或许深思倦怠,今天来分享一篇轻松的文章吧。

从搞笑开始

客户想要一款集美丽、智慧于一身的机器人,理想很丰满,可是现实很骨感。项目中不同的角色对这个需求理解各不相同,而表现传递的信息又有可能会大打折扣,所以最后交付造出来的产品与客户想要的相去甚远。

那么问题出在哪里呢?我以为需求失真是罪魁祸首!

  • 客户自己对需求理解失真

  • 设计人员对需求理解失真

  • 需求文档对需求描述失真

  • 开发人员对需求设计失真

  • .......

    那么对于需求的定义在项目的成功执行,就显得尤为重要了。再看一个关于小龙女形象的经典段子:

这不是终极版本,来看下颠覆三观的终极失控版本:

注:图片来源于网络,纯属调侃搞笑,不带任何歧视,侵删

所以对一个成功的项目而已,需求的作用就显得尤为重要了。

需求的SMART原则,SMART依次英文含义为聪明的,SMART对于需求而言,有哪些度量维度呢?

  • S:Specific 明确的

  • M:Measurable 可度量的

  • A:Achievable 可实现的

  • R:Realizable  可实现的

  • T:Traceable and Testable 可追溯及可测的

Specific明确原则

明确原则主要涵盖这样一些要点:

  • 需求描述的正确性?描述的需求本身必须是正确的界定某个功能,如果本身就是一个错误的描述,则设计实现就一定是错误的!需求描述的内容是否是需求方(可能是最终客户或者来源于市场产品管理人员)。这项需求真的是需求方所需吗?或者部分所需?或者完全错误?

  • 需求描述的唯一性?好的做法是将需求拆分成一个个条目,每一个条目描述一项明确精准的需求,相互之间不存在包含关系。

  • 需求条目是否在项目的范围内?有的需求可能天马行空,超出了项目预期的范围的事情时有发生。

  • 需求描述时否明确了该项需求的前提条件或者约束?

Measurable可度量原则

可度量,我的理解是体现精确性:

  • 需求描述的精确性?需求不要用模棱两可的描述,比如不可使用左右,上下,可能等,而尽量用精准的数字去描述。比如需要描述响应时间,推荐描述为响应时间须满足:

  • 需求描述的客观性?需求描述应采用客观描述语言,忌讳采用具有主管色彩的词汇,比如需求一个产品经理要求设计的UI界面,美观大方,容易操作,这样的需求是非常不易度量的,相信很多盆友或许又遭遇过这样的需求,也一定是非常恼火的。这样的需求你让设计咋整?一千个读者眼中就有一千个哈姆莱特,这样的描述太过主观,最后一定是撕逼扯皮的结局。

Achievable 可实现原则

凡是写入项目需求规格书中的条款理论上就是一份技术合同,需求方就是甲方,项目团队相当于乙方。所以界定需求是需要与甲方反复沟通,反复确认的,否则一旦写入规格书,临了发现臣妾做不到!最后又不免撕逼扯皮!

要实现需求规格书的可实现原则,并不是简单成员坐在一起,拍拍脑袋想想就定下来,这里对于一些具有挑战的技术难点、技术指标是需要做技术预研的,否则可实现就变成了觉得可实现,而非客观上真的可实现!对于是否可实现,可以提出这样些问题:

  • 项目团队是否具有这样的技术?

  • 关键技术指标能否满足要求?

  • 项目资源配置能满足要求?

  • 可实现是原则不是描述如何实现!需求描述的就是功能性或非功能性的要求,而不要描述设计方案

  • .......

双T可追溯可测原则

可追溯原则:

  • 后向追溯:所有的需求条目,理论上应有甲方(需求方)的源头

  • 后向追溯:所有的需求条目,都应有设计能对应保证,都应测试用例可验证。

可测试原则:

  • 需求条目,需要应尽量具有可测性

  • 需求阶段,理论上测试人员就应该参与讨论,从测试的角度来进行核定。

不良需求描述栗子

无法追溯(无标号)

  • 按下急停开关,系统须停机。(这里其实还不精确,应描述在多少时间内停机)

不可测

  • SR-1:系统须永不崩溃。

不精确

  • SR-2:系统应向用户提供快速反馈。(多快?)

无测量公差

  • SR-3:LED灯应闪烁间隔100毫秒(应定义正负偏差)

过于复杂

  • SR-4:按红色按钮将激活功能A,按蓝色按钮应使LED 1 闪烁而不是LED 2点亮,点亮LED 2通过黄色按钮实现。(应拆分)

描述实现

  • SR-5:按下按钮W将导致两个16位整数值相加,然后…

需求描述方法

实际项目中,不同的公司实际落地都各有各的特点,这里大致列举一些常见做法:

  • 文档描述法:属于常规方法,很多公司采用这样方案描述项目需求。

  • UML 用例法:利用UML用例图描述需求,这种方法比较直观,比如下图

  • 敏捷项目管理,采用用户故事描述(user story)

总结一下

项目开发,需求阶段是一个至关重要的阶段。如果在需求阶段不做足确认工作,需求分析描述做的很随意,开发过程及交付时不免掉进各种坑里。

本文辛苦原创,如喜欢请点赞/在看/分享支持,不胜感激!

END

往期精彩推荐,点击即可阅读

▲Linux内核中I2C总线及设备长啥样? 

▲学Linux驱动:应先了解总线驱动模型

▲看思维导图:一文带你学Verilog HDL语言

数据集介绍:神经元细胞核检测数据集 一、基础信息 数据集名称:神经元细胞核检测数据集 图片数量: - 训练集:16,353张 - 测试集:963张 分类类别: - Neuron(神经元细胞核):中枢神经系统的基本功能单位,检测其形态特征对神经科学研究具有重要意义。 标注格式: - YOLO格式,包含边界框坐标及类别标签,适用于目标检测任务 - 数据来源于显微镜成像,覆盖多种细胞分布形态和成像条件 二、适用场景 神经科学研究: 支持构建神经元定位分析工具,助力脑科学研究和神经系统疾病机理探索 医学影像分析: 适用于开发自动化细胞核检测系统,辅助病理诊断和细胞计数任务 AI辅助诊断工具开发: 可用于训练检测神经元退行性病变的模型,支持阿尔茨海默症等神经疾病的早期筛查 生物教育及研究: 提供标准化的神经元检测数据,适用于高校生物学实验室和科研机构的教学实验 三、数据集优势 大规模训练样本: 包含超1.6万张训练图像,充分覆盖细胞核的多样分布状态,支持模型深度学习 精准定位标注: 所有标注框均严格贴合细胞核边缘,确保目标检测模型的训练精度 任务适配性强: 原生YOLO格式可直接应用于主流检测框架(YOLOv5/v7/v8等),支持快速模型迭代 生物学特性突出: 专注神经元细胞核的形态特征,包含密集分布、重叠细胞等真实生物场景样本 跨领域应用潜力: 检测结果可延伸应用于细胞计数、病理分析、药物研发等多个生物医学领域
### 网络工程师面试常见难题及解答 #### 难题一:解释OSI七层模型及其每一层的功能 在网络工程领域,理解开放系统互连(Open System Interconnection, OSI)参考模型至关重要。此模型分为七个层次,从物理层到应用层依次为: - 物理层:负责定义电气、机械、过程和功能特性以建立、维护和拆除用于比特传输的物理链路连接;描述接口硬件特征。 - 数据链路层:提供节点间可靠的数据传输机制,并处理错误检测与纠正。 - 网络层:决定通过哪个路径到达目的地的最佳路由选择。 - 传输层:确保端到端通信的质量和服务水平协议(SLA),如TCP提供的可靠服务或UDP提供的尽力而为之的服务形式[^1]。 #### 难题二:阐述C3线性化算法在Python中的作用 对于熟悉编程语言特性的候选人来说,能够说明C3线性化(C3 Linearization)算法如何影响Python的新式类多重继承非常重要。当涉及到多个父类时,Python采用C3算法来计算方法解析顺序(Method Resolution Order, MRO),从而保证子类可以按照预期的方式调用基类的方法[^2]。 ```python class A(object): pass class B(A): pass class C(B): pass print(C.__mro__) # 输出 (<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>) ``` #### 难题三:讨论结构体内存对齐的原因 针对低级细节的理解也是考察的一部分。例如,在某些情况下,程序员可能注意到自己创建的结构体占用的空间大于所有成员变量所占空间之总和。这是因为编译器会自动向结构体中添加额外的填充字节,以便使每个成员相对于结构体起始处的位置满足特定平台所需的内存边界条件,进而提高访问速度并减少缓存未命中率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值