技术开发 频道

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

    案例&场景:在一次CRM软件开发的过程中……

    负责输入客户信息的用户向开发人员提出:“你看这个界面,光电话就有快10个输入框,太麻烦了,每次按tab键都按酸了。我希望把他们合并成两个,一个为常用电话,一个为其他电话”。

    “那有多个电话怎么办?”,开发人员回应道。

    “其他电话的输入框可以设置为多行的、较宽的,这样我可以输入多个,中间用逗号分开它!”。

    “好的,没问题” .……

    当经理看到了这些客户信息之后,向开发人员提出:“我需要一个功能,输入任何电话号码,自动找出相应的客户。”

    “啊……”

    如果我们细究这个场景,分析一下负责输入客户信息的用户所提出的变更就会发现:“将10个电话输入框合并成两个”显然是解决方案,而真正的需求是“输入太麻烦了,每次按tab键都按酸了”。你或许就会想到如下所示的解决方案:也就是说,默认情况上只显示左边的部分,当需要时点击“其它>>”按钮就可以将右边的不常用输入项显示出来。

    总而言之,因为对于一个特定的问题可能的解决方案会有很多,因此用户可能在使用软件的过程中不断发现其他可选的、更合适的替代方案,从而导致了不必要的需求变更。而要缓解这一现象的关键就在于在需求捕获的过程中多问“为什么”。

    项目经理:控制需求

    当我们比较图1中第1幅和第2幅图时,就会发现项目经理在沟通的过程中会导致需求产生偏差。由于国内许多软件项目经理们通常是一身兼多职,项目管理、需求分析、架构设计一肩挑,因此在需求捕获的过程中,总会“及时”地在脑海里勾勒出技术框架和路线,然后尽可能地控制需求的范围。

    就像这里,客户需要的可能是一个“秋千”或者是“上树工具”,但不管真正的需求是什么,第2幅图中的解决方案却都无法有效地满足。如果要做“秋千”,不应该被树干挡住;如果要做“上树工具”,木板的数量显然太少了。

    究其原因不难发现,需求人员首先从项目经理的视角按工作量对需求进行了控制:将“三层”板的工作量减成“一层”板,如果不小心控制掉的是对业务很重要的东西,那么最终一定会以变更的形式“回报”给开发团队的。然后需求人员又从架构师的角度进行了“改良”:不稳定的“全挂在一个树枝上”改成“挂在两个树枝上”,结果根本无法使用。

    因此具有多个角色的需求人员,必须在需求的过程中“戴正自己的帽子”,真正从理解业务的角度来捕获需求。

    分析人员:技术加工案例&场景:分析员小张:“嘿,伙伴们!我有个提议,我们研究Hibernate已经有一段时间了,一直没时间真正动手用一用。我看这个项目就不错,不算太大,就用它试试吧!”。

    “好主意!”,大家纷纷表示赞同。

    ……

    “约定时间已经过去1个月,现在项目进展到底如何了?什么时候可以交付?”,客户方CIO质问到。

    分析员小张:“现在主要困扰我们的是一些需求细节一直存在变化,开发团队又有了一些人离职,所以……”(真正的情况是:由于团队第一次使用Hibernate,有些数据访问层的问题一直没有有效解决,导致进展不断失控。)

    现在许多名称中包含“需求分析”、“系统分析”之类的职位,大多是由技术骨干担任的,因此在工作中很少从业务角度进行分析,更多还是追求技术框架、新技术。对于这种现象,究其根源,关键还在于“技术能力”对他们的未来发展更为重要,而“业务能力”却不是那么重要。但为了使需求工作有更好的提高,我会强烈呼吁那些Title上有“分析”之类名称的人们,加强业务分析吧!

    编程人员:断章取义对于第4幅图,可以用一句生动的话来概括:“你要绳子,我给你了;你要木板,我也给你了;你为什么说这不是你想要的呢?”。我想程序员也有类似的问题想问自己的客户,“你要文本框,我提供了;你要一个表单,我也有了;你为什么说这个程序不是你想要的呢?”。这让我想起了这样一幕:案例&场景:叮铃铃……,程序员小赵的电话急促地响起。小赵刚接起电话就听到了对面迫不急待地抱怨声“仓库管理员反应,入库模块没法使用!你马上查一下,尽快解决一下!”。

    小赵放下电话就开始Check out、Builder、Run、Debug……等一系列操作。经过一番测试之后,小赵没好气地提起电话回复说:“这些客户真是笨!这哪有问题,肯定是操作上出了问题!我怎么用都是好的,你们客户服务的人也应该加强对用户的培训,别什么事都扔给我们!”。

    ……

    可是,问题仍然没有解决!开发人员到了现场一看,终于发现了问题的所在:这是一套基于B/S的仓库管理系统,在入库时,仓库管理员首先需要录入入库单,然后填入“验收情况”,最后点击“入库”按钮。但当仓库管理员录入完入库单,逐一验过入库货物之后再回到电脑前时,等待他的却是一个令其不知所措的问题,Session超期!

    一肚子气的小赵一个电话就打到需求分析员小钱那里:“你们的需求是怎么写的!这么重要的东西也不写明白,我们怎么知道填完入库单后要验货那么长时间,才填写验收情况呀!”。

    “哦,这也算是需求吗?如果这也算的话,那我们岂不成了业务人员了!”,小钱很强势地回答到。

    这是需求吗?也许很多读者会有不同的看法!但如果缺乏对业务场景的了解,又如何能够真正理解需求呢?断了“业务场景”之章,必将导致取出的“需求”之义有所偏差呀!

0
相关文章