阅读笔记08

读《人月神话》有感

  

  今天读了《人月神话》中间章节,《人月神话》是软件工程方面的一本经典著作,作者布鲁克斯(Frederick P. Brooks)被誉为“IBM System/360之父”,他曾是这一系统的项目经理,后来在设计期任360操作系统的项目经理。由于这一工作,他与Bob Evans和Erich Bloch 1985年曾获美国国家技术奖。Brooks博士早期曾担任IBM公司Stretch和Harvest计算机的体系结构设计师。1999年,他还荣获美国计算机领域最高奖图灵奖。
我认为,学习编程最困难的地方,是将做事的方式向追求完美的方向调整。事实上,只有实际需要时,才会用到最新的设想,因为所实现的系统已经能满足要求,并体现了回报。实现落后与否的判断应根据其他已有的系统,而不是未实现的概念。因此,我们所面临的挑战和任务是在实际的进度和有效的资源范围内,寻找解决实际问题的切实可行方案。首先,我们对估算技术缺乏有效的研究,更加严肃地说,它反映了一种悄无声息,但并不真实的假设——一切都将运作良好。 第二,我们采用的估算技术隐含的假设人和月可以互换,错误地将进度与工作量相互混淆。 第三,由于对自己的估算缺乏信心,软件经理通常不会有耐心持续的估算这项工作。 第四,对进度缺少跟踪和监督。第五,当意识进度的偏移时,下意识(以及传统)的反应是增加人力。对于软件任务的进度安排,以下是我使用了很多年的经验法则:1/3计划;1/6编码;1/4软件测试和早期系统测试;1/4系统测试,所有的构件已完成。开发并推行生产率图表、缺陷率图表、估算规则等等,而整个组织最终会从这些数据的共享上获益。向进度落后的项目中增加人手,只会使进度更加落后。项目的时间依赖于顺序上的限制,人员的最大数量依赖于独立子任务的数量。经验和实际的表现没有相互联系。实际上,绝大多数大型编程系统的经验显示出,一拥而上的开发方法是高成本的、速度缓慢的、低效的,开发出的是无法在概念上机型集成的产品。Mills建议大型项目的每一个部分有一个团队解决,但是该队伍以类似外科手术的方式组建,而并非一拥而上。也就是说,同每个成员截取问题某个部分的做法相反,有一个人来完成问题的分解,其他人给予他所需要的支持,以提高效率和生产力。(32)外科医生(他亲自定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档); 副手(它的主要作用是作为设计的思考者、讨论着和评估人员。他需要详细了解所有的代码,研究设计策略的备选方案); 管理员(他(外科医生)需要一个控制财务、人员、工作地点和办公设备的专业管理人员,该管理员充当与组织中其他管理机构的接口); 编辑(编辑根据外科医生的草稿或者口述,进行分析和重新组织,提供各种参考信息和书目,对多个版本进行维护,并监督文档生成的机制); 两个文秘(管理员和编辑每个人需要一个文秘。管理员的文秘负责项目的写作一直和非产品文件); 程序职员(他负责维护编程产品库中所有团队的技术记录); 工具维护人员(他的工作是检查他的外科医生所需要的工具,而不是其他团队的需要。工具维护人员常常要开发一些实用程序、编制具有目录的函数库以及宏库); 测试人员(外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对整个工作进行测试); 语言专家(语言专家则寻找一种简洁、有效地使用语言的方法来解决复杂、晦涩或者棘手的问题)。

时间: 2024-10-05 04:45:05

阅读笔记08的相关文章

构建之法阅读笔记08

<软件测试> 以前关于软件测试,我一直有个误区:编程能力弱的可以做软件测试.而实际上,软件测试对测试人员的开发能力有很高的要求,我们生活中总是听说有很多女生编程能力弱,所以就选择软件测试,其实这只是说明软件测试需要细心地专业人才. 测试设计有两类方法:黑箱(Black Box)和白箱(White Box). 黑箱:指的是在设计测试的过程中,把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识.一个更准确的说法是行为测试设计(Be-havioral Test Design),即从软件的

人月神话阅读笔记08

1.我们要谈贯彻执行和提供执行力首先要要考虑纪律,在<专业主义>里面提到过,要想成为专家,有一个重点就是具有永不厌倦的好奇心和进取心,严格遵守纪律.历史上伟大和卓越的企业都有一个共同的特征就是严格遵守纪律和强大的执行力.无论如何完善教育制度,如何增加报酬和改善福利,也不会产生大批的专家.只有纪律——或许称之为价值观更准确些,才能培养出专家. 2.据<创世纪>记载,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,但巴比伦塔同时也是第一个彻底失败的工程.为何拥有了清晰的目标,充足的人力和

梦断代码阅读笔记08

梦断代码2 “乐高假设”:未来,程序将有可复用的部件组合而成.这新西兰学者詹姆斯和罗伯特的假设让我看到了现在软件开发人员现在开发软件的一些步奏.是的,现在的各种软件都有一些工具箱,有一些函数库,这些都为了程序员们开发软件提供了方便.看出来了刚刚十几年的时间,我们It行业发的之迅速,在想法刚刚没产生多久就被人实现,这和在langlang ago,人们梦想这飞行,几年后就能在天上飞,这真是有点异想天开. 我们在编写程序的时候必须去钻牛角尖,如果不能一丝不苟的去完成作品,到后期去修复bug的时 候往往

Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一年……我在博客园-_-#,希望用dt的代码燃烧脑细胞,温暖小心窝. 上篇<Hadoop阅读笔记(一)——强大的MapReduce>主要介绍了MapReduce的在大数据集上处理的优势以及运行机制,通过专利数据编写Demo加深了对于MapReduce中输入输出数据结构的细节理解.有了理论上的指导,仍

Google File System 论文阅读笔记

核心目标:Google File System是一个面向密集应用的,可伸缩的大规模分布式文件系统.GFS运行在廉价的设备上,提供给了灾难冗余的能力,为大量客户机提供了高性能的服务. 1.一系列前提 GFS的系统构建针对其自身使用的特点在传统的分布式系统的基础上又进行了一些创新,基于的前提假设主要包括以下方面: 1.由于系统由廉价的商用机构成,组件失效被认为是一种常态,系统必须可以持续监控自身的状态. 2.系统存储以大文件为主,小文件也支持,但是没有进行特别的优化处理. 3.系统的工作负载主要包含

梦断代码阅读笔记有感之二

08梦断代码阅读笔记有感之二 在梦断代码的一开始我们就学会了如何去写代码,如何成功的去做一个软件工程师. 在现在人的严重,也许软件工程师写出的代码只是让人在玩游戏,在用一些简单的用代码写出的软件.只是认为工程师在不断地重复着一个动作:写代码.但我只能说你们大错特错,就像在文章中说的那样,其实软件工程师是在:“改变世界”,他们利用他们的手用键盘在电脑上打出一行一行的代码,程序产生了,一个新的软件也就产生了.而且,众所周知的,工程师做一个软件,总是在无限制的更新他的内容,让我们的软件更加的先进化,就

Percona XtraBackup User Manual 阅读笔记

XtraBackup XtraBackup.. 1 2 安装XtraBackup.. 1 2.1 安装XtraBackup binary版本... 1 2.1.1 yum的安装方法:... 1 2.1.2 直接下载rpm包安装... 1 3 XtraBackup使用手册... 1 3.1 使用innobackupex脚本... 1 3.1.1 备份预备工作... 1 3.1.2 全备和全备还原... 1 3.1.2.1 使用innobackupex创建全备... 1 3.1.2.2 使用inno

《大道至简---软件工程实践者的思想》阅读笔记二

08大道至简——软件工程实践者的思想阅读笔记之二 2015-06-02 16:41 第五章 失败的过程也是过程 以得失而论,在瀑布模型与RUP模型之间,学习前者而不成,可思过程的本质:学习后者而不成,可得文字的架子. 如果懂得了所谓的模型原本都演化自那个简单的瀑布,那么文档是按XP写还是按RUP写,也就可以应时.应需,因地置宜,择善而从了. 越是简单的东西,往往越是接近于本质. 项目经理的工作,就是要去组织这个工程中的各个角色,使得分工明确,步调一致,共同地完成这个项目. 第六章从编程到工程 我

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.