首页 > 其他 > 详细

人月神话阅读笔记-02

时间:2019-02-20 22:28:35      阅读:169      评论:0      收藏:0      [点我收藏+]

画蛇添足

第二个系统是设计师们所设计的最危险的系统。而当他着手第三个或第四个系统时,先前的经验会相互验证,得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分。一种普遍倾向是过分地设计第二个系统,向系统添加很多修饰功能和想法,它们曾在第一个系统中被小心谨慎地推迟了。这个标题起得让人摸不清头脑,其实值得是第二系统效应(second-system effect)。认识到第二个系统存在的风险,可以让架构师保持警惕,少犯错误。

为什么巴比伦塔会失败?

清晰的目标?是的,尽管幼稚得近乎不可能。而且,项目早在遇到这个基本的限制之前,就已经失败了;人力?非常充足;材料?在美索不达米亚有着丰富的泥土和柏油沥青;足够的时间?没有任何时间限制的迹象;足够的技术?是的,金字塔、锥形的结构本身就是稳定的,可以很好分散压力负载。对砖石建筑技术,人们有过深刻的研究。同样,项目远在达到技术限制之间,就已经失败了;那么,既然他们具备了所有的这些条件,为什么项目还会失败呢?他们还缺乏些什么?两个方面——交流,以及交流的结果——组织。他们无法相互交谈,从而无法合作。当合作无法进行时,工作陷入了停顿。通过史书的字里行间,我们推测交流的缺乏导致了争辩、沮丧和群体猜忌。很快,部落开始分裂——大家选择了孤立,而不是互相争吵。

胸有成竹

对规模平均为3200指令的程序...大约单个的程序员所需要的编码和调试时间为178个小时,由此可以外推得到每年35800语句的生产率。而规模只有一半的程序花费时间大约仅为前者的四分之一,相应推断出的生产率几乎是每年80,000代码行1。计划、编制文档、测试、系统集成和培训的时间必须被考虑在内。因此,上述小型项目数据的外推是没有意义的。就好像把100码短跑记录外推,得出人类可以在3分钟之内跑完1英里的结论一样。
工作量和代码行数不是线性关系,而是指数型关系:工作量 = (常数)×(指令的数量)^1.5。
Aron的数据:很少的交互 10,000指令每人年;少量的交互 5,000;较多的交互 1,500。

OS/360的数据:600-800(经过调试的指令)/人年

Corbato的数据:平均生产率是1200行经过调试的PL/I语句/人年;Corbato的数据是行为单位,每行语句对应3-5个指令。

上述所有数据的结论:对于常用编程语句而言,生产率似乎是固定的。这个固定的生产率包括了编程中需要注释,并可能存在错误的情况;生产率随着系统复杂性或者难度增加而降低;使用适当的高级语言,编程的生产率可以提高5倍。

未雨绸缪

因此,管理上的问题不再是“是否构建一个试验性的系统,然后抛弃它?”你必须这样做。现在的问题是“是否预先计划抛弃原型的开发,或者是否将该原型发布给用户?”从这个角度看待问题,答案更加清晰。将原型发布给用户,可以获得时间,但是它的代价高昂——对于用户,使用极度痛苦;对于重新开发的人员,分散了精力;对于产品,影响了声誉,即使最好的再设计也难以挽回名声。因此,为舍弃而计划,无论如何,你一定要这样做。

虽然Brooks在50年前就已经提出构建可抛弃原型的必要性,并且在各类开发模型中也都强调原型的必要性,但是到今天,可抛弃原型仍然没有被大部分实践所接受。或许,知道该做什么,和实际去做之间,永远存在一个鸿沟。另一种可能性是,可抛弃原型虽然很好,但是显然没有达到“必须”的程度。它带来的好处不足以弥补其代价,是今天大部分实践中并未采用的原因。
系统软件开发是减少混乱度(减少熵)的过程,所以它本身是处于亚稳态的。软件维护是提高混乱度(增加熵)的过程,即使是最熟练的软件维护工作,也只是放缓了系统退化到非稳态的进程。
系统开发的熵论,非常的形象有趣。为变更而计划组织架构,其实只是一句让你认识到软件开发过程中“唯一不变的是变化”这一条真理。然而这也是一条悖论,如果只有变化的话,那么计划就没有意义了。关键在于我们需要计划出不变的部分,为变化留出空间。

祸起萧墙

项目是怎样延迟了整整一年的时间?…一次一天。但是一天一天的进度落后是难以识别、不容易防范和难以弥补的。昨天,某个关键人员生病了,无法召开某个会议。今天,由于雷击打坏了公司的供电变压器,所有机器无法启动。明天,因为工厂磁盘供货延迟了一周,磁盘例程的测试无法进行。下雪、应急任务、私人问题、同顾客的紧急会议、管理人员检查——这个列表可以不断地延长。每件事都只会将某项活动延迟半天或者一天,但是整个进度开始落后了,尽管每次只有一点点。

对于这种逐渐延迟的进度,Brooks提议简历项目里程碑,并且持续的修订项目计划,这样无论最后的情况变得多么糟糕,它都不会有太大的变化。里程碑是指百分之百的事件,必须有明显的边界和没有歧义。这样就很好有人可以在里程碑进展上弄虚作假。

人月神话阅读笔记-02

原文:https://www.cnblogs.com/chenyuchun/p/10409498.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!