Skip to main content Link Menu Expand (external link) Document Search Copy Copied

1. 焦油坑

过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧 烈地挣扎

实际上,我认为学习编程的最困难部分,是将做事的 方式往追求完美的方向调整。

下一个烦恼——概念性设计是有趣的,但寻找琐碎的 bug 却只是一项重复性的活动。 伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。

人们发现调试和查错往往是线性收敛的,或者更糟糕的是,具有二次方的复杂 度。结果,测试一拖再拖,寻找最后一个错误比第一个错误将花费更多的时间。

2. 人月神话

在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所 有因素加起来的影响还大。

用人月作为 衡量一项工作的规模是一个危险和带有欺骗性的神话

对于软件任务的进度安排,以下是我使用了很多年的经验法则:

  • 1/3计划
  • 1/6编码
  • 1/4构件测试和早期系统测试
  • 1/4系统测试,所有的构件已完成

向进度落后的项目中增加人手,只会使进度更加落后。(Adding manpower to a late software project makes it later)

3. 外科手术队伍

我常常重复这样的一个观点,需要协作沟通的人员的数量影响着开发成本,因为成本 的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)。 这一点,也暗示系统应该由尽可能少的人员来开发。

测试人员。外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对 整个工作进行测试。因此,测试人员既是为他的各个功能设计系统测试用例的对头,同时也 是为他的日常调试设计测试数据的助手。他还负责计划测试的步骤和为测试搭建测试平台。