《人月神话》读后感(三)

发布时间 2023-03-31 22:34:35作者: 布吉岛???

第十二章是干将莫邪。主要讲的是工具很重要,需要专门人员开发。“仿真装置”很重要。不确定性是所有情况中最糟的,因为它剥夺了程序员寻找BUG的能力。

第十三章是整体部分。主要讲的是系统各个组成部分的开发者都会做出一些假设,而这些假设之间的不匹配是大多数致命和难以察觉的BUG的主要来源。

第十四章是祸起萧墙。主要讲的是灾祸通常来自于白蚁的肆虐,而不是龙卷风的侵袭。项目进度经常以一种难以察觉,但是残酷无情的方式慢慢落后。里程碑的日期选择是一个估计技术上的问题,很大程度上依赖以往的经验。里程碑的选择只有一个原则:必须是具体的,特定的,可度量的事件,能够进行清晰的定义。并不是每一天的滞后都等于灾难。如何判断哪些偏离是关键呢?可以采用PERT图(Program Evaluation and Review Technique)。有两种掀开毯子将污垢展现在老板面前的方法:减少角色冲突和鼓励状态共享。老板决不在检查状态的时候做安排。猛地掀开地毯。建立能了解状态真相的评审机制。

第十五章是另外一面。主要强调了“文档”的重要性。即使是完全开发给自己的程序,仍然是必要的,因为记忆会衰退。不同用户需要不同级别的文档:使用程序。不需要了解程序的代码。依赖程序。需要调用程序,因此需要知道程序代码的外部接口修改程序。需要完全知道程序中代码的内部结构。“流程图”被过分吹捧了。自文档化的程序:试图努力维护不同文件之间的同步关系,是一件费力不讨好的事情。 但我们在文档编制的时候违反了这一规则:程序变动总是不能及时准确地反映在文档之中。相应地解决方法就是:将文档整合到源代码中。其实说白了,就是通过加注释等方法提高代码的可读性。如果代码非常好读懂,那就不需要文档了。

最后一章是没有银弹。主要讲的是所有的软件活动包括:根本任务:即打造构成抽象软件实体的复杂概念结构。次要任务:即使用编程语言表达这些抽象实体,在空间和时间限制下将它们映射成机器语言。目前取得的进步基本上都是“次要任务”上的,但是“根本任务”上的困难一直存在,并且可以预见在短时间内无法取得数量级上的进步。困难的特性:复杂度、一致性、可变性、不可见性。

读完这本书学到了很多东西,我认为《人月神话》这本书十分适合软件程序设计者,虽然他简述了许多几十年前的事,但对于现在,仍具有教育意义,它使我们提前意识到软件开发过程中的一些弊端。