1 人月神话_part1

2017-11-09  本文已影响0人  brightsunp

1 编程的乐趣

2 职业的苦恼

3 人月神话

英文是The Mythical Man-Month。用人月衡量一项工作的规模,是一个危险和带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。

缺乏合理的时间进度是造成项目滞后的最主要原因,比其他所有因素加起来影响还大。成本的确随开发产品的人数和时间的不同,有很大变化,进度却不是如此。向进度落后的项目中增加人手,只会使进度更加落后:从三个方面增加了项目必要的总体工作量:任务重新分配本身和所造成的工作中断;培训新人员;额外的相互沟通。

人类和时间的互换仅仅适用于以下情况:某个任务可以分解给参与人员;子任务之间不需要相互沟通。调试、测试的次序特性,使得很多任务无法分解。软件开发的实践,很快会消耗任务分解所节省下来的个人时间,并不会缩短时间进度。

4 合理的软件任务安排

剔除bug的设计;构建单元调试、系统集成调试。

5 十人编程

同样有两年经验,而且受到同样培训的情况下,优秀程序员的工作效率是较差程序员的十倍。需要协作沟通的人员数量影响着开发成本,因为成本的主要部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统测试)。

6 实现人员的心态

概念完整性是系统设计最重要的考虑因素,功能与理解上的复杂程度之比是系统设计的最终测试标准,必须由一个人或者具有共识的小型团队来完成。实现人员的反对意见:

实现同样是一项高级别的创造性活动;具体实现中创造和发明的机会,并不会因为指定了外部技术说明而减少,反而创造性活动因为规范化会得到增强。应该在文档完成的时候,再雇佣编程实现人员。

体系结构、设计实现、物理实现,许多工作可以同时开始和并发地进行。

7 巴别塔的失败

伊甸园

上帝耶和华用七天时间创造了世间万物,亚当和夏娃赤身躶体地住在伊甸园,所有的动物都要听从亚当的指挥。但上帝警告说智慧树上的果子绝不能碰。在一条蛇(撒旦)的引诱下,两人先后吃了智慧果,被上帝诅咒并赶出了伊甸园,人类于是有了原罪。

诺亚方舟

上帝见到地上充满罪恶,计划用洪水消灭恶人。但他发现有个叫诺亚的好人,便指示诺亚建造一艘方舟,把妻子、儿子儿媳,以及一对对动物带上方舟。洪水过后,上帝在天空制造了彩虹,与人们约定再也不会有大洪水。(“彩虹之约”)

巴别塔

大家商量着建造一座城和一座通天塔,这样即使再有洪水也不用畏惧。“传扬我们的名,免得分散在全地上” vs “赞美耶和华,要传扬他的名”

上帝的回应很绝妙:使人类的语言不通,因为只要大家能有效沟通,就可以成就极大的事情,语言承担的角色相当重要。上帝不用剿灭建筑工人,没有暗杀、监视、离间等,不动用任何武力,只简简单单变乱了口音,便能直击要害。

8 团队的有效沟通

不是独立的一篇文档,而是对项目一系列产出文档的组织框架。包括目的、外部规格说明、接口说明、技术标准、内部说明和管理备忘录。如果实现制订了良好结构,可以将后来的文字放置在合适的章节中,实时更新是至关重要的。

在基本语句级别,生产率似乎是固定的;使用适当的高级语言(相比汇编语言),生产率可以提高5倍。高级语言不仅提升了生产率,还改进了调试:bug更少,以及更容易寻找。

上一篇下一篇

猜你喜欢

热点阅读