人月神话之第一章焦油坑

原创 2017年04月09日 08:31:36

‘焦油坑’一词,来自《拉布雷阿的焦油坑壁画》,书中说这样写的“史前史中,没有别的场景比巨兽们在焦油坑里垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油坑里挣扎。它们挣扎得越猛烈,焦油纠缠得就越紧,没有哪种猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。”作者将过去几十年的大型系统开发比作焦油坑,很多大型和强壮的动物在其中剧烈挣扎,他们中大多数开发出了可运行的系统,但是不得不承认只有极少数的项目满足了目标、进度和预算的要求。因为在各种团队中,无论是大型的或小型的,庞杂的或精炼的,一个接一个地淹没在了焦油坑中。

报纸上经常会出现这样的新闻,讲述两个程序员如何在经过改造的简陋车库中,编程超过大型团队工作量的重要程序。接着每个编程的人员准备相信这样的神话,因为他们知道自己能以超过产业化团队的1000行代码行/年的生产效率来开发任何程序。其实在没有看这本书之前,我也是同样惊叹于在这种情形下所能生产的成果。但是我们往往忽略了或者压根就不知道:并不是所有的产业化队伍都会被这专注的二人组合所替代,我们需要看产出的是什么,程序、编程产品、编程系统、编程系统产品完全不是同一个概念和层级。
所谓的程序,它本身是完整的,可以由作者在所开发的系统平台上运行。它通常是车库里生产的产品,以及作为单个程序员生产效率的评估标准。有两种途径可以使程序转变成更有用但是成本更高的产物:编程产品和编程系统。

所谓的编程产品,它可以被任何人运行、测试、修复和扩展的程序。它可以在多种操作系统平台上运行,供多套数据使用。要成为通用的编程产品,程序员必须按照普遍认可的风格来编写,特别是输入的范围和形式必须广泛地适用于所有可以合理使用的基本算法。接着,对程序进行彻底的测试,确保它的稳定性和可靠性,使其值得信赖。这就意味着必须准备、运行和记录详尽的测试用例库,用来检查输入的边界和范围。此外,要将程序提升为编程产品,还需要有完备的文档,每个人都可以加以使用、修复和扩展。经验数据表明,相同功能的编程产品的成本,至少是已调试的程序的成本的3倍。

所谓的编程系统,它是在功能上能相互协作、具有规范的格式、可以进行交互的程序的集合,并且可以用来组装和搭建整个系统。要成为编程系统构件,程序必须按照一定的要求编制,使输入和输出在语法和语义上与精确定义的接口一致。同时程序还要符合预先定义的资源限制-内存空间、输入输出设备、计算机时间。最后,程序必须和其他系统构件单元一起,以任何想象到的组合进行测试。由于测试用例会随着组合不断增加,所以测试的范围必须广泛。因为一些意想不到的交互会产生许多不易察觉的bug,测试工作将会非常耗时,因此相同功能的编程系统构件的成本至少是独立程序的3倍。如果系统有大量的组成单元,成本还会更高。
所谓的编程系统产品,与以上的所有的简单的程序都不同的是,它的成本高达9倍。然而,只有它才是真正有用的产品,是大多数系统开发的目标。

产品开发所基于的技术在不断进步。一旦涉及被冻结,在概念上就已经开始陈旧了。不过,实际产品需要一步一步按阶段实现。实现落后于否的判断应该是根据其他已有的系统,而不是未实现的概念。因此我们面临的挑战和任务是在实际的进度和有效的资源范围内,寻找解决实际问题的切实可行方案。
这就是编程,一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。

版权声明:本文为博主原创文章,未经博主允许不得转载。

【人月神话】第一章:焦油坑

最近在看《人月神话》,分享一下自己的读书笔记个人的感受。希望能对大家有所帮助。第一章主要就是讲软件编程就是一个乐趣与苦恼并存的焦油坑。本书用了一个很新形象的比喻:大型软件系统的开发就像是一个焦油坑(像...
  • xiaoguaihai
  • xiaoguaihai
  • 2015年11月23日 19:36
  • 795

逃离焦油坑的伟大尝试——《人月神话》推荐

软件危机中的项目经理的思考  这段时间读了一些与软件工程专业相关的书,开拓了不少视野,也重新认识了软件工程这个专业。在这些书之中,也包含了被尊为“软件工程圣经”的人月神话。   《人月神话》的作者 ...
  • SYSU_101
  • SYSU_101
  • 2017年10月20日 19:59
  • 70

第1章 焦油坑

第一章 焦油坑标签: 人月神话 前车之鉴,后车之覆 第一章 焦油坑编程系统产品 职业的乐趣 职业的苦恼 编程系统产品 编程系统的演进 图的左上部分是程序(Program),它本身是完整的,可以由...
  • wwwdc1012
  • wwwdc1012
  • 2017年04月29日 16:13
  • 335

人月神话第一章焦油坑试读

《人月神话》内容源于作者Brooks在IBM公司任System计算机系列以及其庞大的软件系统OS项目经理时的实践经验。《人月神话》探索了达成一致性的困难和解决的方法,并探讨了软件工程管理的其他方面。在...
  • nanwang21
  • nanwang21
  • 2015年06月05日 14:50
  • 390

【软件工程】人月神话

人月神话(The Mythical Man-Month: Essays on Software Engineering)是一本关于“软件工程”和“项目管理”的书,由Fred Brooks写于1975。...
  • limHappipen
  • limHappipen
  • 2016年12月08日 10:05
  • 371

人月神话笔记-焦油坑、人月神话

人月神话笔记-焦油坑、人月神话焦油坑程序、编程系统、编程产品、编程系统产品 程序 本身是完整的 可以在指定的平台运行 作为单个程序员的生产率的评估标准 编程产品: 可以被任何人运行、测试、修复和扩...
  • zjiang1994
  • zjiang1994
  • 2017年12月22日 16:20
  • 96

人月神话—焦油坑

    岸上的船儿如同海上的灯塔,无法移动。——荷兰谚语    【作者将大型系统开发比作焦油坑,为什么如此比喻?造成焦油坑似的困难的根源是什么?本质是什么?该如何解决?焦油坑似的痛苦处境仅仅是对编程人...
  • shubao2651
  • shubao2651
  • 2010年02月26日 15:11
  • 800

人月神话-焦油坑

岸上的船儿,如何海上的灯塔,无法移动。 - 荷兰谚语焦油坑的意思说明了即使你足够强大,也无法摆脱束搏而沉到坑底。IT项目也是这样,不论是开发大型软件系统还是小型项目,都会遇到诸多复杂的问题和影响因素,...
  • wzhwho
  • wzhwho
  • 2010年03月10日 21:29
  • 535

人月神话--焦油坑

前车之覆,后车之鉴 表面上任何一个问题都能解决 但当它们纠缠在一起,团队就会变慢,麻烦复杂程度,让每个人都惊讶,很难看清本质 编程系统产品 每个程序员都能以超过产业化团队1000行/年的生产率...
  • hello_zyg
  • hello_zyg
  • 2017年03月19日 19:35
  • 509

《人月神话》-焦油坑

开始的开始,让我们对软件开发这个职业,以及充满在这个职业中的乐趣和苦恼有了生动形象的认识。...
  • Arthur_02_13
  • Arthur_02_13
  • 2016年12月02日 14:20
  • 718
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:人月神话之第一章焦油坑
举报原因:
原因补充:

(最多只允许输入30个字)