技术开发 频道

原型法破解小型软件项目需求分析之痛

【IT168 专稿】    软件项目需求分析是一个项目的开端,也是一个项目建设的基石。在失败的开发项目中,80%是由于需求分析的不明确而造成的。因此,一个软件开发项目想要成功的关键就是要做好需求分析。这是我经过在上个月不堪回首的痛苦折腾后,才深深领悟到的真意。在这里我想把在这个项目得到的教训和经验与大家分享。

    在上个月,公司委派我负责一个小型的软件开发项目。在接手这个项目时,我看到该项目的需求比较简单,于是想当然的就直接开始工作了。结果是由于在开发初期忽视了与用户的信息沟通和深度需求分析,不但导致系统开发出来后不能很好地满足用户的需求,而且频繁的需求变更返工不仅在技术上给开发人员带来了巨大的麻烦,也使到软件性能深受影响且造成人力、物力的浪费。

轻视小型软件项目需求分析之痛

    一个软件项目的开发主要分为五个阶段:需求分析阶段、设计阶段、编码阶段、测试阶段和维护阶段。需求分析阶段所得到的结果是软件开发其它四个阶段的必备条件。从这次项目的经验来看,只要需求分析中有一个小小的偏差,就可能会导致整个项目无法达到预期的效果,或者说最终开发出的产品不是用户所需要的。

    因此,需求分析在许多大型软件开发中都得到了很好的重视,但让人遗憾的是在小型软件项目中往往会认为需求很简单从而很容易就忽视了需求分析这个重要的步骤。教条主义式的经验使我在这个项目上犯了这个错误,结果是让我付出了更多的心力和更大的代价。反思这次的项目需求分析阶段,我主要犯有以下几个失误:

    (1)轻视用户和开发人员之间的沟通

    在软件开发过程中主要有两种角色:用户和开发人员。需求获取和需求调研是双方沟通的第一步。在小型软件项目中,由于双方都认为项目需求比较简单,就会对需求的描述产生一定的轻视,从而只用几句简单的话来描述。但实际上即使需求调研时用了详细的文字很完善的说明后,用户与开发人员之间还是会存在着或多或少的理解差异。因为文字性的描述总是缺乏精确性,更何况只是几句简单的描述。

    实际上,就算是小型开发项目,其需求获取也可能是最困难、最关键、最易出错的方面。原因是用户可能会对软件开发过程不熟悉,或对自己的需求表达不清楚,而开发人员则对用户的业务流程不熟悉。在这种场合下,开发人员如果单单通过问/答的方式,或者更恶劣一点--只听不问的方式,是无法获取到真正需求的。因为有时候连客户自己也不清楚自己想要的是什么。还有用户表达的同一需求,不同的需求调研人员也可能会有不同的理解。而如果需求调研人员理解错了,就可能会导致以后的开发工作劳而无功。所以,如果因为需求简单就轻视的话,必然会导致后期大量的返工和修改。

    (2)需求在开发前没有被准确地描述

    在反思这次项目的失败原因时,我发现有时连客户对自己的需求也只有朦胧的感觉,或常常也说不清楚具体的需求。例如,用户可能很善于叙述其目标、对象以及他们想要前进的大致方面,但对于他们想要实现的细节却不甚清楚和难以确定。于是用户就会要求需求分析人员替他们设想需求,但需求分析人员要想详细而精确的定义用户心中的需求无疑是很困难的。结果是我们开发完成后,客户却认为这不是他们需要的。这种事情一而再,再而三的发生。不但让我们的开发人员哭笑不得,而且还无言以对。

    (3)用户需求变更频繁,造成开发模式日渐紊乱

    随着时间的推移,用户会对系统的界面、功能和性能等方面提出更高更多的要求。例如,在开发项目过程中,用户随时会提出一些新的需求,有时是在开发阶段中,有时在开发阶段后。而且,这些需求往往是后一次的需求与前一次不一致,也就是所谓的需求变更。后果是在开发中不断补充的需求使到项目越变越庞大,以致超过其计划及预算范围。

    正常的需求变更本来也没有什么大事情,但由于我们在开发模式上没有对需求修改有足够的准备,结果是频繁的变更把整体结构变得日渐紊乱,补丁代码使得整个程序难以理解和维护。不但插入的补丁代码使模块违背强内聚、松耦合的设计原则,而且不断的收回变更和删除特性导致了更多的问题,例如出现软件质量明显下降等现象。

0
相关文章