首页 > 其他分享 >03人月神话阅读笔记

03人月神话阅读笔记

时间:2023-05-24 18:11:06浏览次数:27  
标签:03 神话 实现 定义 形式化 手册 人员 笔记 结构

第5章 画蛇添足
5.1 尽早交流和持续沟通能使结构师有较好的成本意识,以及使开发人员获得对设计的信心,并且不会混淆各自的责任分工。

面对估算过高的难题,结构师有两个选择:削减设计或者建议成本更低的实现方法——挑战估算的结果。后者是固有的主观感性反应。此时,结构师是在向开发人员的做事方式提出挑战。想要成功,结构师必须:

牢记是开发人员承担创造性和发明性的实现责任,所以结构师只能建议,而不能支配;

时刻准备着为所指定的说明建议一种实现的方法,同样准备接受其他任何能达到目标的方法;

对上述的建议保持低调和平静;

准备放弃坚持所作的改进建议;

5.2 在开发第一个系统时,结构师倾向于精炼和简洁。他知道自己对正在进行的任务不够了解,所以他会谨慎仔细地工作。

第二个系统是设计师们所设计的最危险的系统。一种普遍倾向是过分地设计第二个系统,向系统添加很多修饰功能和想法,它们曾在第一个系统中被小心谨慎地推迟了。

当设计师着手第三个或第四个系统时,先前的经验会相互验证,得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分。

项目经理如何避免画蛇添足(second-system effect)?

他必须坚持至少拥有两个系统以上开发经验结构师的决定。

第6章 贯彻执行
6.1 手册、或者书面规格说明,是一个非常必要的工具,尽管光有文档是不够的。手册是产品的外部规格说明,它描述和规定了用户所见的每一个细节;同样的,它也是结构师主要的工作产物。规格说明的风格必须清晰、完整和准确。规格说明作者应该追求的精确程度:在仔细定义规定什么的同时,定义未规定什么。

6.2 手册的作者必须注意自己的思路和语言,达到所需要的精确程度。一种颇具吸引力的作法是对上述定义使用形式化标记方法。形式化定义是精确的,它们倾向于更加完整;差异得更加明显,可以更快地完成。但是形式化定义的缺点是不易理解。

在表达的精确和简明性上,目前所提出的形式化定义,具有了令人惊异的效果,增强了我们进行准确表达的信心。但是,它还需要记叙性文字的辅助,才能使内容易于领会和讲授。如果同时具有两种方式,则必须以一种作为标准,另一种作为辅助描述,并照此明确地进行划分。

最后,关于实际使用标准是形式化描述还是叙述性文字这一点而言,使用实现作为形式化定义特别容易引起混淆,特别是在程序化的仿真中。另外,当实现充当标准时,还必须防止对实现的任何修改。

6.3 对软件系统的体系结构师而言,存在一种更加可爱的方法来分发和强制定义。对于建立模块间接口语法,而非语义时,它特别有用。这项技术是设计被传递参数和共享存储器的声明,并要求编程实现在编译时的一些操作(PL/I的宏或#include)来包含这些声明。

6.4 我们把会议分成两个级别:周例会和年度大会。

周例会是每周半天的会议,由所有的结构师,加上硬件和软件实现人员代表和市场计划人员参与,由首席系统结构师主持。

会议中,任何人可以提出问题和修改意见,但是建议书通常是以书面形式,在会议之前分发。新问题通常会被讨论一些时间。重点是创新,而不仅仅是结论。周例会的决策会给出迅捷的结论,允许工作继续进行。

这种会议的卓有成效是由于:

数月内,相同小组——结构师、用户和实现人员——每周交流一次。因此,大家对项目相关的内容比较了解,不需要安排额外时间对人员进行培训。
上述小组十分睿智和敏锐,深刻理解所面对的问题,并且与产品密切相关。没有人是“顾问”的角色,每个人都要承担义务。
当问题出现时,在界线的内部和外部同时寻求解决方案。
正式的书面建议集中了注意力,强制了决策的制订,避免了会议草稿纪要方式的不一致。
清晰地授予首席结构师决策的权力,避免了妥协和拖延。
随着时间的推移,一些决定没有很好地贯彻,一些小事情并没有被某个参与者真正地接受,其他决定造成了未曾遇到的问题。对于这些问题,有时周例会没有重新考虑,慢慢地,很多小要求、公开问题或者不愉快会堆积起来。为解决这些堆积起来的问题,我们会举行年度大会,典型的年度大会会持续两周。

年度大会的出席人员不仅仅包括体系结构小组和编程人员、实现人员的结构代表,同时包括编程经理、市场和实现人员,由System/360的项目经理主持。

议程典型地包括大约200个条目,每个不同的声音都有机会得到表达。然后,会制订出决策。每天早晨,会议参与人员会在座位上发现更新了的手册说明,记录了前一天的各项决定。

这些“收获的节日”不仅可以解决决策上的问题,而且使决策更容易被接受。每个人都在倾听,每个人都在参与,每个人对复杂约束和决策之间的相互关系有了更透彻的理解。

6.5 在大多数计算机项目中,机器和手册之间往往会在某一天出现不一致,人们通常会忽略手册。因为与机器相比,手册更容易改动,并且成本更低。

然而,当存在多重实现时,情况就不是这样。这时,如实地遵从手册更新机器所造成的延迟和成本的消耗,比根据机器调整手册要低。

6.6 一种有用的机制是由结构师保存电话日志。

日志中,他记录了每一个问题和相应的回答。每周,对若干结构师的日志进行合并,重新整理,并发布给用户和实现人员。这种机制很不正式,但非常快捷和易于理解。

6.7 项目经理最好的朋友就是他每天要面对的敌人——独立的产品测试机构/小组。

该小组根据规格说明检查机器和程序,充当麻烦的代言人,查明每一个可能的缺陷和相互矛盾的地方。每个开发机构都需要这样一个独立的技术监督部门,来保证其公正性。

在最后的分析中,用户是独立的监督人员。产品——测试小组则是顾客的代理人,专门寻找缺陷。

标签:03,神话,实现,定义,形式化,手册,人员,笔记,结构
From: https://www.cnblogs.com/yuncannotjava/p/17429157.html

相关文章

  • mall学习笔记(6)
    1.@Autowired和@Resource注解的区别@Autowired和@Resource注解的区别和联系(十分详细,不看后悔)_莫小兮丶的博客1.@Autowired注解是Spring提供的,而@Resource注解是J2EE本身提供的2.@Autowird注解默认通过byType方式注入,而@Resource注解默认通过byName方式注入不如先看看这两个......
  • 刷题笔记:Luogu P3956 棋盘
    ProblemSolutionDFS/BFS需要注意去重的时候可以重复走(因为有限定条件),只要新的步数比原来的步数小就可以走,其余情况模拟即可细节有点多,比如需要记录一下上一步的棋盘颜色(下一次搜索传递参数),因为牵扯到使用魔法问题,不能直接染,因为改变地图后后边很多操作都会受影响在列举可能性......
  • C#学习笔记 - using语句
    using语句某些类型的非托管对象有数量限制或很耗费系统资源,在代码使用完他们后,尽快释放他们是很重要的using语句有助于简化这一过程,并确保这些资源被适当的处理(0)资源指实现了System.IDisposable接口的类或结构.IDisposalbe接口中有个Dispose的方法,使用这个方法去处置......
  • 微服务架构基本原理学习笔记(一)
    一、什么是微服务微服务是一种技术架构,通常我们可以把它理解为一组可以相互之间协同工作的应用程序或服务,这些应用程序或服务能够被单独部署到不同的服务器中,并且能够自主运行和维护。微服务技术只是一个名称而已,或许我们在日常工作中已经或多或少在使用其中的一种或几......
  • 基于大模型的优质Prompt开发课(3)--学习笔记ing
    在具体场景下优化Prompt常见应用场景与优化示例内容产业规模庞大、领域众多、大模型强大的生成能力给工作和生活带来了极大的想象力。01以营销场景中产品海报背景图生成为例,原始需求是画一张海岛旅游产品的营销海报背景【PromptV0.1】描述:任务+主体?看看这个结果有哪......
  • SSRFmap-20230329
    Usage:ssrfmap.py[-h][-rREQFILE][-pPARAM][-mMODULES][-l[HANDLER]][-v[VERBOSE]][--lhostLHOST][--lportLPORT][--rfiles[TARGETFILES]][--uagentUSERAGENT][--ssl[SSL]][--proxyPROXY][--level[LEVEL]]选项:-h,--help显示此帮助......
  • DAY12笔记及补充
    今日未默写笔记要点:1.BOM定义及组成部分2.window对象3.history对象history.back等价于history.go(-1);history.forward等价于history.go(1)4.location对象<ahref="javascript:window.location.href='XX'">跳转到XX页面</a>5.document对象(1)document.getElementById定义:可......
  • 集中化日志管理平台的应用day03 暂时没用
    3、项⽬搭建3.1项⽬概述搭建⼀套微服务环境,实现多点⽇志采集,⽤于web请求的访问链路跟踪,包含以下跟踪点:请求的前台⻚⾯请求到达nginx的转发记录请求的后台⽅法请求的业务输出标记远程的⽅法调⽤(如有涉及)3.2设计⽬标3.2.1检索维度可以按常⽤维度做到快速检索:某次请求......
  • 学习笔记-sql 篇
    groupbySELECTBIGINT(self_gds_id%10)item_group,CASEWHENBIGINT(self_gds_id%10)IN(0,3,4,5,6,9)THEN'人工定价'ELSE'算法定价'ENDtype--errorFROMjiuwu_sc.ads_spc_service_recycle_process_dsWHEREself_platform_on_shelf_time>......
  • 考古笔记3:通过L3交换机实现VLAN间通讯
    本主要介绍:在cisco中通过L3交换机实现VLAN间通讯。拓扑拓扑A:配置过程配置步骤1:sw2SW2#vlandataSW2(vlan)#vlan10VLAN10added:Name:VLAN0010SW2(vlan)#vlan20VLAN20added:Name:VLAN0020SW2(vlan)#applyAPPLYcompleted.SW2(vlan)#exitAPPLYcompleted.E......