焦油坑
经验数据表明,相同功能的编程产品的成本,至少是已经过测试的程序的三倍; 编程系统产品的成本高达九倍。
职业的乐趣:创造。
职业的苦恼:必须追求完美;由他人来设定目标;概念性设计是有趣的,琐碎bug是无聊的;产品得不到应用。
人月神话
在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还大。原因:错误地将进度与工作量相互,,不估算,对进度缺少跟踪和监督,进度偏移即增加人力。
乐观主义:
过于乐观;
人月(估计和进度安排中使用的工作量单位):
成本的确随开发产品的人数和时间的不同,有着很大的变化,进度却不是如此。因为软件开发本质上是一项系统工作——错综复杂关系下的一种实践——沟通、交流的工作量非常大,它很快会消耗任务分解所节省下来的个人时间。从而,添加更多的人手,实际上是延长了,而不是缩短了时间进度。
系统测试:
通过对传统项目进度安排的研究,我发现很少项目允许为测试分配一半的时间,但大多数项目的测试实际上是花费了进度中一半的时间。 它们中的许多项目, 在系统测试之前还能保持进度。或者说,除了系统测试,进度基本能保证 。
空泛的估算:
受限于顾客要求的紧迫程度, 但紧迫程度无法控制实际的完成情况。
重复产生的进度灾难:
向进度落后的项目中增加人手,只会使进度更加落后。 (Adding m anpow er t o a l at esof t w are proj ect m akes i t l at er)
项目的时间依赖于顺序上的限制,人员的数量依赖于单个子任务的数量。
在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还要大。
外科手术队伍
需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试) 。
这种进退两难的境地是非常残酷的。对于效率和概念的完整性来说,最好由少数干练的人员来设计和开发, 而对于大型系统, 则需要大量的人手, 以使产品能在时间上满足要求。如何调和这两方面的矛盾呢?
MILLS的建议