“整体部分”这章讲了我们的构思是有缺陷的,因此总会有bug。但我们可以利用一些方法来减少bug的出现,细致的功能定义、详细的规格说明、规范化的功能描述说明以及这些方法的实施,大大减少了系统中必须查找的bug 数量。构件的单元测试,单元测试这一概念在这学期学习软件工程课时老师经常提到,作者很有先见性,测试对于发影藏的bug起着很大作用。
“祸起萧墙”,本章讲了软件开发的不可与预测性。对计划和控制职能进行适度的技术人力投资是非常值得赞赏的。它对项目的贡献方式和直接开发软件产品有很大的不同。计划和控制小组作为监督人员,明白地指出了不易察觉的延迟,并强调关键的因素。他们是早期预警系统,防止项目以一次一天的方式落后一年。软件项目一旦偏离,需要考虑的因素很多。
“另外一面”,作者预见性的认为“自文档化”方法的基本思想可以得到大规模的应用。““自文档化”方法”对空间和格式要求更为严格,这一点的应用可能会受限;而命名和结构化声明显然可以利用起来,在这方面,宏可以起到很大的帮助;另外,段落注释的广泛使用在任何语言中都是一个很棒的实践。而现代软件工程开发中各种文档起着很重要的作用。
“没有银弹-软件工程中的根本和次要问题”,所有软件活动包括:根本任务——打造由抽象软件实体构成的复杂概念结构。次要任务——使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。软件任务中的必要活动,也就是那些和构造异常复杂的抽象概念结构有关的部分:仔细地进行市场调研,避免开发已上市的产品。在获取和制订软件需求时,将快速原型开发作为迭代计划的一部分。有机地更新软件,随着系统的运行、使用和测试,逐渐添加越来越多的功能不断挑选和培养杰出的概念设计人员。针对概念上根本问题的颇具前途的方法:购买和自行开发。构建软件最可能的彻底解决方案是不开发任何软件;需求精炼和快速原型;增量开发——增长,而非搭建系统;卓越的设计人员,是那些激动人心、拥有广大热情爱好者的产品往往是一个或者少数伟大设计师们的思想。再论“没有银弹”,作者列举出了当时一些非常先进的技术或思想理念,例如ada和其他高级编程语言、面向对象编程、人工智能、专家系统、"自动"编程、图形化编程、程序验证、环境和工具、工作站等。虽然这些先进技术在 一定程度上提高了软件开发的效率,但是始终没有达到银弹的效果。距离作者的预言已经过去有20多年了,纵观现在的软件开发领域,虽然新技术层出不穷,但是还是没有一种银弹能够让软件开发产生一次革命。
《人月神话》的观点:是与非,总结了先前的知识点。
20年后的《人月神话》,软件工程的焦油坑在将来很长一段时间内会继续地使人们举步维艰,无法自拔。软件系统可能是人类创造中最错综复杂的事物,只能期待人们在力所能及的或者刚刚超越力所能及的范围内进行探索和尝试。这个复杂的行业需要:进行持续的发展;学习使用更大的要素来开发;新工具的最佳使用;经论证的管理方法的最佳应用;良好判断的自由发挥;以及能够使我们认识到自己不足和容易犯错的---上帝所赐予的谦卑。
《人月神话》探索了达成一致性的困难和解决的方法,并探讨了软件工程管理的其他方面。在《人月神话》中,既有很多发人深省的观点,又有大量软件工程的实践,为每个复杂项目的管理者给出了自己的真知灼见大型编程项目深受由于人力划分产生的管理问题的困扰,保持产品本身的概念完整性是一个至关重要的需求。以我现在的水平还不能完全读明白人月神话,希望以后抽时间多读几遍,细读几遍。