【PMP/软考】软件需求的三个主要层次:业务需求、用户需求和功能需求解释及实例解析
简述
当进行需求分析时,通常着重考虑三个主要层次:业务需求、用户需求和功能需求。业务需求关注项目与组织战略目标的一致性,用户需求明确最终用户的期望,而功能需求定义具体的系统功能和特性。这三个层次为项目管理和软件工程提供了关键的指导,确保项目成功地满足用户和业务需求。需求分析的重点通常集中在这三个层次,以确保项目的成功交付。
此外,还包括系统需求、性能需求、可用性需求、安全性需求、数据需求、界面需求以及法规和合规性需求等。这些层次共同构成全面的需求分析,有助于确保项目满足各种技术、业务和用户方面的需求,以达到项目成功。
业务需求( Business requirement )
表示组织或客户高层次的目标。业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。使用前景和范围( vision and scope )文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求( project charter 或 market requirement )文档。
例如有个公司,一定要做一款“智能硬件”,其目的也许不是为了销售,只是正好上市,打造一个概念“涉足智能硬件”的概念,务必使用新技术,或者涉足新领域,便于资本市场炒作。那么这个产品需求分析的时候,就不能按部就班,按常理出牌。步子就是要大,哪怕扯到蛋,也要步子大。这就是“业务需求”的一种体现。所以在产品的需求分析阶段,要把“指导思想”搞清楚。
再例如我在华为做IPC的时候,指导思想是“华为要做监控安防领域的苹果”,占领技术制高点、产品制高点,避免同质化,避免陷入价格战。那么在这款产品的市场定位上,首先定义为“平安城市”+“高端园区”,所以在特殊功能,性能指标方面,追求极致;而在成本,复杂度上面做出妥协。
研发的人员一般也担心风险,进度,对于有挑战的需求往往会望而生畏。而且每个人的理念不一样。当时一位同事做廉价产品做出过成绩,降成本很有心得,所以死扣这款产品的成本。但是这款产品的指导思想很清晰,所以设计理念得以落实。这个产品的市场经理当时根据室外环境、园区环境供电距离远的特点,提出了“穷凶极恶”的概念(在恶劣的情况下能够正常工作),实际上会增加成本,也会增加电路的设计难度。但是为了差异化竞争,为了占领高端市场。
虽说需求都是可以讨论,但是如果研发理解了需求背后的原因,可能更容易去权衡各个需求的优先级。“多快好省”肯定是不可能兼得的,但是理解需求背后的原因之后,就可以更好的进行取舍和排序。
用户需求( User requirement )
描述的是用户的目标,或用户要求系统必须能完成的任务。用例、场景描述和事件――响应表都是表达用户需求的有效途径。也就是说用户需求描述了用户能使用系统来做些什么。
首先,对于用户需求,不要“意淫”,有的研发人员往往意淫出一些需求,因为程序员、硬件攻城狮往往会把自己放在客户的角色上,但是开发人员往往不具备客户的行业经验,或者不具备客户使用产品的场景。用主观意识去使用和认知产品,往往就往往不符合客户需要的原本的模样。
另外,对于运营商产品,客户的表述往往就是用户需求,因为客户是长期从事相关产品的使用,属于专业人员,专业能力较强,而且产品往往配套培训和材料;但是对于个人消费品或者是一些企业用户,用户说的往往并不是用户需求。因为
由于开发人员往往会把自己放置在用户的角度思考,往往就会出现需求的范围蔓延,无端的增加了很多原本没有讨论过的需求。避免需求在开发过程中的走样。往往我们需要进行“范围管理”。
项目范围的管理也就是对项目应该包括什么和不应该包括什么进行相应的定义和控制。它包括用以保证项目能按要求的范围完成所涉及的所有过程,包括:确定项目的需求、定义规划项目的范围、范围管理的实施、范围的变更控制管理以及范围核实等。项目范围是指产生项目产品所包括的所有工作及产生这些产品所用的过程。项目干系人必须在项目要产生什么样的产品方面达成共识,也要在如何生产这些产品方面达成一定的共识。
范围管理的目的是在项目开发过程中,出现范围蔓延。制约一个项目的条件是项目“三约束条件”——范围、时间、成本。
范围的蔓延,势必影响项目的时间和成本。
在一个项目中这三个条件是相互影响、相互制约的,而且往往是由于范围影响了时间和成本。项目一开始确定的范围小,那么它需要完成的时间以及耗费的成本必然也小,反之亦然。很多项目在开始时都会粗略地确定项目的范围、时间以及成本,然而在项目进行到一定阶段之后往往会变得让人感觉到不知道项目什么时候才能真正结束,要使项目结束到底还需要投入多少人力和物力,整个项目就好像一个无底洞,对项目的最后结束谁的心里也没有底。这种情况的出现对于公司的高层来说,他们是最不希望看到的,然而这样的情况出现并不罕见。造成这样的结果就是由于没有控制和管理好项目的范围。可见项目的三个约束条件中最主要还是范围的影响。
产品工程过程分为需求分析、概要设计、详细设计、编码、测试、安装试运行、验收等七个阶段,项目保障过程包括项目计划、项目跟踪与监督、需求管理、质量保证、配置管理、同行评审等保障性工作过程。上图也体现了各个环节对需求的控制和理解,这个过程管理的。
功能需求( Functional requirement )
规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求( behavioral requirement ),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。功能需求描述是开发人员需要实现什么。
对于硬件项目,在项目启动后,会写一个《需求规格跟踪表》。
需求为什么需要文档化呢?如果你开发出来的产品,被别的同事质疑,这也没有那也没有时,你一肚子委屈过,你就非常能够理解。
Ø开发人员通过文档化的过程查错补遗;
Ø便于评审,在早期发现技术上的问题;
Ø后续阶段开发任务可能由他人承担,输出文档便于他们开展工作;
Ø维护人员开展维护工作需要;
Ø文档是必要的交付件;
“所有的过程分析都要形成文档。我们现在有一个严重的问题是,大家好像不喜欢写文档,对于需要的实现方案,通常都是一个负责人在脑袋里想想该怎么实现,然后邮件或电话找几个相关人员讨论一下就算可以了,可能连个会议材料或会议纪要都没有。
而老外可不是这样的,他们非常非常重视文档,他们认为一个人在脑袋里想的东西是不清晰也不全面的,有时候心里想的认为很正确的方案实际上可能存在致命缺陷。他们要求必须把心里的想法形成文档才能有效地避免这种问题。写文档的过程中,可以更加有效的、更进一步去整理您原来心里的思路,很多问题在您写过文档的过程中您就能发现;
另外,文档写作多使用图表,浪费口水的文字尽量少用,和我们一起工作的系统工程师在系统架构分析中就画了五六十张图,就算看不懂他写的英文,从图中我们就能够很清晰的指导整个产品的系统架构。”
——摘自一位华为员工的瑞典出差报告
上面的表单的后面几列是在开发的各个阶段去检查,原先确定的需求、规格等数据是否变化。例如在原理图、PCB、测试阶段,去检查是否出现了需求丢失,或者发生需求变更。如果发生需求变更,需要记录原因,决策者。
- 系统需求( System requirement )
用于描述包含多个子系统的产品(即系统)的顶级需求。系统可以只包含软件系统,也可以既包含软件又包含硬件子系统。人也可以是系统的一部分,因此某些系统功能可能要由人来承担。最终决定市场对产品的综合评价是否满意。
对有很多子系统的巨大产品进行跟踪能力管理是一项巨大的工程,但这很必要。并不是所有的公司都会因为软硬件问题而造成严重的结果,然而应该严肃地对待需求跟踪,尤其对涉及你业务核心的信息系统。考虑了应用技术的成本和不使用的风险后,才能决定是否使用任何改进的需求工程实践。随着产品的发展,要把时间投向回报丰厚的地方。
需求管理系统包括模型管理、与WBS关联、版本管理、条目化管理、需求追踪、需求控制、模板管理、统计查询功能,系统组成结构如下图所示。
需求管理和需求跟踪是研发工程师的入口,所以我们需要重视和理解。
需求分配过程其实是一个多层次的循环过程,需要循环几次,取决于两个因素,一个是需求的复杂度,一个是企业研发组织的大小和组织方式。
我们举个复杂点的例子来看看这个过程。图3.4是一个企业的研发组织结构:
假设研发中心和下面4个部门都有需求管理团队[或需求管理人员(专职或兼职均可)],金融产品与解决方案部收到一个客户需求,经过分析,需要云计算业务部、通用技术开发部一起合作才能完成,但又无法直接调动这两个业务部的开发团队。因此需求首先要上升到研发中心层面进行决策(由需求管理团队1组织),云计算业务部、通用技术开发部的需求管理团队参与决策;决策通过后,再详细分析需求并进行需求的分发,确定需求的哪些内容由哪个部门完成,这个时候一个需求分解成了若干个子需求并分配到了各个责任部门。接到子需求的部门需对需求进行分析,确认技术可行性、实现的方案及交付团队(很有可能不止一个团队参与,这个时候需要再次分解分配,指导需求无法再分解)、交付版本及时间,并最后作出承诺,这才算这一条需求完成了所有的分发、分析、分解分配与决策过程。
因此,在组织复杂、需求复杂的情况,我们要制定需求的优先级排序及决策规则。同时为了快速地推出产品,就必须界定产品的范围,也就是说,不是所有的需求都能一次性实现,这也需要我们对需求进行优先级排序,并且设计针对跨产品线需求与产销矛盾的需求决策机制。
多数情况下,客户需求他们打算购买或正在使用的产品或服务具备一系列他们期望的特点、功能和特征。然而,在客户决定购买或再次购买产品或服务时,这些因素的影响力却不尽相同。无论他们有没有意识到,客户总会优先排序产品/服务特点,并根据排序结果进行决策。
相对重要性是描述客户优先级的一个方法。客户的各种期望在客户作出购买决定时占有什么样的重要地位。优先级排序结果是客户对某产品/服务的各项功能性特点的相对重要性衡量的结果。
有了客户优先级,公司也应有一个独立的评估。对客户而言重要的需求未必对公司重要。需求可以是必须的(承诺的)或非必须的(承诺的)。公司对非必须性需求的优先级排序按照高、中、低的尺度进行,排序时至少应考虑以下要素:
(1)客户优先级
(2)对公司的益处(最好是定量的)
(3)工作量(如粗略估计编码行)
(4)风险(高/中/低)
比较完善的考虑维度,在实际使用时,也可以酌情裁判。
如果是一个初创公司,想去做教育领域的机器人,我们的思路是什么?如果是一个大型的教育商业机构,想拓展新的业务,想拓展教育机器人领域,我们的思路是什么?如果是一个公立学校,想提高学生的素质,开展机器人教育,我们的思路又是什么?请注意,这三者的客户群体可能有很大程度上的重合交叠。但是需求的分析结果一定是大相径庭的。我们在做需求分析的时候需要考虑的三大要素是:
第一个要考虑的要素:组织的战略目标是什么。战略是公司应对商业问题的态度和基本面,决定投入资源的多少、切入市场的策略等。资源的多寡,往往决定我们解决问题的方式。切入市场的策略,往往决定我们的时间成本。
初创公司纵有豪情驰骋天下,但也得面对现金流的问题;获得巨额投资的企业,没有短期现金流的问题,但要面对股东、资本的巨大压力,也要考虑烧钱之后是否还有生命力的问题;公立学校看似没有挣钱的压力,但有行政指标的压力,其不比资本压力小。
第二个考虑的要素就是项目的目标是什么,越具体越好。我是初创公司,我的第一个产品只是解决有无的问题,也许不完美,但是可以销售的产品(实物和教案),竞争力在市场上属于中等。配合合适的营销策略,可以解决第一步的生存问题,预计销售额多少,面对的客户群里是多大年龄、什么学校的学生……现实一点没什么不好,饭要一口口吃,活要一件件做。千万不要成为一些莫须有的理想和柏拉图世界的牺牲品。
第三个考虑的要素是环境因素。比如说教育行业的政策变化,未来几年的行业变化趋势,周边社区的环境、法律的约束、行业要求等。简单地说一下,现在面对低龄孩子的教育机器人行业,能很好规避国家对学生减负的要求。工业产品销售的时候,只要客户没有要求就可以不做3C认证。如果是消费类产品,不管最终用户有没有提3C认证,只有在中国销售的产品,都需要做3C认证。
相关文章:

【PMP/软考】软件需求的三个主要层次:业务需求、用户需求和功能需求解释及实例解析
简述 当进行需求分析时,通常着重考虑三个主要层次:业务需求、用户需求和功能需求。业务需求关注项目与组织战略目标的一致性,用户需求明确最终用户的期望,而功能需求定义具体的系统功能和特性。这三个层次为项目管理和软件工程提…...
Linux基础知识 总结
Linux基础知识 总结 1、Clion的简单介绍 CLion是以IntelliJ为基础,专为开发C及C所设计的跨平台IDE,可以在Windows、Linux及MacOS使用,这里我是在ubuntu 16.0.4基础上安装。2、下载 Linux版Clion的.tar.gz的压缩包 wget https://download.j…...

网上申请流量卡要不要身份证?填写的信息安全吗?
网上申请流量卡要不要身份证?当然是要的! 现在直接从营业厅办理流量卡的很少了,都是直接在网上申请大流量卡,在这里小编提醒大家,在网上申请大流量卡和激活时都是需要提供个人证件的。 申请时提供身份证号是为了运营…...

关于计算机缺失vcruntime140.dll文件的解决方法分享
在计算机系统中,DLL(动态链接库)是一种特殊的文件类型,它包含了可以被多个程序共享的代码和数据。其中,VCRuntime140.dll是一个由Microsoft Visual C Redistributable package提供的运行时库文件,它为许多M…...

华为乾坤区县教育安全云服务解决方案(2)
本文承接: https://blog.csdn.net/qq_37633855/article/details/133276200?spm1001.2014.3001.5501 重点讲解华为乾坤区县教育安全云服务解决方案的部署流程。 华为乾坤区县教育安全云服务解决方案(2) 课程地址解决方案部署整体流程组网规划…...
PL/SQL异常抓取
目录 1. -- 什么是异常 2. 如何捕获预定义异常? 3.捕获异常的两个函数 SQLCODE :为错误代码返回一个数值 SQLERRM : 返回字符串的数据,包含了与错误相关的信息. 1. -- 什么是异常 DECLARE V_JOB EMP.JOB%TYPE; BEGIN SELECT JOB INTO V_JOB FROM EMP WHERE JOB CLERK; D…...

Java 18的未来:新特性和编程实践
文章目录 引言新特性预览1. 基于值的类的进一步改进2. 模式匹配的增强3. 新的垃圾回收器4. 扩展的模块系统5. 更强大的异步编程 编程实践示例1:基于值的类示例2:模式匹配的增强示例3:新的垃圾回收器 结论 🎉欢迎来到Java学习路线专…...
2024快手校招面试真题汇总及其解答(三)
11. 联合索引 联合索引是指包含多个列的索引,与之概念相对的是单列索引,仅包含一个数据列。在大多数情况下,建立多列索引的好处都要多于单列索引。 联合索引的优点 联合索引的优点如下: 提高查询效率:联合索引可以提高查询效率,特别是对于复杂的查询条件。减少磁盘IO:…...

【QandA C++】内存泄漏、进程地址空间、堆和栈、内存对齐、大小端和判断、虚拟内存等重点知识汇总
目录 内存泄漏 内存模型 、进程地址空间 堆和栈的区别 内存对齐 大端小端及判断 虚拟内存有什么作用 内存泄漏 概念: 是指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况, 内存泄漏并不是指内存在物理上的消失, 而是应用程序分配了某段内存后, 因为设计错误…...

怒刷LeetCode的第12天(Java版)
目录 第一题 题目来源 题目内容 解决方法 方法一:贪心 第二题 题目来源 题目内容 解决方法 方法一:双指针 方法二:KMP算法 方法三:indexOf方法 方法四:Boyer-Moore算法 方法五:Rabin-Karp算法…...

RabbitMQ实现秒杀场景示例
本文章通过MQ队列来实现秒杀场景 整体的设计如下图,整个流程中对于发送发MQ失败和发送到死信队列的数据未做后续处理 1、首先先创建MQ的配置文件 Configuration public class RabbitConfig {public static final String DEAD_LETTER_EXCHANGE "deadLetterE…...

如何提升网站排名优化(百度SEO优化,轻松提升排名)
在当今互联网时代,拥有一个优秀的网站是很重要的。而一个网站如果能够在搜索引擎上的排名很靠前,那么将会带来更多的流量、更多的用户和更多的利润。那么如何提升网站排名优化呢?蘑菇号www.mooogu.cn 百度SEO优化的5个规则 1.关键词选取要合…...
CountDownLatch 和 CyclicBarrier 用法以及区别
在使用多线程执行任务时,通常需要在主线程进行阻塞等待,直到所有线程执行完毕,主线程才能继续向下执行,主要有以下几种可选方式 1. 调用 main 线程的 sleep 方法 一般用于预估线程的执行时间,在主线程内执行线程sleep…...

9.9喝遍“茶、奶、果、酒”,茶饮价格战是因为“无活可整”?
“家人们谁懂啊,周一瑞幸周二奈雪周三茶百道周四库迪周五古茗周六coco,9块9根本喝不完!” 紧随咖啡的9.9大战,茶饮们也在今年加速“蜜雪冰城化”,9.9变成了一种潮流。伴随着茶百道、coco、奈雪的茶等品牌把9.9玩出了更…...
echarts 学习网址
1、PPChart 网址:PPChart - 让图表更简单 2、YX-Chartlib 网址:http://chartlib.datains.cn3、isqqw 网址:echarts图表集4、makeapie 网址:makeapie echarts社区图表可视化案例5、Chart.Top 网址:chart.top - 让图…...
android源码编译
整包编译 导入环境变量 source ./build/envsetup.shlunch:选择平台编译选项make:执行编译 编译单个apk 进入到apk mk所在路径 mma...

盘点双电机驱动技术
对于电动汽车来说,双电机相对于单电机加主减速器或变速箱的方案在提高驱动效率方面的优势: 第一,单电机在低速、高速轻载等情况下,效率降低比较严重。 电动机的高效区间虽然比内燃机大得多,但是汽车的转速和转矩要求…...

ubuntu下用pycharm专业版连接AI服务器及其docker环境
一:用pycharm专业版连接AI服务器 1、首先在自己电脑上新建一个文件夹,后续用于映射服务器上自己所要用的项目文件 2、用pycharm专业版打开该文件夹,作为一个项目打开 3、然后在工具->部署->配置 4、配置中形式如下: 点击左…...
IntentFilter笔记
一、action <intent-filter>中可以有多个action,Intent只要匹配其中1个action即匹配成功<intent-filter>没有action,任何Intent无法与之匹配<intent-filter>中有action,Intent中没有action时可以与之匹配成功<intent-fi…...

【二叉树】——链式结构(快速掌握递归与刷题技巧)
📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 👍…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...