我们先看看下面一个在生活中谣言是如何产生的笑话:
A对B说:“听说老王家的鸡刚生出的蛋落地便破壳,马上变出了小鸡。”
B告诉C:“新鲜事,老王家的鸡生出的蛋,壳还没破,就变成了小鸡。”
C又对D说:“真怪,老王家的鸡直接生出了小鸡!”
D又对E说,E告诉了F,F告诉了G。
恰好G巧遇A,告诉A:奇迹,老王家的鸡竟然生出一只小乌龟!
这里涉及到2类传播,一是人,就是常说的沟通,另外是事情,就是要实现的需求,在项目上可以理解为需求在变形,客户说要做个刚出生的小鸡,然后项目组很辛苦也很努力的去做,最后很兴奋的给客户说,我们做了一个很漂亮的小乌龟,考虑到扩展性,我们还安了一对翅膀,你觉得是不是很满意吗?这些绝对能满足现在和将来的需求。真实情况是这样吗?很显然,传播的人越多,沟通渠道越复杂,传播的事情越失真。
需求实现的渠道也许象这样:客户->项目经理->需求分析员->设计师->程序员->测试->客户的循环。那么在公司里面最经常见到的场景就是
客户大骂项目经理:“这不是我要的”
项目经理对程序员说:“你想的太多了”
项目经理对老板说:“我们很努力了,客户需求老变,我们有什么办法”
“哎,这周白做了,又返工”
......。
有很多理论一直在希望能够改善需求分析环节处理,就是因为需求分析太重要了,它是所有后续工作的起点。俗话说,男人怕入错行,女人怕嫁错男。源头错了,后面做的再好也白搭,等着被人骂。
这些年我在写需求分析成果需求规格说明书的历程,有六个阶段:
第一阶段:2页搞定法,写一句目标,写几句背景、画一个功能结构图、每个功能写几句。大家能不能想到这种方法象什么,呵呵,就象在写简单的宣传材料,在结果出来前谁也都不知道象什么,大家都在猜,这些功能字眼很熟悉,至于怎么做,编码的人自己去想。这就是我早期做的事情,编码的时候这份文档唯一的作用就是做菜单。结果等软件出来,很神奇的,客户气死,老板气死、销售气死。
第二阶段:总不能一直是用2页搞定客户吧,报告需要页数的,拿这点页数上不了台面的,只能凑字数,怎么办,就从技术的角度去做,画数据流图,写输入输出。写着写着就好像写成设计报告了,客户懵了,老板懵了,销售懵了,看不懂,程序员懂了。但从技术角度思考,我们做出来的东西就是客户想要的吗,因为前期很难和客户确认。结果等软件出来,也是很神奇的。
第三阶段:从技术角度不能解决需求问题,那就抛开技术,从客户角度去写,把客户所做的业务完整描述出来,这下客户懂了,老板懂了,销售懂了,程序员懂了,可是做的时候遇到一个很大问题,描述中涉及到的业务是不是都需要实现,完整性描述意味着文档中有可能覆盖了很多不需要做到系统里面的业务点。这个怎么界定,开始没定好,那我们在实现的时候就会做了很多很多很有意思的功能,套用一句话:你知道的太多了。所以想的越多,事情做的越多,工期拖的越久。结果等软件出来,也是很神奇的。
第四阶段:前三个阶段都有问题啊,写出来的内容对设计和开发指导意义不大,我们想到了原型法,原型法效果是不错,但有个问题,原型法很耗时间,对能力要求很高,要快速出代码。因此这种方法只用在对非功能性要求有特殊的情况下,如性能,新技术、复杂的场景中。如果简单的增删改查功能也用原型法是不是太奢侈了点,除非客户有硬性要求。
第五阶段:这不行,那不行,这时候有个前辈忽然想到,发布给客户除了安装包以外,还有用户操作手册,我们能不能把用户操作操作手册提前到需求分析阶段,手册中涉及的界面用VISIO画出来,人机对话的过程用文字写出来。这个建议真的很厉害,当我们按用户操作手册方式写需求规格说明书,效果很快就出来了。从编写需求开始,就定下来一个重要的关键字,那就是边界。我们要做的系统最终发布给客户是什么样子,怎么操作,非常的明确,设计按它来做、编码不要在花太多的时间考虑界面,只要考虑已经定义好的样子、测试按说明书一步一步来验证。朋友,在整个开发过程没有返工啊,除非需求发生变更。所以我很佩服这个前辈,思路决定出路。这种方式很容易和客户、设计、程序员等等角色沟通确认,因为大家是看图说话。就是有点不好的就是文档太专业,太枯燥,没有优美的文字可以给客户领导、老板、销售。因为这些角色又不看具体的功能内容。
第六阶段:终于大成,是我这几年一直使用的方法,也是我当时所在团队的集体最高成就:
三分定天下。既然需求规则说明书要包含非常优美的文字给领导看,又要有功能列表给销售看,还要有已定义的无歧义内容给设计、程序员、测试看。那么三分定天下方法就把需求规格说明书一分为三,拆成三份文档
1、总论。包含背景分析、业务描述、功能需求、非功能性需求、接口需求等内容,这些常常被拿去做宣传、立项、忽悠等等用途。属于编故事范畴,写的越优美越好。
2、功能列表。系统要实现的功能点,你可以理解为USE CASE,是做定义边界的。我经常用它做进度估算、成本估算和报价用,也是后续工作的控制点。
3、分册。与功能列表中的功能点一一对应,使用用户操作手册的方法做,严格要求这里描述的内容都是属于边界内的。不能有等等这类的字眼,要有图,有操作步骤,有操作规则,在和客户确认后到没发生变更前,是要没有任何歧义的。大家遵守这个手册来做事情。那么做出来的东西就是没有返工的,满足客户当前确认的需求。
写了这么多,其实我给大家分享的就是需求规则说明书的
三分定天下方法,在第六阶段。至于需求怎么采集这个要看个人,八仙过海,各显神通,能给大家建议的只有一点,在和客户做需求调研的时候,请花点时间通过其它途径先了解客户的业务,不然在沟通过程中很尴尬,客户会认为你水平不够,不愿和你沟通。
----------------------------
Ps:本来想在这篇也包含一个需求规则说明书的小案例,考虑到如果文章篇幅如果太大,大家看起来会很枯燥很辛苦,就改到下一篇需求规格说明书案例分享,这几天会补上。
分享到:
相关推荐
暗黑风格-C++八股文-小贺-v1.0.pdf
- `auto_ptr` 是在C++98标准中引入的,但在C++11之后被废弃。它的设计理念是实现所有权转移,即一个`auto_ptr`实例拥有对动态分配对象的所有权,当`auto_ptr`对象离开作用域时,它会自动删除所指向的对象。然而,`...
2_暗黑风格-C++八股文-小贺-v1.pdf
### 6. 模板 #### 模板类 - **实例化**: 在编译时为具体的类型生成对应的类。 - **具体化**: 为特定类型提供特殊的实现。 #### 模板特化 - **全特化**: 对模板的所有参数提供特定实现。 - **偏特化**: 对部分...
java八股文 java八股文 java八股文 java八股文 java八股文
Apollo java八股文 java八股文 java八股文 java八股文 java八股文
Java Web 基础八股文 Java Web 技术是 Java 语言在 Web 开发领域的应用,旨在帮助开发者快速构建高效、可靠的 Web 应用程序。本文将从 HTTP 协议、Servlet 生命周期、请求与响应、Servlet 域对象、Session 和 ...
《代码随想录-最强八股文(第五版)》是一部综合性的编程知识合集,旨在帮助程序员,尤其是面试者,提升在前端、后端以及Java和Go等领域的技术素养。这一版本的内容涵盖了大量的面试常见问题,是程序员们准备技术...
僵化的考试必然会带来僵化的人,就像古代科举考八股文,就选拔出一批会四书五经的书呆子。面试如果一直考网上现成的题,久而久之,面试者都被逼着成为背题家,而那些有能力却不会背题的人就会被拒之门外。
《数据分析面试八股文合集》是一份针对数据分析求职者的宝贵资源,包含了多个文档和题库,旨在帮助求职者充分准备面试。以下是对这些文件内容的详细解析: 1. **数据分析业务面100问.docx**:这个文档可能包含了100...
Java作为世界上最受欢迎的编程语言之一,其面试题库中的“八股文”是程序员们准备面试时必须掌握的基础知识。这些知识点涵盖了Java语言的核心特性、集合框架、多线程、异常处理、IO流、网络编程、设计模式以及JVM...
包于algorithm 、applet、 design 、ES6、 JavaScript、 git 、webpack 、http 、vue3 、Vue typescript 、React 、 NodeJS、 linux,一共236个
reduceByKey 在性能上通常优于 groupByKey,因为它在 shuffle 过程中对每个 key 的值进行了聚合,减少了网络传输的数据量。而 groupByKey 会将所有相同 key 的值打包发送到同一个 Executor,可能导致数据倾斜和较高...
2024前端面试八股文2024前端面试八股文2024前端面试八股文2024前端面试八股文2024前端面试八股文
Interview_=_简历指南_+_算法题_+_八股文_+_源码分析_Interview.zipInterview_=_简历指南_+_算法题_+_八股文_+_源码分析_Interview.zipInterview_=_简历指南_+_算法题_+_八股文_+_源码分析_Interview.zipInterview_=...
【代码随想录最新第三版-最强八股文】是一份综合性的IT学习资料,包含了程序员面试必备的知识点,尤其适合准备大厂面试的求职者。这份文档详细涵盖了多个编程语言、算法、计算机基础和软件工程领域的重要概念,旨在...
Java八股文是Java开发者在面试中经常遇到的经典问题集合,涵盖了从基础语法到高级特性的各个层面。这些“八股文”旨在测试和提升候选人在Java编程语言上的理解和应用能力。以下是对Java八股文各章节可能涉及的知识点...
在编程领域,"八股文"通常指的是为了面试或学习而整理出的一系列经典问题和解答,它们涵盖了基础概念、数据结构、算法、设计模式等多个方面。Java八股文是专门针对Java语言的这类知识集合,旨在帮助开发者提升技能,...
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...