从一则笑话分析需求的陷阱

houzeal 2008-06-11 02:59:57
加精
关键字: 软件测试、需求管理

某日,老师在课堂上想考考学生们的智商,就问一个男孩:“树上有十只鸟,开枪打死一只,还剩几只?”
男孩反问:“是无声枪么?”
“不是。”
“枪声有多大?”
“80~100分贝。”
“那就是说会震的耳朵疼?”
“是。”
“在这个城市里打鸟犯不犯法?”
‘不犯。”
“您确定那只鸟真的被打死啦?”
“确定。”老师已经不耐烦了,”拜托,你告诉我还剩几只就行了,OK?”
“OK。鸟里有没有聋子?”
“没有。”
“有没有关在笼子里的?”
“没有。”
“边上还有没有其他的树,树上还有没有其他鸟?”
“没有。”
“方圆十里呢?”
“就这么一棵树!”
“有没有残疾或饿的飞不动的鸟?”
“没有,都身体倍棒。”
“算不算怀孕肚子里的小鸟?”
“都是公的。”
“都不可能怀孕?”
“………,决不可能。”
“打鸟的人眼里有没有花?保证是十只?”
“没有花,就十只。”
老师脑门上的汗已经流下来了,下课铃响起,但男孩仍继续问:“有没有傻的不怕死的?”
“都怕死。”
“有没有因为情侣被打中,自己留下来的?”
“笨蛋,之前不是说都是公的嘛!”
“同志可不可以啊!”
“…………,性取向都很正常!”
“会不会一枪打死两只?”
“不会。”
“一枪打死三只呢?”
“不会。”
“四只呢?”
“更不会!”
“五只呢?”
“绝对不会!!!”
“那六只总有可能吧?”
“除非你他妈的是猪生的才有可能!”
“…好吧,那么所有的鸟都可以自由活动么?”
“完全可以。”
“它们受到惊吓起飞时会不会惊慌失措而互相撞上?”
“不会,每只鸟都装有卫星导航系统,而且可以自动飞行。”
“恩,如果您的回答没有骗人,”学生满怀信心的回答,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”
老师当即倒!

正值六一儿童节之际,用这篇笑话故事来做开头,笑过之后可能不少能会认为这个小朋友是需求调研的最佳人选。回顾软件开发上的许多案例,软件开发失败率一直居高不下,特别在外包开发这个领域中,这个值可能会更高一筹。在分析项目失败的原因的时候,需求的因素可能是失败的关键原因、需求不明确,客户对需求的变更频频等等。

1.需求的调研

需求调研是为需要说明书做前期工作,可以说需要说明书是从需求调研表中得到或抽取而出。需求调研是要了解客户希望所要开发的系统能够解决他们的问题,以及了解他们对系统的期望等等。需求调研是整个开发的基础,经过需求调研的结果整理出需求说明书作为后续开发使用。

如果做的项目是一个陌生的一个行业(专业),这是往往需要专家或者顾问等角色的协助,但是作为调研人员最少要想办法了解个专业,或许你需要成为这个行业的专家,但最少要了解一定的专业知识(最少专业词汇你要知道)。这样客户的沟通才能达到顺畅,不会出现牛头不对马嘴的现象。

在某些难度不是很大的行业或者项目,做需求调研的时候可以通过自学的方式了解行业的特点,这些项目往往因为规模比较小,也不会有专家的影子出现。但是作为调研的时候我们最需要了解的一些问题如:

1):客户目前的问题与苦难
2):客户现在的工作模式
3):客户对系统的期望
4):客户哪些要求是自己能做到的,那些是依靠系统来做
5):还有客户对系统开发方式以及时间的要求等等

其实做需求调研的时候最重要的目的在于资料收集,或许小孩的那种打破砂锅的方式会引起客户的反感,但是实际项目中往往需要的就是这些比较周全的调研方式,能够考虑到的问题点都需要和客户确认,尽量避免想当然的做法,只是采用的方式可能需要优化一下,采用良好的方式,尽量得到客户的最大配合。

...全文
9753 184 打赏 收藏 转发到动态 举报
写回复
用AI写文章
184 条回复
切换为时间正序
请发表友善的回复…
发表回复
kangkanglili2012 2012-08-06
  • 打赏
  • 举报
回复
太强了!学习学习
two_sided 2012-05-15
  • 打赏
  • 举报
回复
测试确实需要这样的精神,适当的时候坚持这样的思路考虑问题,对于做任何事情应该都是有益处的。
clrainbow 2012-02-10
  • 打赏
  • 举报
回复
这孩子。。天才,哈哈
yidihuanxiao 2011-10-12
  • 打赏
  • 举报
回复
避免想当然的做法,需要注意这一点~~
chcchb 2011-09-07
  • 打赏
  • 举报
回复
这个笑话果然经典
二少丁 2011-08-06
  • 打赏
  • 举报
回复
强力,学习。
zygame 2011-03-25
  • 打赏
  • 举报
回复
人才啊!天生的需求分析师!
l435799304 2011-03-21
  • 打赏
  • 举报
回复
路过
!~
xiao_yanjing 2010-11-18
  • 打赏
  • 举报
回复
跟帖了,不错啊
bczy_77 2010-07-21
  • 打赏
  • 举报
回复
有些过,不过总比不问,不会问,不知道问的强N倍
SwTesting 2010-07-09
  • 打赏
  • 举报
回复
学习了!
我是一道光_ 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 r_swordsman 的回复:]
这样问?客户不烦死了?
[/Quote]

这就要建立互相了解、谅解、帮助的基础上。

因为这步是必须的,容不得不耐烦。
songzlsong 2010-04-06
  • 打赏
  • 举报
回复
笑过之后,别有一番含义
mai_gu 2009-08-19
  • 打赏
  • 举报
回复
进来学习!!
helloasea 2009-04-06
  • 打赏
  • 举报
回复
强. 学习了,
walf 2009-03-11
  • 打赏
  • 举报
回复
cool!
Mi_Bo 2008-10-15
  • 打赏
  • 举报
回复
很形象啊,顶了
zhnzzy 2008-09-10
  • 打赏
  • 举报
回复
了解
good_Alex55 2008-08-03
  • 打赏
  • 举报
回复
good!
yefenglulu 2008-07-28
  • 打赏
  • 举报
回复
的确!需要严谨的心态对待的!
加载更多回复(164)
近年来,物联网的发展势不可挡,将很快成为下一个革命性的技术变革,改变人们的生活方式。而嵌入式linux相关技术则是物联网技术中的核心部分(感知层和传输层全部依赖嵌入式技术的支撑),想要在物联网技术中有所建树嵌入式linux是绕不开的一道坎,因此为广大相关专业大学生和相关行业工程师所关注。然后传统的线下培训班学习方式却有着诸多缺陷:费用高昂(4个月16800元左右)、时间和空间成本高昂(必须全日制集中式脱产学习、学习和生活成本高)、效果差(老师水平、责任心、教学管理水平参差不齐)等,让人望而却步、“嵌入式,想说爱你不容易”。 本课程是从零开始完整系统的学习嵌入式linux技术的完全教程,因此学习是分为几个阶段的,每个人应当根据自己的情况选择合适的学习起始点(譬如有基础则可不必从头开始)和学习重点安排(譬如有些人应该重点看C,而有些人要重点看裸机等)。 但是总的来说,大部分同学的基础和学习能力都相差不大,因此我下面给出的完整学习路径和建议适合99%的同学。这个学习路线也是朱老师课程录制和顺序,也是朱老师自己认为的合理的学习进阶路线,建议大家参考该路线学习,以大限度提升学习效率。 第0阶段:试学阶段 本阶段要学习的课程是《0.基础预科》中的3个课程。学习顺序为: 先学习《0.1.嵌入式软件工程师完全学习指南》。本课程是对物联网技术的介绍,和朱老师整个物联网相关课程的大规划(嵌入式linux核心课程属于朱老师整个物联网课程体系的一部分,其他部分还有诸如Android扩展、物联网传感器扩展等)。学完本课程可对物联网的概念和应用有更深的理解,尤其适合根本不理解何为物联网的小白学习。(现在很多大学都开设物联网专业,但是都大二大三了都还不知道何为物联网的人一大堆,甚至学校老师都说不清到底什么是物联网) 然后学习《0.2.朱老师带你零基础学Linux》,本课程是对linux系统的基本使用。因为之后的所有开发都是在linux系统(具体的说是ubuntu,更具体点是基础预科里用的是ubuntu10.04,后面其他课程里用的是ubuntu14.04)中进行的,因此要开始学习必须先会使用linux发行版系统,所以这个课必须先学。 后是《0.3.嵌入式linux C编程基础》,这个课程是非常非常基础的讲C语言的课程(其实还只讲了一半,是线下实体课堂的实录,因为当时课上到一半开班了所以就没继续讲了)。这个课程C语言讲的非常仔细,仔细到令人发指的程度。如果你C语言功底不行建议好好看这个课程,会有极大提升。当然如果C语言还可以,有一定功力(表现为看了这个课程后感觉太简单太容易了),那这个课程可以快进过去或者干脆跳过。 至此基础预科学习完毕,可以正式开启嵌入式linux学习之路了。 多说几句,整个《0.基础预科》部分的视频课程都是免费提供的。并不是说这部分课程没有含金量所以免费,相反这部分课程含金量很高(同学反馈的好评也多)。朱老师之所以将本部分定为免费课程,主要是希望大家能够零成本的开始学习,先通过这部分课程的学习检验自己的学习结果,搞清楚以下问题: 我到底能不能学会? 这个课程到底适合不适合我,这个老师的风格我到底喜欢不喜欢? 这个技术方向到底能不能吸引我?我是不是真的决定去学嵌入式了? 这老师行不行?值不值得花钱买他的课程? 把这个阶段定位为试学阶段,也是基于这点。试学,一方面试的是你自己,另一方面试的是我。试学阶段40小时左右的课程(其实本来可以短一些的)大家至少需要一周以上才能学完,这么久的时间就是希望大家能够想清楚,也能够看清楚自己的内心兴趣,同时也能充分检验朱老师的课程质量。 第1阶段:初级嵌入式软件工程师阶段 本阶段的学习内容包括《1.ARM裸机全集》和《4.C语言专题》这两个课程。学习顺序是以ARM裸机为主线,其中穿插C语言专题进行学习。 本阶段2个大课程加起来156小时,主体内容是嵌入式linux软件开发方向的各种零碎知识点和能力点,几乎可以认为是整个课程中重要的一个阶段(有些人说驱动重要?这两个阶段如果过不了驱动跟你半毛钱关系都没有)。 本阶段对大家重要还有个更主要原因就是:本课程中讲的东西都是各种嵌入式软件开发岗位技术面试笔试中常遇到的。所以如果是希望通过学习搞定面试找到工作,那本阶段的课程就要作为重点学(尤其是C语言专题)。 第2阶段:提升阶段 本阶段的学习内容包括《2.uboot和linux内核移植》和《3.linux应用编程和网络编程》。其中uboot和系统移植承接ARM裸机阶段内容,继续讲解uboot。这个课程也很精华,分为20个小课程一共92小时,学习本课程并且把课程中的练习都做下来后,整个人的程序编写和调试功能会极大提升,用已经学完的同学的话讲是“感觉整个人脱胎换骨了”。Linux应用编程和网络编程这个课程根据APUE这本书简化而来,面向实际用到的知识点和重点,学起来难易适中,相对轻松点。不过却是后面学习驱动的,想要写驱动必须得先会写应用,这个道理大家一定要遵从。 本阶段的2个课程之间没有先后顺序,大家可以根据自己的需要来安排。我讲课时是按照先uboot和系统移植,后linux应用编程和网络编程的。(主要是为了承接前后阶段) 第3阶段:驱动学习阶段 本阶段内容为《5.linux驱动开发》,本部分是整个课程里大家期待的部分,很多人是一上来就想学习驱动开发的。但是必须认识到,驱动是linux技术中集大成者,前面所有课程中学到的内容在驱动中都会用到,驱动编程和调试是让人抓掉头发都无从下手的麻烦事,所以建议大家学好前面的课程再来看本部分,否则你将什么都得不到。(就好像笑话里说的那种,前面4碗饭不吃,直接吃第5碗也是不可能饱的) 第4阶段:项目阶段 本阶段为大家安排了一个练习项目,该项目综合用到了前面课程中讲到的知识和能力,包括驱动和应用,编程能力、调试能力等。为了方便本项目并未用到额外的配件,课程配套的X210开发板即可直接完成项目。本项目只是个开胃小菜,用来给大家检验自己的学习成果的而已。 真正有用而复杂的项目,朱老师将在另一个课程体系(暂定名为:朱有鹏老师物联网项目库)中给大家一一道来。这些项目会从2016.8左右开始一直持续(直到朱老师退休······),朱老师的目标是将常见的各种物联网传感器、外设硬件模块、前端技术应用都囊括进来,使用我们嵌入式linux核心课程中学到的编程能力,结合这些软硬件模块来完成一个又一个大项目小项目。将来大家可以根据自己的兴趣爱好和工作需要,在其中选择合适的项目进行学习,并且即刻在实际中遇到这些项目(也是是为了毕业设计、也许是公司下一个产品···)

5,174

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 质量管理/软件测试
功能测试压力测试安全性测试 个人社区 湖南省·长沙市
社区管理员
  • 软件测试
  • 虫无涯
  • 小博测试成长之路
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家加入到软件测试的社区,在这里,希望大家勇于发表自己的看法,欢迎大家分享自己在软件测试工作过程中遇到的问题以及工作经验分享。

1.想转行的小伙伴,遇到问题没有及时回复的,可以私聊小博进行反馈

2.大家对社区有好的建议,都可以在社区发帖进行反馈

推荐大家学习的软件测试入门笔记:软件测试入门学习笔记

试试用AI创作助手写篇文章吧