俗话说,“良好的开端是成功的一半”。需求获取作为项目伊始的活动,是非常重要的。
目前我们所开发的软件项目一般有两种类型:产品项目和工程项目。
产品项目一般都会有充足的时间进行非常仔细的需求调研和分析,而工程项目却并非如此(因为它往往受诸多因素的影响)。
本文拟讨论如何根据工程项目的实际特点,采用合适的方法低成本高效率地获取用户的需求。
关键词:工程项目 需求获取 方法
产品项目一般是根据公司战略和市场需求研发的旨在进行批量出售或推广的项目,工程项目一般是根据与用户签定的合同研发的旨在满足特定用户需求的项目。
笔者所开发和管理的项目主要是工程项目,在项目的建设过程中,感觉到最头疼的是项目需求的获取;我们往往要花相当大的精力在需求获取和需求确认上,然而有时效果还很不理想。
经过几年时间的项目实践,我们逐步总结出针对不同项目情况所适合采用的需求获取方法,这些方法能大大提高需求获取的效率。现总结之,愿与大家分享。
我们知道,一个工程项目,如果从开发方(即承建方)和用户方(即建设方)对需求的清楚程度来分,大致可以分为如下四种:开发方和用户方都清楚项目需求、开发方不清楚项目需求但用户方清楚、开发方和用户方都不清楚项目需求、开发方清楚项目需求但用户方不清楚。
针对这四种类型的项目,我总结出四种对应的需求获取方法:问卷调查法、会议讨论法、界面原型法和可运行原型系统法。
以下逐一解析之。
一、问卷调查法
所谓“问卷调查法”,是指开发方就用户需求中的一些个性化的、需要进一步明确的需求(或问题),通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。
这种方法适合于开发方和用户方都清楚项目需求的情况。因为开发方和建设方都清楚项目的需求,则需要双方进一步沟通的需求(或问题)就比较少,通过采用这种简单的问卷调查方法就能使问题得到较好的解决。
这种方法的一般操作步骤是:
步骤一、开发方先根据合同和以往类似项目的经验,整理出一份《用户需求说明书》和待澄清需求(或问题)的《问卷调查表》提交给用户;
步骤二、用户阅读《用户需求说明书》,并回答《问卷调查表》中提出的问题,如果《用户需求说明书》中有描述不正确或未包括的需求,用户可一并修改或补充;
步骤三、开发方拿到用户返回的《用户需求说明书》和《问卷调查表》进行分析,如仍然有问题,则重复步骤二,否则执行步骤四;
步骤四、开发方整理出《用户需求说明书》,提交给用户方确认签字。
由于这种方法比较简单、侧重点明确,因此能大大缩短需求获取的时间、减少需求获取的成本、提交工作效率。
二、会议讨论法
所谓“会议讨论法”,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。
这种方法适合于开发方不清楚项目需求(一般开发方是刚开始做这种业务类型的工程项目)但用户方清楚项目需求的情况。因为用户清楚项目的需求,则用户能准确地表达出他们的需求,而开发方有专业的软件开发经验,对用户提供的需求一般都能准确地描述和把握。
这种方法的一般操作步骤是:
步骤一、开发方根据双方制定的《需求调研计划》召开相关需求主题沟通会;
步骤二、会后开发方整理出《需求调研记录》提交给用户方确认;
步骤三、如果此主题还有未明确的问题则再次沟通,否则开始下一主题;
步骤四、所有需求都沟通清楚后,开发方根据历次《需求调研记录》整理出《用户需求说明书》,提交给用户方确认签字。
由于开发方不清楚项目需求,因此需要花较多的时间和精力进行需求调研和需求整理工作。
三、界面原型法
所谓“界面原型法”,是指开发方根据自己所了解的用户需求,描画出应用系统的功能界面后与用户进行交流和沟通,通过“界面原型”这一载体,达到双方逐步明确项目需求的一种需求获取的方法。
这种方法比较适合于开发方和用户方都不清楚项目需求的情况。因为开发方和用户方都不清楚项目需求,因此此时就更需要借助于一定的“载体”来加快对需求的挖掘和双方对需求理解。这种情况下,采用“可视化”的界面原型法比较可取。
这种方法的一般操作步骤是:
步骤一、开发方根据其所了解到的需求(如通过合同或与用户交流),采用界面制作工作描画出应用系统的功能界面;
步骤二、将应用系统的功能界面提交给用户并与用户沟通,挖掘出新需求或就需求达成理解上的一致;
步骤三、开发方就不断获取的需求进行增量式整理,根据新的需求丰富和细化界面原型;
步骤四、双方经过多次界面原型的交互,开发方最终整理出《用户需求说明书》,提交给用户方确认签字。
由于开发方和用户方都不清楚项目需求,因此此时需求获取工作将会比较困难,可能导致的风险也比较大。采用这种“界面原型”的方式,能加速项目需求的“浮现”和双方对需求的一致理解,从而减小由于需求问题可能给项目带来的风险。
针对这种类型的项目,我们也可以采用下面将要介绍的“可运行原型系统法”,但由于开发方对需求不了解(证明以前缺乏类似项目的开发经验和产品积累),如果开发一个可运行的原型系统,则几乎需要从零开始编写代码,前期投入会很大。
四、可运行原型系统法
所谓“可运行原型系统法”,是指开发方根据合同中规定的基本需求,在以往类似项目应用系统的基础上进行少量修改得出一可运行系统,通过“可运行原型系统”这一载体,达到彻底挖掘项目需求的一种需求获取的方法。
这种方法比较适合于开发方清楚项目需求但用户方不清楚项目需求的情况。这种类型的项目,开发方一般都有类似项目的建设经验,因此可以在以往项目的基础上,快速“构建”出一可运行系统,然后借助于这一“载体”来加快对需求的挖掘和双方(特别是用户方)对需求的理解。这种情况下,采用“所见即所得”的可运行原型系统法比较可取。
这种方法的一般操作步骤是:
步骤一、开发方根据其所了解到的需求(如通过合同或与用户交流),在以往类似项目的基础上,快速“构建”出一可运行系统;
步骤二、通过向用户演示“可运行原型系统”,逐步挖掘并让用户确认项目需求;
步骤三、开发方就不断获取的需求进行增量式整理,根据新的需求丰富可运行原型系统;
步骤四、双方经过多次可运行原型系统的交互,开发方最终整理出《用户需求说明书》,提交给用户方确认签字。
由于开发方清楚用户的需求(证明以前有类似项目的开发经验和产品积累),但用户方自己不清楚,因此此时开发一个“可运行原型系统”,开发方的投入不会很大,但对于用户理解和确认项目需求非常有利,因此针对这种类型的项目这是一种比较理想的需求获取方式。
这种方法的另一个好处是:正式系统一般可以在该“可运行原型系统”的基础上演化而成,为后续开发工作节省不少的工作量和成本。
值得注意的是,以上总结出的这四种需求获取方法不是互斥的,我们可以根据项目的实际特点独立应用或组合应用。
“忙碌,不代表有效率;方法,远胜于苦干”。但愿我们从事软件项目开发的朋友们,都能掌握好恰当的方法,以图能获得“事半功倍”的效果。