歌德曾说:“哪个少男不钟情,哪个少女不怀春”。 对于需求,我们一开始的时候就是这样的。那时,我们总是希望完全理解它,我们总认为能够完全掌握它,可实际的情况是——需求变更往往在所难免。以前出现这种情况时,总觉得很沮丧,觉得自己的工作做的还不细,有些内容要让用户签字确认就好了。可在读了设计模式精解(Design Patterns Explained)中的一段话后,我忽然恍然大悟,这不是你的错,世界原来是这样子的啊。

需求变更的原因很简单:

1) 当和开发者讨论后,用户看到了软件的可能实现的新的功能,故用户对需求的理解改变了。
2) 当开发者编程来实现需求的时候,他们对需求更加熟悉了,所以他们对需求理解也改变了。

Requirements change for a very simple set of reasons:

1) The users'view of their needs changes as a result of their discussions with developers and from seeing new possibilities for the software.
2) the developers' view of the users' problem domain changes as they develop software to automate it and thus become more familiar with it.

三极世界和需求变更的必然

        我的理解,上面那段话告诉我们——需求、客户(开发者能接触的客户)、开发者是一个三极世界。这三极的沟通是很不容易的,让我们看看一般的需求调研的场景,客户向我们滔滔不绝的描述需求,开发者听得头晕脑胀,但又不得不根据这些来理解需求,有的时候我们也会派好几拨人轮番折腾客户,这样客户也晕头转向,有时巴不得赶快调研结束。

这样的需求调研像透过布满小水珠的玻璃看世界一样,即使能够看清轮廓,但细节的丢失在所难免,有的时候因为丢失这些,你把女的看成男的,活的看成死的。之所以这样,有下列这些原因:

1) 客户对需求进行了过滤。有的时候是因为他对需求的理解不准确,因为和我们沟通的常常是信息中心的人,他们对需求的理解一般比不上业务人员;有的时候是因为他是某一个部门的人员,他仅仅会以他的视角来描述需求,财务人员的视角和销售人员一定有所不同,一个高管的视角和一个普通人员也一定不同。

2) 开发者对需求的理解偏差。偏差分为两种:一是开发者团队的偏差,由于缺乏知识,我们对有的需求理解错了。二是开发团队中内部的偏差。比如有的公司,有专门的需求调研人员负责需求,他们水平较高,比较专业,可是他们往往同时做好几个项目,所以在调研完成后,他们便不在团队中,这样偏差便难免。还有些时候内部的沟通、人员的更替都是造成偏差的原因。

3) 需求本身的矛盾性和混沌性。矛盾性表现在,有的时候需求本身是矛盾的,一些业务流程是冲突的,如果我们及时不能发现它们,取舍它们,在项目后期,这种大的需求变更将如期而至;混沌表现在,很多的时候,用户希望通过软件来提高他们的管理水平,这种情况下他们的需求往往是不够清楚的,虽然可以从业务流程出发,可是用户通过使用软件,总能发现许多可以改进的地方,这样源源不断的需求变更就来了。

由此可见,在这样的三极世界,需求变更是必然的。

转载于:https://www.cnblogs.com/microsheen/archive/2005/12/29/307206.html

[理解需求变更之一]说说需求变更的必然相关推荐

  1. 需求变更管理和需求的可追溯性

    在项目管理过程中,总是难免会碰到需求的变更,需求变更之所以会产生,可能是用户不能清晰描述需求或对需求也不是特别明确,也可能是开发人员对需求理解与用户不一致,或者是用户需求确实有更改,或者是遇到其他外部 ...

  2. 如何做好需求变更管理?——需求变更流程规范

    一.引言 由于目前公司内部对产品的需求变动都只是口头或邮件中进行通知,并没有进行内部评审和相关需求变动后的记录,导致后续出的产品某些需求增加了,某些没有进行增加.这样就会导致测试得到的信息不完整,以及 ...

  3. 深入华为研发最核心地带:产品规划,聆听华为最大产品经理:任总,对产品规划理解:产品规划如何客户需求导向?如何对待变态需求?如何把握市场节凑?

    前言:在PIRB产品路标规划评审会议上,任总详细阐述自己对客户需求导向的理解,前瞻性分析当今科技时代客户市场导向的必要性,例举波音777飞机的研发模式:针对市场上复杂.短期变态需求,任总也通过石头下的 ...

  4. 需求、需求工程与需求工程师 — 3. 需求工程的构成

    需求的概念有了,但是如何系统地.高效地获取需求?获取需求的流程是什么.有哪些步骤.每个步骤对应的方法.标准是什么?等,解决这些问题就需要建立一套标准的需求获取方法.需求工程就是用来解决上述问题的方法, ...

  5. 软件开发的功能性需求和非功能性需求

    功能性需求,一般是我们显性易见的,就是一般实现了什么功能,提供了什么服务,大体我认为问题中提到,或者我们日常所说的:"看起来复杂不复杂",基本上都会是针对功能性需求而言的.如果拿g ...

  6. [需求管理-1]:IT需求管理总体流程+需求管理需要的技能

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  7. 软件测试(测试用例、配置管理、bug、软件需求规格说明书、需求)

    什么是软件测试 软件测试是不是就是找bug? 软件测试就是证明软件不存在错误的过程. 软件测试就是为了证明程序能够正确运行. 测试与调试的区别: 目的不同. 测试的任务是发现程序中的缺陷. 调试的任务 ...

  8. 需求,这真的是“需求”吗?——论需求的层次及若干问题(1)

    需求的漫画: 关于需求问题,有一幅漫画十分生动地展现了这些问题(这幅漫画我其实最早是在07年一次"敏捷中国"一次软件开发技术人员日上上见到的),如果我们认真剖析后面的东西,还是会给 ...

  9. 需求管理 -- 为什么做需求管理

    导语: 需求管理对于项目来说很重要,甚至会影响到项目的成功与否.一个好的项目管理流程不仅可以推动项目的进行,还可以提高项目的成功率.需求管理如此重要,那么我们应该如何进行需求管理呢? 糟糕的需求管理 ...

最新文章

  1. 8月12笔记-安卓文件扫描
  2. Elasticsearch 常用配置参数总结
  3. 从全球最赚钱的20家公司,我们可以发现什么?
  4. vs2010 引入cout,cin ,endl报错,不能识别
  5. 新版DevEco不用USB线下载程序
  6. winform程序的皮肤问题
  7. Hadoop的eclipse1.1.2插件的安装和配置
  8. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)...
  9. 矩阵论作业4,5,6讲
  10. eval('{kkk:{}}')出错,eval('{}')与eval('var ss = {kkk:{}}')正常
  11. 杜比专为旧版本Android,杜比音效7.0清爽卡刷包-杜比音效7.0定制版v2.1.0 安卓版-腾牛安卓网...
  12. 国科大模式识别与机器学习课程整理
  13. 游戏建模教程:肌肉建模丨人体比例及肌肉骨骼介绍
  14. 使用jq来封装一个瀑布流插件
  15. 通过爬虫爬取一些图片
  16. 编译ORB-SLAM2遇到的问题及解决方法
  17. 科技PRO实力测评:高端按摩椅市场综合PK,究竟谁才配得上机皇?
  18. 马尔科夫链预测,Python实现
  19. html div 高度100,深入理解CSS的height:100%和height:inherit之间的使用区别
  20. 算法实验总结2019

热门文章

  1. FTP主动模式和被动模式学习笔记
  2. Oracle的SQL基础之用户与表空间
  3. 95-38-025-Buffer-Buffer1
  4. 【Elasticsearch】使用 Elasticsearch 轻松进行文本分类
  5. 【Redis】Redis 乐观锁
  6. 【clickhouse】clickhouse 分区表
  7. 【Java】图解 Spring 循环依赖,写得太好了
  8. 【Java】Java趣味分享:try finally
  9. Spark报错 Failed to send RPC xxx to/ip:43074 java.nio.channels.ClosedChannelException
  10. MAC报错:-bash: mysqlbinlog : command not found