人月神话读书笔记3

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

好的自顶向下设计从几个方面避免了bug:

首先,清晰的结构和表达方式更容易对需求和模块功能进行精确的描述。

其次,模块分割和模块独立性避免了系统级的bug。

另外,细节的隐藏使结构上的缺陷更加容易识别。

第四,设计在每个精化步骤的层次上是可以测试的,所以测试可以尽早开始,并且每个步骤的重点可以放在合适的级别上。

第十四章-祸起萧墙。当人们听到某个项目的进度发生了灾难性的偏离时,可能会认为项目一定遭受了一系列重大灾难。然而,灾祸来自白蚁的肆虐,而不是龙卷风的侵袭。同样,项目进度经常以一种难以察觉,但是残酷无情的方式慢慢落后。这个真的深有感触,一般都是很小的地方跟自己说,这个地方有特殊处理先放一下,那个地方回头再测试,结果最后报进度的时候就落后了。这个主要还是靠项目经理把握,有些明确的节点一定要亲自检查成果并及时调整计划,不然后果不堪设想。
第十六章,第十七章-没有银弹。狼这种民间传说中存在的怪物,会在月圆之夜由我们熟悉的人类面孔变成可怕的狼脸。我们熟悉的软件项目也有着人狼的特性,看似简单明了的外表,但是却可能随时变成一个进度落后、超出预算、存在大量缺陷的怪物。在民间传说中对付人狼唯一可靠的武器就是银弹。所以银弹在软件项目中就是比喻这种使得软件成本像计算机硬件成本一样迅速降低的尚方宝剑。然而,作者在40年前悲观的告诉我们,没有银弹。40年后我们回首望去,这个预言恐怕是真的。在软件开发中存在着4个天生的根本困难——复杂度、一致性、可变性和不可见性。现代软件工程中通过高级语言、分时系统、面向对象程序设计、使用开源库、敏捷开发等新的理论实践不断在克服软件开发中的次要困难,同时也减轻了一些根本困难。但始终不能消除软件复杂度这样的根本性困难。因为随着软件工具能力不断的提升,软件开发中需要面对的复杂度其实也是在不断提升的。所以,我们在软件生产效率上的提升需要的是逐步的进步,而不是期待一个一蹴而就的突破。
第十九章—20年后的人月神话。
软件工程的焦油坑在将来很长一段时间内会继续使人们举步维艰,无法自拔。软件系统可能是人类创造中最错综复杂的事物,只能期待人们在力所能及的活在刚刚超越力所能及的范围内进行探索和尝试。这个复杂的行业需要:进行持续的发展;学习使用更大的要素来开发;新工具的最佳使用;经论证的工程管理方法的最佳应用;良好的自我判断以及能够使我们认识到自己的不足——上帝所赐予的谦卑。
 
posted @ 2023-03-31 20:24  一个不会起名字的人  阅读(16)  评论(0编辑  收藏  举报