人月神话
人月神话:即人和月是不可互换的。不存在人月这样的单位。 所有使用人月来衡量软件项目时间的人都是在耍流氓。
- 构建大型软件项目是非常艰难的。
- 大多数程序员在大型项目中每年只能生产出1000行调试好的代码。
- 具有几百名程序员的大型项目和小型项目完全不同,小型项目获得的结果不能放大到大型项目中。
- 大型项目在编码开始之前,大量的时间消耗在规划上
-
*s工作量估计划分:
- 1/3时间规划
- 1/6时间编码
- 1/4时间模块测试
- 1/4时间系统测试
原因
- 工作不可能完全并行化
划分模块和接口完成之前是无法进行编码的。
- 为了完全利用数目众多的程序员,工作必须划分成数据众多的模块,这样每个人才能有事情做。
模块和模块之前是相互关联的,模块越多模块关联越多。模块与模块的关联随着模块数呈平方增长趋势。
- 调试工作是高度序列化的。
增加更多的人进行调试会比安排一个调试人员慢,因为他们在相互沟通上浪费了很多时间。
备注
- 对于一个延期的项目,增加人力将使它延期更久。
现代操作系统对*s定律的简单重述是:
无论分配多少妇女从事这一工作,生一个孩子都需要9个月。
参考
- 现代操作系统
- 人月神话