定制软件开发项目管理如何做到人力资源及项目成本合理控制?
定制软件开发已成为现代软件工程中较常见的做法,定制软件开发可以使我们获得专门的技术知识、降低人力资源成本、控制项目成本。目前我们进行得项目中就存在着定制软件开发的情况,比如内部的数据库系统、信息查询系统的软硬件等等。在实际定制软件开发项目管理中,我对以下几个问题得出了一些心得体会,现提议出来可供其他项目参考实践,相信这些思路也适用于其他的软件开发管理。
定制软件开发第一步要做的是,先要弄清楚软件的详细需求。用户需求分析可以分为功能性需求和非功能性需求。功能性需求就是软件的具体使用功能,而非功能性需求可分为软件的扩张性、稳定性等性能需求。对于功能性需求,是指我们或者客户使用这个软件要达到什么目的,要求这个软件有什么样的功能。
由于客户的用户需求非常笼统,因此软件开发方按一般的行业软件进行开发,结果花上大价钱开发出来的软件在使用时才发现根本不符合该客户的特殊需求,最后只好束之高阁。由于当初没有把客户需求完全细化,等到软件开发出来才又要求增加功能,而临时增加功能就意味着增加费用,实际费用可能是当初预算费用的几倍,这样的项目意味着失败。
这些都是软件开发项目中可能会实实在在遇到的深刻教训,因此,强烈建议软件开发需求的项目组把软件的需求分析完全分析透彻,并文档化,并作为合同的一个附件。这样便于软件承包方更好地分析项目,开发软件,出现争议也能够更好地解决。我们在无障碍查询机项目中采取了这种方法,取得了比较好的效果。
在定制软件开发工程中,保证质量的进度是很难控制的。对于项目经理来说需要一整套复杂的能力,比如制定计划、确定优先顺序、干系人的沟通、评价等,每一种能力都与项目的最终结果有直接或者间接的关系。但是,如果我们项目经理没有接受过正规训练,缺乏项目管理方面的专业知识的技巧,如果只是凭借已往的少量经验盲目去做,容易出现各种问题。尤其是在管理软件开发项目时,缺乏足够的经验和技巧,往往造成进度不断推迟,而质量无法保证的情况。但是,我们在实际的定制软件开发项目管理中采用了计划管理手段的里程碑管理方式,合理的控制了项目的进度,使项目按时交付给客户。
一般来说,在项目开始时,项目组成员都会对项目制定一个详细的计划。通常情况下,在明确的工作说明书(SOW)和WBS的基础上制定具体的进度计划时,需要采用一些具体的技术,像这种定制软件开发项目,最成熟的技术是里程碑管理。
里程碑一般是项目中完成阶段性工作的标志。不同类型的项目,里程碑也不同。比如,在开发项目中,可以将需求的最终确认、产品移交等关键任务作为项目的里程碑。不过,要注意的是,每到一个里程碑处,应及时对前段工作进行小结,并对后续工作进行计划调整。对于一些管理效果明显的领域,可以不必投入较多精力。而对于下一步管理过程中可能会出现问题的领域,应给予较多的关注。当然,在软件项目里,进度的变化是较常见的事情。因此,如何在保证项目预算内、满足质量的前提下,按进度完成项目。根据我们的实践,推荐一种较实用的方法——尽量利用历史数据。我们应该尽力调查之前的项目情况,将会发现可以类比的情况,事先就可以知道需要管理质量和进度的关系。
最后,定制软件开发还有一个后期维护的问题。软件全部安装测试通过并交付使用了,项目就全部结束了吗?软件发包方与软件承包者就没有任何关系了吗?不是的。任何软件都会存在维护期,而对于大型的软件来说这个期限一般是一年。在这段时期内,如果发现软件有BUG,也就是说使用中发现有问题,都可以要求软件承包方重新改正。有时在使用后,觉得应该增加新的功能,也可以提出要求让软件承包方对程序进行升级。当然,增加新的功能一般是要付费的,所以应该尽量避免,因此,我们必须尽可能在最初分析用户需求时就涉及到所有的功能要求,这一点在前面已经讲到过,就不再重复了。还有一点要特别注意的是,在交付软件时,一般要求软件承包方提供全部的源代码和技术文档,这样的话如果以后对方由于各种原因不能维护软件时,我们还可以委托其他软件承包方对软件进行维护或升级。现在我们的企业内部数据库系统就准备采用这种方式。
以上谈了我在定制软件开发中的一些经验和教训。在实际的项目软件开发时,可能因为行业的不同对软件的要求千差万别,但对于软件开发的要求都有着共通性。因此只要能认真做好以上这几点,并在实践中不断思考和总结,相信一定能委托到合适的软件承包方,开发出满足我们各种项目中适合该项目特殊要求的软件,来帮助我们的客户做好日常的经营和管理工作,提升客户的满意度,进而提供我们的竞争力,使我们进一步做大、做强,获得长足的发展。