我安排办公室购买了几十本《软件开发经济学》,给公司的技术管理人员每人发一本,让大家好好学习。希望大家懂得软件开发是一门生意,让这门生意赚钱的方法就是如何用最快时间、最小的投入成本交付一个客户满意的软件产品。
在此之前,我一直为很多软件项目不能按期保质交付感到苦恼。最初,我认为是人的开发能力不行。但换了有经验的开发人员,虽然有所改进,但依旧延期交付。换个角度,我在想是不是客户过于挑剔?多次和客户沟通后,我发现的客户要求也合情合理,并不算苛刻。不是人的问题,那是不是工作量太大?或者任务很艰巨?这确实是项目延期交付的一个重要原因,从头开始的软件开发项目,延期交付的可能性远远大于有成熟产品和应用经验的开发项目。但即便如此,用成熟产品做二次开发,依然存在项目的延期交付。百思不得其解,我只有从书本上找答案。我一口气从当当网上买了五本软件开发方法论的书籍,这本《软件开发经济学》首先吸引住了我,它解答了我很多困惑,让我明白,可能是我们软件开发的方法出了问题。
很多软件项目,采用的是瀑布法进行开发。先做需求分析,做设计,进行代码开发,测试,最后部署交付,是一个顺序过程,一个阶段完成再过渡到下一个阶段。今年,我们开发的一个项目基本就是采用瀑布法进行开发,系统涉及多个模块,并行进行,每个模块的研发周期是9个月,每个模块投入公司2-3名开发人员,投入算比较大的项目,项目比原计划的进度延期3个月。其中,需求调研和分析约2个月,其调研和分析结果与后期功能实现有较大差距。由于系统未做原型,后期根据客户需求更改的工作量也很大。好在客户主管非常专业,技术路线选择正确,项目管理严格,项目总算基本到达试用条件。但从经济性角度看,这个项目并不经济。《软件开发经济学》向我们推荐的是迭代法,每个阶段都有产出结果,不同阶段逐渐细化和实现这个产出物。这是由软件需求的不确定性决定的,起始阶段需求并不明确,过分细化需求,对后续开发并无很大的好处,但要拿出这个阶段的演示原型。细化阶段对技术路线进行明确,并进一步在此基础上给出原型。构建阶段,分几个里程碑进行迭代,每次不断完善实际系统,最终形成客户满意的产品。今年,我们开发的一个管理信息系统就是按照迭代法进行开发。系统开发周期4个月,基本按照进度计划执行。起始阶段,我们和客户共同拿出了详细的演示原型,经客户项目认可后,进入构建阶段。在构建阶段,我们也设定几个迭代阶段,如功能就绪版、数据导入版、数据准确版、客户试用版、最终交付版等。由于客户看到了系统原型,需求就很明确,软件代码人员也能够较准确实现需求,且对其技能需求要求也并不高,后期的功能返工也较少,成本可控,经济性较好。所以,以这两个实际案例做比较,我就更加信服书中所着重介绍的迭代法,我认为这是解决我们软件开发管理中困惑的更先进的方法。
对迭代法,每个阶段都有很好的指南和评估工具,希望我的同事们能够认真学习,了然于心,掌握它,并熟练应用它,我就不会为迟迟不能交付的项目发愁了。
加载中,请稍候......