读书笔记:今天翻书读完了人月神话,总的来说有些囫囵吞枣。在后半本书中,Brooks的表达中有更多的悲观主义色彩,软件是难以开发而且不存在银弹的,但追求稳定的质量,更高的效率以及可控的成本是项目经理是需要矢志不渝追求的目标,就像作者所说——人就是一切。持续学习,保持进取,共勉。
整体部分 | 1. 精确定义产品细节有助于减少BUG产生 2. 自上而下的设计是保证系统完整性的一种实施方式 3. 重视对变更的控制以及定期变更 |
祸起萧墙 | 1. 警惕微小的落后对进度带来的影响,这个微小的落后可能演变为灾难性偏离 2. 确定好的里程碑,不好的里程碑反而是团队的负担 3. 减少角色冲突和鼓励状态共享和猛地拉开地毯都是向老板告知地毯下污垢的办法 |
另外一面 | 1. 作为程序文档的流程图意义不大 2. 把文档整合到源代码中,注意编码规范 |
没有银弹-软件工程中的根本和次要问题 | 1. 复杂度、一致性、可变性、不可见性构成解决软件问题的根本困难 2. 从人员、编码方式、定义产品上依然有诸多方法可以取得稳定进步 |
再论《没有银弹》 | 1. 解决软件构件根本困难的最佳方法是不进行任何开发,重用是一个解决问题的良好方法,但是仍需良好的设计和文档 2. 复杂性依然是软件行业最大的限制,我们可以在软件生产率上取得逐步的进展,而不是等待不大可能到来的突破 |
20 年后的人月神话 | 1. 核心观点是概念完整性和结构师 2. 未雨绸缪当中为舍弃而计划是错误的!应当逐步舍弃和设计,而不是一次性完成替换。 3. 增量开发更贴近我们的开发过程 |
名词注解:
1. 祸起萧墙:“祸起萧墙”的原义是祸乱产生于家中,比喻灾祸、变乱皆由内部原因所致
2. 银弹:消灭狼人的工具,书中把“一种可以使软件成本像计算机硬件成本一样降低的方法”比作银弹。
摘录:
1. 里程碑的选择只有一个原则,那就是,里程碑必须是具体的、特定的、可度量的事件, 能够进行清晰定义。
2. 对计划和控制职能进行适度的技术人力投资是非常值得赞赏的。它对项目的贡献方式 和直接开发软件产品有很大的不同。计划和控制小组作为监督人员,明白地指出了不易察觉 的延迟,并强调关键的因素。他们是早期预警系统,防止项目以一次一天的方式落后一年。
3. 我认为相应的解决方案是“合并文件”,即把文档整合到源代码。这对正确维护是直接 有力的推动,保证编程用户能方便、即时地得到文档资料。这种程序被称为自文档化
4. 没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。
5. 我认为软件开发中困难的部分是规格化、设计和测试这些概念上的结构,而不是对概 念进行表达和对实现逼真程度进行验证。
6. 解决软件构建根本困难的最佳方法是不进行任何开发。软件包只是达到上述目标的方 法之一,另外的方法是程序重用。实际上,类的容易重用和通过继承方便地定制是面向对象 技术最吸引人的地方。
7. 软件工程的焦油坑在将来很长一段时间内会继续地使人们举步维艰,无法自拔。软件 系统可能是人类创造中最错综复杂的事物,只能期待人们在力所能及的或者刚刚超越力所能 及的范围内进行探索和尝试。这个复杂的行业需要:进行持续的发展;学习使用更大的要素 来开发;新工具的最佳使用;经论证的管理方法的最佳应用;良好判断的自由发挥;以及能 够使我们认识到自己不足和容易犯错的——上帝所赐予的谦卑。