热门问题
时间线
聊天
视角
布鲁克斯法则
来自维基百科,自由的百科全书
Remove ads
布鲁克斯法则(英语:Brooks's law)是人们关于软件项目管理的一种观点。根据这个观点,“在一个已经进度落后的软件项目上再增加人手只会使这个软件项目进度更加落后”[1][2]。这一观点是由佛瑞德·布鲁克斯在他1975年出版的《人月神话》一书中首先提出。根据佛瑞德·布鲁克斯的说法,在某些情况下,增加一个软件项目的人手只会花费更多的开发时间。
说明
布鲁克斯本人认为此法则“过于简化”[1],但可以说明一些大致的情形。布鲁克斯认为布鲁克斯法则的原因是因为以下三点:
- 加入专案的人员需要一段时间后才会有生产力。布鲁克斯称此为ramp-up时间。软件计划是复杂的工程产物,在专案中的新成员需要接受训练,了解之前专案进行的情形,而训练就会分散可用在专案上的人力,在新成员还没有产出时,会暂时让专案的生产力下降。新成员除了会需要资深工程师花时间训练,减少其生产力外,还可能因不熟悉而增加程式的错误,让专案的进度后退。
- 随着人员增加,两两交流的数量也会快速增加(组合爆炸),沟通的成本也会增加[3]。进行相同工作的人员需要维持讯息同步,若越多人加入,维持讯息同步花的时间也会更多。
- 若是高度可分割的工作(像是清理旅馆客房),多加人力可以减少整体进行的时间。但软件专案中许多工作不容易分割,布鲁克斯用一个例子来来说明:一个孕妇九个月可以生下小孩,“但九个孕妇无法在一个月内生下一个小孩”。
Remove ads
例外以及可能的处理方式
在布鲁克斯法则中有些例外的部分,这也可能是可以避免布鲁克斯法则的处理方式[4][5]
第一点要注意到布鲁克斯法则是针对已经落后的专案[6]。若在专案开发的较早阶段加入人力,可能就可以让专案维持在时程内(或至少赶上时程)[7]。很重要是要确定专案是否真的落后了,或者只是专案一开始过于乐观所造成的。时间落后的专案时,大部分都是排程错误所导致的。若要让专案在一个有意义并且可靠的时间内完成,修正排程是最好的作法[8]
加入专案中人员的数量、品质以及其担任角色也是需要考虑的。若要避免落后的专案出现布鲁克斯法则,最简单的方式是加上够多的人,让增加的生产力可以补足训练以及沟通造成的生产力下降[9]。可以加入优良的程式设计者或是专家,以减少训练的时间[10]。也可以让加入的人员参与专案的其他工作,例如品质保证或是撰写文件,只要任务够明确,ramp up时间就可以减短[11]。
良好的分割也可以让团队成员为了沟通花的心力降到最低。较小的团队可以处理较小的子问题,再由最上层团队负责系统整合。若要以这种方式工作,一开始就要将问题以正确的方式进行分割,若分割的不正确,会让问题更恶化。会阻碍二个在不同团队,但其任务紧密耦合成员之间的沟通,就算在专案计划中这二个任务不是紧密耦合的,也是一样。
分割的例子就是设计模式,可以简化工作分散的情形,因为整个团队可以在设计模式的架构下,进行各自的工作。设计模式定义了程式设计者需要依循的规则,用标准语言简化沟通,并且提供一致性以及可扩展性。
“百慕大计划”(Bermuda plan)是指移除专案中大部分的开发者(送到百慕大),让剩下来的开发者完成软件,曾有人提出以此方式来避免布鲁克斯法则[12][13]。
Remove ads
相关条目
参考文献
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads