《人月神话》读后感

      在放假前老师推荐了这本书,开始看到书名感觉是在讲人类与月球之间的故事,后来阅读之后才发现人月是指在估计和进度安排中使用的工作量单位。理解了书名的意思,我继续阅读这本书。

      第一章:焦油坑

      作者在书中介绍了焦油坑的概念,提出在过去几十年的大型系统开发就犹如一个焦油坑。各种团队,大型的、小型的,庞杂的和精干的,一个接一个淹没在焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累计在一起的时候,团队的行动就会变得越来越慢。

     作者从编程系统产品、职业的乐趣和职业的苦恼方面让我们认识了软件开发这个职业以及充满在这个职业中的乐趣与 苦恼。简单的程序已经不能称作系统,编程系统和编程产品称为编程系统产品。它的成本高达九倍。只有编程系统产品才是真正有用的产品,是大多数系统开发的目标。乐趣是任何职业都不能缺少的,只有有了乐趣才会有动力,才会有创造力。虽然现在我们对于软件开发没有很清楚的概念,但是我们也应该充满一种好奇心和一种乐趣,体会其中魔术般的力量。苦恼是必不可少的,我们应正确看待这些烦恼。

     第二章:人月神话

     Brooks法则:向进度落后的项目中增加人手,只会使进度更加落后。

     进度问题是项目管理最为关注的问题。项目的时间依赖于顺序上的限制,人员的数量依赖于单个子任务的数量。

     在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要的原因。文章分析了几个原因。乐观主义:所有的编程人员都是乐观主义。人月:用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。系统测试:在早期进度策划时,允许充分的系统测试时间是非常重要的。空泛的估算。重复产生的灾难。

     通过这一章,我们看到了在软件开发中会出现的一系列问题。这些问题发现了,我们就应该时刻注意,及时解决。

     第三章:外科手术队伍

     在软件开发过程中,小组之间要有明确的分工。由一个人来进行问题的分解,其他人给予他所需要的支持,以提高效率和生产力。小组成员之间要进行及时的沟通。

     第四章:贵族专制、民主政治和系统设计

      作者认为概念完整性应该是最重要的考虑因素。概念的完整性要求设计必须由一个人,或者非常少数互有默契的人员来实现。不能与系统基本概念进行整合的良好想法和特色,最好放到一边,不予考虑。在外部说明完成之前,设计实现人员有很多事情可以做。只要有一些最终将并入外部说明的系统功能雏形,他就可以开始了。文中简要说明了设计实现人员的工作流程,给我们以后学习工作提供了一个向导。

      第五章:画蛇添足

      开发第二个系统所引起的后果。项目经理必须坚持至少拥有两个系统以上开发经验结构师的决定。同时,保持对特殊诱惑的警觉,他可以不断提出正确的问题,确保原则上的概念和目标在详细设计中得到完整的体现,以避免画蛇添足。

      第六章:贯彻执行

      假设一个项目经理已经拥有行事规范的结构师和许多编程实现人员,那么他如何确保每个人听从、理解并实现结构师的决策?对于一个由1000人开发的系统,一个10个结构师的小组如何保持系统概念上的完整性?要有文档化的规格说明—手册,形式化定义,直接整合,会议和大会,多重实现,电话日志,产品测试,这些内容在《软件工程概论》中也有相关的介绍。

      第七章:为什么巴比伦塔会失败?

      交流的至关重要。团队之间要通过所有可能的途径进行相互之间的交流沟通。交流和交流的结果—组织,是成功的关键。交流和组织的技能需呀管理者仔细考虑,相关经验的积累和能力的提高同软件技术本身一样重要。

      第八章:胸有成竹

      实践是最好的老师,但是,如果不能从中学习,再多的实践也没有用。系统编程需要花费多长的时间?需要多少的工作量?如何进行估计?作者对几个数据进行了分析,我们应从数据中学习,在实践中总结,做到胸有成竹,这样才会提高效率和生产力。

      第九章:削足适履

      作为成本的程序空间:由于规模是软件系统产品用户成本中如此大的一个组成部分,开发人员必须设置规模的目标,控制规模,考虑减小规模的方法。规模控制。空间技能。数据的表现形式是编程的根本。在软件开发中,我们要尽量减小规模,减少成本,扩大空间。

      第十章:提纲挈领

      文档是很好的工具。书面计划是精确和可以沟通的。平时学习中,我们并不重视文档的书写,看完这张,意识到了文档的重要性,以后要加强文档的规范化。

      第十一章:未雨绸缪

      唯一不变的就是变化本身。为变更计划系统,为变更计划组织架构,前进两步,后退一步。前进一步,后退一步。

      第十二章:干将莫邪

      主要讲述项目中管理好各种工具的重要性,项目经理首先要制定一种策略,让各种工具成为公用的工具,这样才能使开发、维护和使用这种工具的开发人员的效率更高,这种工具可能是开发人员开发出来的,也可能是使用现有的,可能是通用的,也可能是专用的或个人偏好的。比如:文档编写工具、开发工具(包括各种不同开发平台)、调试工具、测试工具、数据库工具、版本管理、项目管理工具等。

      第十三章:整体部分

      剔除bug的设计。构件单元测试。细致的功能定义、详细的规格说明、规范化的功能描述说明以及这些犯法的实施,大大减少了系统中必须查找的bug数量。产品定义的重要性。

      第十四章:祸起萧墙

      这章节说明使项目进度拖后的最大原因不是重要的事件,如新技术、重组等,而是一些琐碎的小事,每件小事只耽误半天或一天时间,但这种小事多以后,将使项目的进度严重拖后。

      第十五章:另一面

      1.流程图:流程图是被吹捧得最过分的一种程序文档。许多程序甚至不需要流程图,很少程序需要一页以上的流程图

      2.自动文档化(self-documenting)的程序:提出文档与程序合为一体,能很好的解决文档与程序分开造成的文档过时的问题,并说明了在程序中加入文档的一些方法和技巧。

      第十六章:没有银弹—软件工程中的根本和次要问题

      作者通过软件系统的内在特性复杂性、一致性、可变性和不可见性来分析说明了软件天生就没有银弹。 作者试图通过分析软件问题的本质和很多侯选银弹的特征来探究其中的原因。

      第十七章:再论《没有银弹》

      作者认为软件开发困难的部分是概念的结构,如规格化、设计和测试等概念的结构,而不是概念的表述和实现概念,虽然实现概念可能占用了小于90%的时间,就如现今的软件开发一样,系统分析通常占用的整个项目开发时间不超过20%,而80%的时间花在编程上一样。

      这本书让我对软件工程的程序设计开发的认识有了巨大的改变,要在实践中总结学习。

posted @ 2015-02-24 10:55  eunicer  阅读(379)  评论(1编辑  收藏  举报