人月神话阅读笔记03

贯彻执行

对产品的文档化规格说明是必要的,他应该用清楚的形式化定义表达。开发人员之间应该定期有不同层次(大会、组例会、电话)的交流,并对交流进行记录,整理和思考。开发人员应坚守手册,尤其在有多重实现时,大型项目中的测试小组对确保用户体验十分重要。世界的规律就是一切往着混乱的方向发展,所以我们往往需要耗费很大的精力将上层的决策向基层贯彻执行。即使是大型的设计团队,设计结果也必须由一个或两个人来完成,以确保这些决定是一致的。必须明确定义体系结构中与先前定义不同的地方,重新定义的详细程度应该与原先的说明一致。

为什么巴比伦塔会失败

巴比伦塔的制造是一个神话故事,但是其中的道理却对今天人们的协作有着重要的启示。软件系统的开发完全通过计算机执行,为什么还是很少有远程协作的企业,这是因为远程协作很容易导致交流的缺失。大型的软件项目开发需要团队中的每个人能及时了解到整个团队在做些什么,这就需要经常的交流。交流的方式可以通过非正式的电话、网络,也需要正式的会议和工作手册。

胸有成竹

仅仅通过对编码部分的估计,然后乘以任务其他部分的相对系数,是无法得出对整项工作的精确估计的。格局 — 这个东西太重要了,大多数人都过于安逸和自满了,跳出安逸和舒适圈是痛苦的过程,但是带来的新事物、新观点会让你的眼界有极大的提升

未雨绸缪

对于大多数项目,第一个开发的系统并不合用。它可能太慢、太大,而且难以使用,或者三者兼而有之。系统的丢弃和重新设计可以一步完成,也可以一块块地实现。这是个必须完成的步骤,如果将开发的第一个系统丢弃原型发布给用户,可以获得时间,但是它的代价很高。对于用户,使用极度痛苦;对于重新开发的人员,分散了精力;对于产品,影响了声誉,即使最好的再设计也难以挽回名声。第一次开发的系统应该准备好要抛弃,因为变化不可避免要对此计划好系统与组织架构的变化缺陷修复会引入新的bug,而且到了最后必然会不能再进行改进。正如大思想家斯宾塞·约翰逊曾经说过“唯一不变的是变化本身”,我们要为变更设计系统,为变更计划组织架构。

祸起萧墙

一天一天的进度落后比起重大灾难,更难以识别,更不容易防范和更加难以弥补。关键路径技术是衡量是否延期的重要方法,每个人都要尽量让自己的工作远离关键路径。项目对于公司就如程序对测试工程师一样,如果不了解它,它就是一个黑盒子,如果不打开这个黑盒子,你可能永远不知道盒子里面有什么。

另外一面

试图维护不同文件之间的同步关系,是一件非常费力不讨好的事情。对于程序而言,"合并文档"才是比较好的解决方案,而且最好做到自文档化。对于软件编程产品来说,程序向用户所呈现的面貌与提供给机器识别的内容同样重要,为了使文档易于维护,将它们合并至源程序是至关重要的,而不是作为独立文档进行保存。

没有银弹

复杂性,一致性,可变性以及不可变性这四个根本特性决定了软件开发中很难出现银弹。人狼是传说中的妖怪,只有银弹才能杀死他,我认为软件项目具有人狼的特性,因为软件项目也可能变成一个怪物,一个落后进度、超出预算、存在大量缺陷的怪物。没有银弹这篇文章里作者列举出了当时一些非常先进的技术或思想理念,例如Ada和其他高级编程语言、面向对象编程、人工智能、专家系统、“自动”编程、图形化编程、程序验证、环境和工具、工作站等。虽然这些先进技术在一定程度上提高了软件开发的效率,但是始终没有达到银弹的效果。距离作者的预言已经过去有20多年了,纵观现在的软件开发领域,虽然新技术层出不穷,但是还是没有一种银弹能够让软件开发产生一次革命。

人月是一个神话,现如今软件工程却是真实地在解决软件过程中的问题,提高软件产品的质量。研究人员和实践人员的不断探索或许永远无法一劳永逸地解决所有问题,但是从中积累地经验却能够有效地指导我们更好地应对大型软件系统的实现与管理。

posted @ 2020-02-05 23:24  ziyuliu  阅读(89)  评论(0编辑  收藏  举报