人月神话——第三篇阅读笔记

人月神话——第三篇阅读笔记

作者提到了一个问题——对于大多数项目,第一个开发的系统并不合用。它可能太慢、太大,而且难以使用,或者三者兼而有之。要解决所有的问题,除了重新开始以外,没有其他的办法——即开发一个更灵巧或者更好的系统。系统的丢弃和重新设计可以一步完成,也可以一块块地实现。所有大型系统的经验都显示,这是必须完成的步骤。而且,新的系统概念或新技术会不断出现,所以开发的系统必须被抛弃,但即使是最优秀的项目经理,也不能无所不知地在最开始解决这些问题。

因此,管理上的问题不再是“是否构建一个试验性的系统,然后抛弃它?”你必须这样做。现在的问题是“是否预先计划抛弃原型的开发,或者是否将该原型发布给用户?”从这个角度看待问题,答案更加清晰。将原型发布给用户,可以获得时间,但是它的代价高昂——对于用户,使用极度痛苦;对于重新开发的人员,分散了精力;对于产品,影响了声誉,即使最好的再设计也难以挽回名声。因此,为舍弃而计划,无论如何,你一定要这样做。

一旦认识到试验性的系统必须被构建和丢弃,具有变更思想的重新设计不可避免,从而直面整个变化现象是非常有用的。第一步是接受这样的事实:变化是与生俱来的,不是不合时宜和令人生厌的异常情况。Cosgrove 很有洞察力地指出,开发人员交付的是用户满意程度,而不仅仅是实际的产品。用户的实际需要和用户感觉会随着程序的构建、测试和使用而变化 。

有很多应变变化的措施——它们包括细致的模块化、可扩展的函数、精确完整的模块间接口设计、完备的文档。另外,还可能会采用包括调用队列和表驱动的一些技术。最重要的措施是使用高级语言和自文档技术,以减少变更引起的错误。采用编译时的操作来整合标准声明,在很大程度上帮助了变化的调整。变更的阶段化是一种必要的技术。每个产品都应该有数字版本号,每个版本都应该有自己的日程表和冻结日期,在此之后的变更属于下一个版本的范畴。

作者认为——因此,项目经理应该制订一套策略,并为通用工具的开发分配资源。与此同时,他还必须意识到专业工具的需求,对这类工具不能吝啬人力和物力——这种企图的危害非常隐蔽。可能有人会觉得,将所有分散的人员集结起来,形成一个公共的工具小组,会有更高的效率。但实际上却不是这样。项目经理必须考虑、计划、组织的工具到底有哪些呢?首先是计算机设施。它需要硬件和使用安排策略;它需要操作系统,提供服务的方式必须明了;它需要语言,语言的使用方针必须明确;然后是实用程序、调试辅助程序、测试用例生成工具和处理文档的字处理系统。

机器支持可以有效地划分成目标机器和辅助机器。目标机器是软件所服务的对象,程序必须在该机器上进行最后测试。辅助机器是那些在开发系统中提供服务的机器。如果是在为原有的机型开发操作系统,则该机器不仅充当目标机器的角色,同时也作为辅助机器。

在编写任何代码之前,规格说明必须提交给测试小组,以详细地检查说明的完整性和明确性。如同 Vyssotsky 所述,开发人员自己不会完成这项工作:“他们不会告诉你他们不懂。相反,他们乐于自己摸索出解决问题和澄清疑惑的办法。”在 1971 年的一篇论文中,Niklaus Wirth 把一种被很多最优秀的编程人员所使用的设计流程形式化。尽管他的理念是为了程序设计,同样也完全适用于复杂系统的软件开发设计。他将程序开发划分成体系结构设计、设计实现和物理编码实现,每个步骤可以使用自顶向下的方法很好地实现。

程序调试过程在过去的二十年中有过很多反复,甚至在某些方面,它们又回到了出发的起点。整个调试过程有四个步骤,跟随这个过程来检验每个步骤各自的动机是一件很有趣的事情。

本机调试。早期的机器的输入和输出设备很差,延迟也很长。典型的情况是,机器采用纸带或者磁带的方式来读写,采用离线设备来完成磁带的准备和打印工作。这使得磁带输入/输出对于调试是不可忍受的。因此,在一次机器交互会话中会尽可能多地包含试验性操作。在那种情况下,程序员仔细地设计他的调试过程——计划停止的地点,检验内存的位置,需要检查的东西以及如果没有预期结果时的对策。花费在编写调试程序上的时间,可能是程序编制时间的一半。这个步骤的“重大罪过”是在没有把程序划分成测试段,并对执行终止位置进行计划的前提下,粗暴地按下“开始(START)”。

内存转储。本机调试非常有效。在两小时的交互过程中可能会发现一打问题,但是计算机的资源非常匮乏,成本很高。想象一下计算机时间的浪费,那实在是一件可怕的事情。因此,当使用在线高速打印机时,测试技术发生了变化。某人持续地运行程序,直到某个检测失败,这时所有的内存都被转储。接着,他将开始艰苦的桌面工作,考虑每个内存位置的内容。桌面工作的时间和本机调试并没有太大的不同,但它的方式比以前更为含混,并且发生在测试执行之后。特定用户调试用的时间更长,因为测试依赖于批处理的周期。总之,整个过程的设计是为了减少计算机的使用时间,从而尽可能满足更多的用户。

扫描二维码关注公众号,回复: 5289514 查看本文章

快照。采用内存转储技术的机器往往配有 20004000 个字(word 双字节),或者 8K16K 字节的内存。但是,随着内存的规模不断增长,对整个内存都进行转储变得不大可能。因此,人们开发了有选择的转储、选择性跟踪和将快照插入程序的技术。OS/360 TESTRAN允许将快照插入程序,无需重新汇编和编译,它是快照技术方向的终极产品。交互式调试。1959 年,Codd 和他的同事以及 Strachey6都发表了关于协助分时调试工作的论文,提出了一种兼有本机调试方式实时性和批处理调试高效使用率的方法。计算机将多个程序载入到内存中准备运行,被调试的程序和一个只能由程序控制的终端相关联,由监督调度程序控制调试过程。当终端前的编程人员停止程序,检查进展情况或者进行修改时,监督程序可以运行其他程序,从而保证了机器的使用率。

猜你喜欢

转载自www.cnblogs.com/ruangongyouxi/p/10422856.html