《人月神话》 读书笔记(二)

  1. 手册或者书面规格说明,是一个非常必要的工具,尽管光有文档时不够的。手册是产品的外部规格说明,他描述和规定了用户所见的每一个细节;同样的,它也是结构是主要的工作产物。(62)
  2. 手册不但要描述包括所有界面在内的用户可见的一切,它同时还要避免描述用户看不见的事物。(62)
  3. 一句古老的格言警告说:”绝不要携带两个时钟出海,带一个或三个。“同样的原则也适用于形式化和记叙性定义。如果同时具有两种方式,则必须以一种作为标准,另一种所谓辅助描述,并照此明确的进行划分。(64)
  4. 所以必须特别指出形式化定义仅仅用于外部功能,说明它们是什么。(65)
  5. 形式化定义是一种设计实现。反之,设计实现也可以作为一种形式化定义的方法。(65)
  6. 作为一种定义,实现体现了更多的内容:它不但描述了系统必须做什么,同时还声明了自己到底做了些什么。(65)
  7. 关于实际使用标准是形式化描述还是记叙性文字这一点而言,使用实现作为形式化定义特别容易引起混淆,特别是在程序化的仿真中。另外,当实现充当标准是时,还必须防止对实现的任何修改。(66)
  8. 我们把会议分成两个级别:周例会和年度大会——这实际上是一种非常有效的方式。(66)
  9. 在大多数计算机项目中,机器和手册之间往往会在某一天出现不一致,人们通常会忽略手册。因为与机器相比,手册更容易改动,并且成本更低。然而,当存在多重实现时,情况就不是这样。这事,如实地遵从手册更新及其所造成的延迟和成本的消耗,比根据机器调整手册要低。(69)
  10. 显然,对于存有疑问的实现人员,应鼓励他们打电话询问相应的结构师,而不是一边自行猜测一边工作,这是一项很基本的措施。(69)
  11. 项目经理最好的朋友就是他每天要面对的对手——独立的产品测试机构/小组。(70)
  12. 那么,既然他们具备了所有的这些条件,为什么项目还会失败呢?他们还缺乏些什么?两个方面——交流,以及交流的结果——组织。他们无法相互交谈,从而无法合作。当合作无法进行时,工作陷入了停顿。(75)
  13. 那么,团队如何进行相互之间的交流沟通呢?通过所有可能的途径。

    非正式途径。清晰定义小组内不得相互关系和充分利用电话,能鼓励大量的电话沟通,从而达到对所书写文档的共同理解。

    会议。常规项目会议。回忆中,团队一个接一个的进行简要的技术陈述。这种方式非常有用,能澄清成百上千的细小误解。

    工作手册。在项目的开始阶段,应该准备正式的项目工作手册。(76)

  14. 项目工作手册不是独立的一篇文档,它是对项目必须产出的一系列文档进行组织的一种结构。(76)
  15. 技术说明几乎是必不可少的。(77)
  16. 事先将项目工作手册设计好,能保证文档的结构本身是规范的,而不是杂乱无章的。另外,有了项目结构,后来书写的文字就可以放置在合适的章节中。(77)
  17. 工作手册的实时更新是非常关键的。(78)
  18. 在文件中,记录修订日起记录和标记变更标识条。每个用户可以从一个显示终端(打印机太慢了)来查阅。每日维护的变更小结以“后进先出”(LIFO)的方式保存,在一个固定的地方提供访问。(79)
  19. 当编程人员仅了解自己负责的部分,而不是整个系统的开发细节时,工作效率最高。这种方法的先决条件时精确和完整地定义所有接口。(79)
  20. 团队组织的目的是减少所需的交流和合作的数量,因此良好的团队组织是解决上述交流问题的关键措施。(80)
  21. 减少交流的方法是人力划分(division of labor)和限定职责范围(specialization of function)。(80)
  22. 首先,需要指出的是,仅仅通过对编码部分的估计,然后应用上述比率,是无法得到对整个任务的估计的;第二, 必须声明的是,构建独立小型程序的数据不是用语编程系统产品。(88)
  23. 工作量=常数*指令的数量^1.5(88)
  24. 对常用编程语句而言,生产率似乎是固定的。这个固定的生产率包括了编程中需要注释,并可能存在错误的情况。

    使用适当的高级语言,编程的生产率可以提高5倍。(94)

  25. 由于规模是软件系统产品用户成本中如此大的一个组成部分,开发人员必须设置规模的目标,控制规模,考虑减小规模的方法,就像硬件开发人员会设立元器件数量目标,控制元器件的数量,想出一些减少零件的方法。同任何开销一样,规模本身不是坏事,但不必要的规模是不可取的。(98-99)
  26. 对项目经理而言,规模控制即使技术工作的一部分,也是管理工作的一部分。他必须研究用户和用户需求,以设置待开发系统的规模。接着,把这些系统化分成若干部分,并设定每个部分的规模目标。由于规模--速度权衡方案的结果在很大的范围内变化,规模目标的设置是一件颇具技巧的事情,需要对每个可用方案有深刻的了解。聪明的项目经理还会给自己预留一些空间,在工作推行时分配。(99)
  27. 和指定驻留空间预算一样,应该制定总体规模的预算;和制定规模预算一样,应该制定后台存储访问的预算。

    在指明模块有多大的同时,确切定义模块的功能。

    培养开发人员从系统整体出发、面向用户的态度是软件编程管理人员最重要的职能(100)

  28. 空间预算的多少和控制并不能使程序规模减小,为实现这一目标,它还需要一些创造性和技能。(101)
  29. 其中一个技巧是用功能交换尺寸;第二个技能是考虑空间——时间的折衷。(101)
  30. 由于缺乏空间而绞尽脑汁的编程人员,常常能通过从自己的代码中挣脱出来,回顾、分析实际情况,仔细思考程序的数据,最终获得非常好的结果。实际上,数据的表现形式是变成的根本。(103)
  31. 慢慢的,他逐渐认识到这些文档的某些部分包含和表达了一些管理方面的工作。每份文档的准备工作是集中考虑,并使各种讨论意见明朗化的主要时刻。如果不这样,项目往往会处于无休止的混乱状态中。文档的跟踪维护是项目监督和预警的机制。文档本身可以作为检查列表、状态控制,也可以作为汇报的数据基础。(108)
  32. 为了进行市场预测,首先需要制定产品性能说明和确定假设的价格。从市场预测得出的数值,连同从设计得出的组件单元的数量,决定了生产的估计成本,进而可以得到每个单元的开发工作量和固定的成本。这些成本又决定了价格。(109)
  33. 这种相似性不是偶然的——任何管理任务的关注焦点都是时间、地点、人员、项目内容和资金。(110)
  34. “设计系统的组织架构收到产品的约束限制,生产出的系统是这些组织结构沟通结构的映射。”(111)
  35. 首先,书面记录决策是必要的。只有记录下来,分歧才会明朗,矛盾才会突出;第二,文档能够作为同其他人的沟通渠道。项目经理会不断发现,许多理应被普遍认同的策略,完全不为团队的去一些成员所知;最后,项目经理的文档可以作为数据基础和检查列表。(111)
  36. 如果已开始就认识到它们的普遍性和重要性,那么就可以将文档作为工具有好的利用起来,而不会让它成为令人厌烦的繁重任务。通过遵循文档开展工作,项目经理能更清晰快速地设定自己的方向。(112)
时间: 2024-10-15 20:52:56

《人月神话》 读书笔记(二)的相关文章

JAVA读书推荐----《深入分析Java Web技术内幕》--《java多线程编程核心技术》--《大型网站技术架构 核心原理与案例分析》-《Effective Java中文版》

(1)  首先推荐的不是一本书,而是一个博客,也是我们博客园另外一位博友java_my_life. 目前市面上讲解设计模式的书很多,虽然我前面讲了看书是最好的,但是对设计模式感兴趣的朋友们,我推荐的是这个博客.这位博友的设计模式讲得非常非常好,我认为90%的内容都是没有问题且很值得学习的,其讲解设计模式的大体路线是: 1.随便开篇点明该设计模式的定义 2.图文并茂讲解该设计模式中的结构 3.以详细的代码形式写一下该种设计模式的实现 4.补充内容 5.讲解该设计模式的优缺点 对于一个设计模式我们关

《大型网站技术架构-核心原理与案例分析》之一: 大型网站架构演化

最近刚刚读完李智慧的<大型网站技术架构-核心原理与案例分析>,对每章重点内容作了一些笔记,以便加深印象及日后查阅. 一.大型网站软件系统的特点 高并发,大流量:需要面对高并发用户,大流量访问. 高可用:系统7X24小时不间断服务. 海量数据:需要存储.管理海量数据,需要使用大量服务器. 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别. 安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击. 需求快

大型网站技术架构--核心原理和案例分析 大型网站架构演化(一)

如果把上世纪90年代CERN正式发布web标准和第一个WEB服务的出现当作互联网的开始,那么互联网站的发展之经历了短短20多年的时间.在20多年的时间里,互联网的世界发生了变化,今天,全球有近一半的人口使用互联网,人们的生活因为互联网而产生了巨大的变化.从信息检索到即使通信,从电子购物到文化娱乐,互联网渗透到生活的每一个 角落,而且这种趋势还在蔓延.因为互联网,我们的世界正变得越来越小. 同时我们也看到,在互联网跨越式发展进程中,在电子商务火热的市场背后却是不堪重负的网站架构.某些B2C网站逢促

《大型网站技术架构核心原理与案例分析》阅读笔记-01

通过阅读该书籍我们能够更加清楚的树立大型网站的的技术发展历程,剖析大型网站技术架构模式,深入的讲述大型互联网架构核心原理,并通过一些典型的技术案例来讲述大型网站开发全景视图,该书籍深入的阐述了各种大型网站面临的各种架构问题及解决方案. 在第一章第一篇大型网站架构演化中了解到与传统企业应用系统相比,大型互联网应用系统具有高并发大流量.高可用性.海量数据.用户分布广泛,网络情况复杂.安全环境恶劣.需求快速变更,发布频繁.渐进式发展等特点:大型网站架构演化发展历程经历了初始阶段的网络架构它的应用程序.

大型网站技术架构-核心原理与案例分析

阿里系的书,也是讲大型网站系统架构的,平常我们总是挂在嘴边的高性能.高可用.易扩展.安全性,这些所谓的系统非功能性指标到底如何实现,书里面讲了这些干货,作为网站架构师或者哪怕是应用系统的架构师,都值得了解,也许不一定都能用上,但是等需要用的那天,你肯定不会迷茫. 1.大型网站架构发展常见历程:应用/数据库分离--->使用缓存--->应用服务器集群--->数据库读写分离--->CDN及反向代理--->使用分布式文件系统和分布式数据库--->NoSQL及搜索引擎--->

【大型网站技术架构 核心原理与案例分析】读书笔记

章节 笔记 1.概述 网站架构模式:分层.分割.分布式.集群.缓存.异步.冗余.自动化.安全. 核心架构要素:性能.可用性.伸缩性.扩展性.安全. 4.高性能 一般重复请求一万次计算总响应时间然后除以一万得到单词响应时间. 测试程序并不是启动多线程然后不停发送请求,而是在两次请求之间加入一个随机等待时间. 吞吐量:每天通过收费站的车辆数目:并发数:正在行驶的车辆数目:响应时间:车速.TPS:每秒事务数:HPS:每秒请求数:QPS:每秒查询数. 性能计数器:System Load(系统负载,最理想

大型网站技术架构-核心原理与案例分析-阅读笔记4

在第四章案例章节中的淘宝网的架构演化案例分析小节中作者主要分析了淘宝架构的演化,以淘宝网的实例给我们分析介绍了淘宝网的业务发展历程及淘宝网的技术架构演化两个方面,在业务发展中作者写到淘宝的技术是随着淘宝业务一起发展起来的,业务是推动这技术发展的动力,淘宝如今的规模和当初有很明显的变化,在技术架构演化中介绍了架构技术的更新升级,该章节中主要介绍淘宝网的发展的历程,在随着时间的发展不断中网站的架构不断的引用着新的技术,由最初简单的c2c更改过来的网站,放弃了lamp架构转而使用java作为开发平台并

大型网站技术架构-核心原理与案例分析-阅读笔记3

在第二章的架构章节中的 随机应变:网站的可拓展架构的篇章中作者介绍了构建网站的可扩展架构.利用分布式队列降低系统的耦合性.利用分布式可复用的业务平台.可拓展的数据结构.利用开放平台建设网站生态圈五个方面,作者在讲述前通过微信的成功发布及其中摇一摇功能的加入的开发的快捷引出来的,其中构建网站的可扩展架构中区分了扩展性和伸缩性的区别,讲到了低耦合性的系统跟容易扩展,并且更容易复用,一个低耦合性的系统也可以让系统更加容易的开发和维护,在如何降低系统的耦合性中,作者主要介绍用分布式消息队列的方法来降低系

大型网站技术架构-核心原理与案例分析-阅读笔记5

在第四章案例章节中的海量分布式存储系统Doris的高可用架构设计分析的小节中作者主要分析介绍了分布式存储的高可用架构和不同故障情况下的高可用解决两个方面,在两小节前作者给我们介绍了Doris是一个海量分布式KV存储系统,其设计的目的是支持中等规模高可用.可伸缩的Kv存储群.跟主流的NoSQL系统HBase相比,doris具有相似的性能和线性伸缩能力,并具有更好的可用性及更友好的图形用户管理界面.而在分布式存储的高可用架构的小节中作者给我们分析了Doris的整体架构,其系统整体上可分为应用程序服务

学习笔记8:《大型网站技术架构 核心原理与案例分析》之 固若金汤:网站的安全架构

一.网站攻击与防御 攻击: 1.XSS攻击:危险字符转义,HttpOnly 2.注入攻击:参数绑定 3.CSRF(跨站点请求伪造):Token,验证码,Referer Check 4.其他漏洞攻击 Error Code HTML 注释 文件上传 路径遍历 防御: 1.Web应用防火墙:ModSecurity 2.网站安全漏洞扫描 二.信息加密技术与密钥管理 1.单向散列加密 2.对称加密 3.非对称加密 4.密钥安全管理 三.信息过滤与反垃圾 1.文本匹配:正则,Trie算法,多级Hash,降噪