人与人之间的沟通并不容易。一个不小心产生了误解,导致好友成为陌路的现象屡见不鲜。
根根据相关研究显示,在信息传递过程中,如果没有采取任何措施,在沟通过程中,信息衰减可能的最大值高达60%。
换句话说,即使是面对面的交流,需求分析人员也很难百分之百的理解用户的真实意图。
同样的需求,由需求分析人员向设计人员传递,设计人员在向编程人员传递,在这个传递过程中,都会出现信息失真。有数据显示,最坏情况下,开发人员仅能获得用户真实意图的8.4%。
由此可见,需求的一致理解是非常困难的。而且一旦出现这样的情况,软件开发人员最终实现的软件产品,可能和用户想要的产品天壤之别。
所以如此,是因为在自然语言之中,同一个词语,在不同语境之下,表达的意思完全不同。
比如“系统”一词。有时它就是指软件本身,有时它又指软件和硬件的结合体(组件),有时它又指多个组件的结合体。
同一词语在不同的语境下有不同的意思,这就可能造成不同的人,对同一词语的语义理解是不一样的。
要摆脱需求一致理解的困境,可以从以下几个方面着手:
1、建立术语表,明确术语定义
这里所说的术语,不仅仅是对业务领域里特有的那些专用术语而言,对于一些平常可见的,通用的一些术语,同样要进行定义,避免产生歧义。
2、一图胜千言
文字容易产生歧义,相对而言,图形展示更能够清楚的表达要传达的意思。所谓“一图胜千言”。在需求分析的过程中,通过使用一些建模工具,使用流程图,状态图,数据流图等可以更好的展示软件的需求。更更进一步,如果建立了功能原型、界面原型,那就更容易使得开发方和用户对需求的理解达成一致。
3、构建运行方案和业务场景
用户的软件需求脱离不开用户的使用场景。因此,在进行软件需求分析的时候应当构建用户使用软件的运行方案和场景。将用户的需求放到它的运行场景中来才不会出现理解偏差。
4、及时沟通和反馈。
在进行软件需求分析的时候,要及时的与用户进行沟通。对于那些平时常见,但容易产生歧义的术语,以及在特定领域当中才出现的术语的含义,要及时把自己的理解与用户进行沟通,得到用户的反馈。
5、交叉评审
在需求分析的过程当中,要形成以用户的语言来描述的用户需求报告和以开发人员的语言来描述的需求规格说明。这两份报告应当进行交叉评审。所谓的交叉评审就是用户要参与软件需求规格说明的评审,开发人员要参与用户需求的评审。
总之,获得需求的一致理解,既是软件需求分析的目标也是需求分析的难点,因此在进行软件需求分析的时候,应对其给予足够的重视,以以减少在后续的开发工作中出现的需求变更。