技术开发 频道

人月到底有多少神话色彩?Boehm的模型和数据

【IT168 分析评论】

    很多年来,人们对软件生产率和影响它的因素进行了大量的量化研究,特别是在项目人员配备和进度之间的平衡方面。

    最充分的一项研究是Barry Boehm对63个项目的调查,其中大多数是航空项目和25个TRW公司的项目。他的《软件工程经济学》(Software Engineering Economics)不但包括了很多结果,而且还有一系列逐步推广的成本模型。尽管一般商业软件的成本模型和根据政府标准开发的航空软件成本模型中的系数肯定不同,不过他的模型使用了大量的数据来支撑。我想从现在起,这本书将作为一代经典。

    他的结果充分地吻合了《人月神话》的结论,即人力(人)和时间(月)之间的平衡远不是线性关系,使用人月作为生产率的衡量标准实际是一个神话。特别的,他发现:

    第一次发布的成本最优进度时间,T = 2.5(MM)1/3。即,月单位的最优时间是估计工作量(人月)的立方根,估计工作量则由规模估计和模型中的其他因子导出。最优人员配备曲线是由推导得出的。

    当计划进度比最优进度长时,成本曲线会缓慢攀升。时间越充裕,花的时间也越长。

    当计划进度比最优进度短时,成本曲线急剧升高。

    无论安排多少人手,几乎没有任何项目能够在少于3/4的最优时间内获得成功!当高级经理向项目经理要求不可能的进度担保时,这段结论可以充分地作为项目经理的理论依据。

    Brooks准则有多准确?曾有很多细致的研究来评估Brooks法则的正确性,简言之,向进度落后的软件项目中添加人手只会使进度更加落后。最棒的研究发表在Abdel-Hamid和Madnick在1991年出版的一本颇有价值的书《软件项目动力学:一条完整的路》16(Software Project Dynamics:An Integrated Approach)中。书中提出了项目动态特性的量化模型。关于Brooks准则的章节提供了更详细的分析,指出了在各种假设下的情况,即何时添加多少人员将会产生什么样的结果。为了进行研究,作者扩展了他们自己一个中型规模项目的模型,假设新成员有学习曲线和需要额外的沟通和培训工作。他们得出结论“向进度落后的项目中添加人手总会增加项目的成本,但并不一定会使项目更加落后。”特别的,由于新成员总会立刻带来需要数周来弥补的负面效应,所以在项目早期添加额外的人力比在后期加入更加安全一些。

    Stutzke为了进行相似的研究,开发了一个更简单的模型,得出了类似的结果17。他对引入新成员进行了详细的过程和成本分析,其中包括把他们的指导人员调离原有的项目任务。他在一个真正的项目上测试了他的模型,在项目中期的一些偏移之后,他成功地添加了一倍人手,并且保证了原先的进度。相对于增加更多程序员,他还试验了的其他方法,特别是加班工作。在他的很多条实践建议中,最有价值的部分是如何添加新成员,进行培训,用工具来支持等等。特别值得注意的是,他建议开发项目后期增加的开发人员,必须作为团队成员,愿意在过程中努力投入和工作,而不是企图改变或者改进过程本身!

    Stutzke认为更大型的项目中,增加的沟通负担是次要作用,没有对它建模。至于Abdel-Hamid和Madnick是否或者如何考虑这个问题,则不是很清楚。上面提到的两个模型都没有考虑开发人员必须重新安排的事实,而在实际情况中,我发现这常常是一个非常重要的步骤。

    这些细致的研究使“异常简化”的Brooks准则更加实用。作为平衡,我还是坚持这个简单的陈述,作为真理的非常好的近似,以及一项经验法则??警告经理们避免对进度落后的项目采取的盲目、本能的修补措施。

0
相关文章