【软件工程】《人月神话》书摘
《人月神话》是由IBM System/360系统之父佛瑞德·布鲁克斯所著经典文集,全书讲解软件工程、项目管理相关课题,被誉为软件领域的圣经,内容源于作者布鲁克斯在IBM公司System/360家族和OS/360中的项目管理经验。
焦油坑
- 编程,一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。
- 大型系统的开发表面上没有单独的问题能够导致困难,但是众多小问题纠缠在一起,团队的行动就会非常缓慢,最终举步维艰,淹没在焦油坑中。
人月神话
- 人月是危险和带有欺骗性的神话。
- Brooks法则:为进度落后的项目增派人手,只会使进度更加落后。
外科手术队伍
- 小型、精干的队伍是最好的。
- 一位首席工程师、类似于外科手术队伍的团队架构提供了一种方法——既能获得由少数头脑产生的产品完整性,又能得到多位协助人员的总体生产率,还彻底地减少了沟通的工作量。
贵族专制、民主政治和系统设计
- 概念完整性是系统设计中最重要的考虑因素。
- 功能与理解上的复杂度的比值才是系统设计的最终测试标准。
画蛇添足
- 第二个系统是人们所设计的最危险的系统。
贯彻执行
- 出于精确性考虑,需要形式化地设计定义。需要记叙性定义加深理解。
为什么巴比伦塔会失败
- 巴比伦塔失败是因为缺乏交流以及交流的结果——组织,包括项目工作手册和组织架构。
胸有成竹
- 仅仅通过对编码部分时间的估计,然后乘以其他部分的相对系数,是无法得到对整项工作的精确估计的。
- 当使用适当的高级语言时,程序编制的生产率可以提高5倍。
削足适履
- 除了运行时间外,程序所占据的内存空间也是主要开销。
- 数据的表现形式时编程的根本。
提纲挈领
- 项目经理应该在项目早期对上述的一系列文档进行规范化。
未雨绸缪
- 为舍弃而计划。
- 为变更计划组织架构。
- 前进两步,后退一步——程序维护。
- 前进一步,后退一步——系统熵随时间增加。
干将莫邪
- 调试工作总是在夜间完成。
- 高级语言不仅提高了生产率,还改进了调试。
- 交互式编程的生产率至少是原来的两倍。
整体部分
- 在编写任何代码之前, 规格说明必须提交给测试小组, 以详细地检查说明的完整性和明确性。
祸起萧墙
- 项目延迟是难以识别、 更不容易防范和更加难以弥补的。
- PERT 的准备工作是 PERT 图使用中最有价值的部分。
另外一面
- 文档能在整个生命周期对克服懒惰和进度的压力起促进激励作用。
没有银弹
- 软件开发中的困难部分:规格说明、设计和测试。
- 根本困难:软件系统的内在特性:复杂度、一致性、可变性、不可见性。
- 一些突破:高级语言、分时。
- 银弹的希望:高级语言、面向对象编程、人工智能、专家系统、“自动”编程、图形化编程、程序验证、环境和工具、工作站。
- 颇具前途的方法:购买、增量开发、需求精炼、卓越的开发人员。