技术开发 频道

软件需求非常好的实践之需求的沟通与分析

【IT168 技术文章】

    在信息化高速发展的今天,构建与时俱进的信息化系统已成为所有政府、企事业单位的重点课题之一。然而在软件项目实施过程中,进度超期、经费超预算、变更频繁的现象层出不穷,甚至有许多项目根本无法达到预期的目标,更谈不上为业主创造真正的效益。归根结底,软件需求实践这一共同的软肋是问题根源之所在。

    引言

    关于软件项目所存在的问题,互联网上曾经流传着一幅漫画,它十分生动地展现了这些问题。也许很多人看完之后只是一笑置之,但如果我们认真剖析后面的东西,还是会给我们的工作带来许多启发的。

    沟通失真究其原因,这幅漫画给人最大的启示就是在需求沟通过程中产生了严重的失真,从客户的描述到项目经理的理解、分析员的设计、程序员的编码、商业顾问的诠释,每个角色都根据自己的特点和需求对信息进行了不同的加工,从而导致信息的内容有了很大的改变。因此,对于软件需求工程而言,克服沟通失真就成了一个要点。

    根据相关的研究显示,在信息的传递过程中,如果没有采取任何措施,那么在沟通过程中信息衰减可能的最大值高达60%.而在软件开发过程中,需求信息通常要经历用户代表、需求人员、设计人员再到开发人员,因此最坏的情况下,开发人员获得的信息仅是原来的8.4%,这是一个十分可怕的结果。

    怎样才能够更好地避免这种问题的出现呢?其实关键的手段有两个:文档:如果信息在传递的过程中仅靠口口相授的话,就难免发生遗忘、加工等情况,因此必须在这个过程中有效地利用文档,将达成共识的信息文档化。但这种方法只是用来辅助沟通的,而不是代替沟通,这一点在后面还会提到。

    Review:在此有意使用了英文,因为国内常将其翻译为“评审”,但这一翻译却容易给人误导。评审在很多人的脑海中就是得出一个通过与否的结论,这也是导致需求评审工作流于形式的罪魁祸首之一。顾名思义,Review就是再(Re)看(View)一遍的意思,其本质含义是通过再次的审读,尽早地暴露出错误。而最简单、有效的Review就是在用户代表阐述了需求之后,需求分析员用自己的语言再复述一遍,以确保沟通没有失真。

    在信息化高速发展的今天,构建与时俱进的信息化系统已成为所有政府、企事隐喻:经理叫来了小张,然后就下一阶段的工作做出了一些重要的指示和安排:“$%#^@(*)#@……”。

    小张正要扭头走的时候,经理叫住了他,说到:“你简单地说说看,我刚才给你交待的任务有哪些”(看来管理人员早已掌握了这一招)。

    提示:如果有一个测试人员对你说:“我前天仔细测试了一下你写的程序,发现一个问题也没有,恭喜你!”。你会怎么想呢?

    a.    觉得自己的程序写得很好!

    b.    觉得测试人员方法不得当或测试不细致。

    我想大多数人都会做出“b”的选择!可是到了需求评审时为什么却转了180度的弯呢?为什么期望需求评审时一点问题也没有呢?

    “沟通失真”高度概括了其中所蕴藏的问题,但如果我们细细地思考第1、2、3、4、10幅图(这五幅图中的景象与需求活动有很大的相关性),并将其两两比较就会得到一些有益的启发。下面我们就一起来看看。

    客户:放大需求当我们比较图1中的1幅和第10幅图时,就会发现用户在描述自己的需求时做了许多“添砖加瓦”的事。“用户要么不会说,要么就会添油加醋”的现象,在我的实践中是屡见不鲜的。而在这种现象的背后有什么潜在的原因呢?我认为至少有两方面关键因素:(1)客户希望支付的成本尽可能少,获得的效益尽可能多这种思维对于任何一个客户、任何一个人而言都是本能反应。而当用户对开发成本越不了解时,这种心态就会越强烈,更加担心自己“亏损”了;因此在需求协商时就会采取尽可能增加功能的方法来降低“亏损”的风险。

    要有效地克服这个因素的困扰,核心的要点在于建立客户对开发团队的信任度,而建立信任度的要点有两个方面:一是需求人员必须提升自己的专业主义(关于这一点我将在后续的文章中说明);二是需求人员要多站在用户的角度想问题,让用户感觉需求人员的目标是帮助自己解决问题,而非一味谋取利益。

    引言关于软件项目所存在的问题,互联网上曾经流传着一幅漫画,它十分生动地展现了这些问题。也许很多人看完之后只是一笑置之,但如果我们认真剖析后面的东西,还是会给我们的工作带来许多启发的。

    沟通失真究其原因,这幅漫画给人最大的启示就是在需求沟通过程中产生了严重的失真,从客户的描述到项目经理的理解、分析员的设计、程序员的编码、商业顾问的诠释,每个角色都根据自己的特点和需求对信息进行了不同的加工,从而导致信息的内容有了很大的改变。因此,对于软件需求工程而言,克服沟通失真就成了一个要点。

    根据相关的研究显示,在信息的传递过程中,如果没有采取任何措施,那么在沟通过程中信息衰减可能的最大值高达60%.而在软件开发过程中,需求信息通常要经历用户代表、需求人员、设计人员再到开发人员,因此最坏的情况下,开发人员获得的信息仅是原来的8.4%,这是一个十分可怕的结果。

    怎样才能够更好地避免这种问题的出现呢?其实关键的手段有两个:文档:如果信息在传递的过程中仅靠口口相授的话,就难免发生遗忘、加工等情况,因此必须在这个过程中有效地利用文档,将达成共识的信息文档化。但这种方法只是用来辅助沟通的,而不是代替沟通,这一点在后面还会提到。

    Review:在此有意使用了英文,因为国内常将其翻译为“评审”,但这一翻译却容易给人误导。评审在很多人的脑海中就是得出一个通过与否的结论,这也是导致需求评审工作流于形式的罪魁祸首之一。顾名思义,Review就是再(Re)看(View)一遍的意思,其本质含义是通过再次的审读,尽早地暴露出错误。而最简单、有效的Review就是在用户代表阐述了需求之后,需求分析员用自己的语言再复述一遍,以确保沟通没有失真。

    (2)解决方案的选择权交给了不熟悉技术的客户也就是用户经常会谈解决方案,甚至许多需求团队在进行需求捕获活动时,经常预期用户能够直接告诉他们要做什么(What),而不太关心用户提出需求的真正动机(Why)。但是这样就将解决方案的选择权交给了并不熟悉技术的客户代表,而客户代表选择的解决方案不是最合适的话,就必将引发后续的需求变更。

0
相关文章