阅读《架构之美》笔记01
一开始老师让我们在寒假去阅读一些关于软件体系架构的书,一开始还没什么想法,后来去了知乎了解了一些相关的书籍,也从中选出了一本阅读。这本书就是《架构之美》--让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。
再说这本书之前,我们的先了解他的作者--Till Adam。
Till Adam在年轻时学习了哲学、比较文学、美国研究和音乐学,职业是音乐人。由于没有发财和出名,他转而攻读科学硕士,学习了数学、计算机科学和商业。多年对自由软件的贡献(特别是对KDE的贡献)教会了他编程,也为他带来了在Klarälvdalens Datakonsult AB工作的机会,他在该公司负责协调KDE的开发和其他与自由软件相关的活动。他和他的妻子、女儿住在德国柏林。
Jim Blandy在1990年至1993年间为自由软件基金会维护GNU Emacs,和Richard Stallman一起发布了Emacs的第19个版本。他是Subversion版本控制系统的最初设计者之一。他也是CVS版本控制系统、GNU调试器(GDB)、Guile扩展语言库和一个编辑基因序列的Emacs程序的贡献者。他为Mozilla公司工作,工作内容是SpiderMonkey,即Mozilla的Javascript编程语言的实现。Jim和他的妻子、两个女儿住在俄勒岗的波特兰。
Mirko Boehm从1997开始就是KDE的开发者,在1996年至2006年间是KDE e.V.委员会的成员。他毕业于德国汉堡Helmut Schmidt大学的商业专业。在他的私人生活中,他阅读纸版书籍、与家人在一起,试图远离计算机。他在德国柏林为Klarälvdalens Datakonsult AB工作,负责跨平台软件和嵌入式软件开发。
Christopher Dennis自2005年JCP项目开始时,就是项目的主开发者。Chris在牛津大学读博士时开始采用Java。此前,他使用过各种编程语言,从16进制小键盘上编写的Z80机器码到PHP和JavaScript。他对特殊情况、编码技巧和偶尔有点丑陋的临时编码很有兴趣,喜欢用各种语言编写紧凑的、优雅的代码。
Dave Fetterman是Facebook的工程经理,他在那里创建了Facebook平台项目。在2006年加入Facebook之前,他是一名软件工程师,参加Microsoft开发者部门的项目,包括.NET的通用语言运行环境(CLR)。他喜欢为其他开发者创建软件,也喜欢对愿意听的人发表长篇大论。他拥有应用数学的学士学位,并在2003年获得了哈佛大学的计算机科学硕士学位。
Keir Fraser是XenSource的创始人之一,XenSource是Citrix Systems公司的一部分。他也是Xen系统管理程序的首席架构师。Keir在2002实现了Xen的第一个版本,作为他在剑桥计算机实验室攻读博士学位时的一项娱乐。在该项目成为大规模的社群合作的过程中,他继续作为主要的开发者。他因在无锁并发控制方面的工作,于2004年获得了博士学位,并在同年成为一名教师。
Peter Goodliffe是一名程序员、专栏作家、演说家和作家,从来不在同一软件领域做过多的停留。Pete的热门书籍“Code Craft (No Starch Press)”是对整个编程追求的实际而有趣的调查——大约600页,真是了不起!他对制革很有热情,而且不穿鞋。
Georgios Gousios是一名职业研究者,接受的教育和软件工程有关,热衷于软件开发。他正在希腊的雅典经济学与商业大学完成他的博士论文。他的研究兴趣包括软件工程、软件品质、虚拟机和操作系统,他拥有英国曼彻斯特大学的科学硕士学位。Gousios为多个开源软件项目贡献过代码,并参与了各种学术项目和商业项目的研究与开发。他是SQO-OSS项目的项目经理、设计权威和主要开发成员,为评估软件品质探索一些创新的方法。在他的学术生涯中,Gousios在会议和杂志上发表了10篇技术论文。Gousios是ACM、IEEE、Usenix Association和Technical Chamber of Greece的成员。
Dave Grove是IBM的T.J. Watson研究中心动态优化组的一名研究员。他的主要研究兴趣包括分析和优化面向对象语言、虚拟机设计和实现、JIT编译、在线反馈导向的优化和垃圾收集。他在1998年参加了Jalapeño项目,是这个优化编译器和适应式优化系统首个实现的主要贡献者。自Jalapeño在2001年作为Jikes RVM开放源码以来,他一直是Jikes RVM核心团队和指导委员会的活跃成员。
John Klein是软件工程研究所(SEI)的高级技术人员,他的研究方向是“众系统之系统”的架构方法,并帮助个人、团队和组织机构改进他们的软件架构能力。在加入SEI之前,John是Avaya公司的首席架构师。在Avaya,他负责开发多模式的代理、通信分析的架构,以及为各种客户交互产品创建并改进架构。在此之前,John是Quintus的一名软件架构师,在那里他设计了第一款获得商业成功的多渠道集成联系中心产品,并导致了Quintus兼并了另外两家公司,实现了产品组合的技术集成。在加入Quintus之前,John曾为多家视频会议和视频网络业的公司服务。他的职业生涯开始于Raytheon,在那里他为雷达信号处理、多光谱图像处理、并行处理架构和算法提供硬件和软件解决方案。John拥有Stevens技术学院的学士学位和Northeastern大学的硕士学位。他是ACM和IEEE计算机学会的成员。
Greg Lehey的漫长职业生涯在德国和澳大利业度过,他曾为德国空间研究所工作,也曾为Univac、Tandem、Siemens-Nixdorf和IBM等计算机制造商工作,也曾作为一些没名气的软件公司的大客户,还曾做过独立的咨询顾问。他的活动范围很广,包括从内核开发到产品管理,从系统编程到系统管理,从处理卫星数据到为油泵编程,从生产CD-ROM到把自由软件移植到DSP指令集上。他是FreeBSD核心团队的成员,也是澳大利业Unix用户协会的主席。他是FreeBSD和NetBSD项目的开发者,也是“Porting Unix Software and The Complete FreeBSD, Fourth Edition (both O'Reilly)”一书的作者。他还以编写商业应用软件而闻名。Greg在2007年退休,将多出来的时间用于寻找生活。他的休闲活动占据了他的大多数时间,但这还不够,他还听古典木纹唱片、烹饪、酿啤酒(他开发了一个计算机控制的发酵系统)、做园艺、骑马和摄影。他也对一些历史题材感兴趣,包括古代的难解的欧洲语言。
Panagiotis Louridas在上世纪八十年代通过一台 Sinclair ZX Spectrum开始涉足计算机。从那时起,他就开始用机器语言进行编程,而且非常喜欢。他在雅典大学信息系获得了计算机科学学士学位,在曼彻斯特大学获得了计算机硕士和博士学位。这些年来,他一直为私人部门开发软件,他在希腊研究和教育网络(GRNET)工作。他也是雅典经济学和商业大学(AUEB)软件工程和安全(SENSE)研究组的成员。他发表的文章范围很广,从人类学到加密,从仪表展示到软件工程。他特别喜欢寻找计算机世界和其他领域的联系。
Stephen J. Mellor在为软件开发创建有效的工程方法方面,是国际公认的先行者。在1985年,他出版了广为阅读的Ward-Mellor三卷本“Structured Development for Real-Time Systems (Prentice Hall)”;在1998年,他的书首次定义了面向对象分析。Stephen还在2002年出版了“Executable UML: A Foundation for Model-Driven Architecture (Addison-Wesley Professional) ”。他最近的一本书“MDA Distilled: Principles of Model-Driven Architecture (Addison-Wesley Professional)”在2004年出版。他在对象管理集团(OMG)中活动积极,是为UML添加可执行动作的协会的主席,他完成了可执行UML的标准。他是敏捷宣言的签名者之一。他是OMG架构委员会的两任成员,IEEE软件顾问委员会的主席,他成为了Mentor Graphics的嵌入式软件部门的首席科学家。
Bertrand Meyer是ETH Zurich的软件工程教授,也是Eiffel软件的首席架构师,他领导并设计了EiffelStudio环境和大量的库。他是一些畅销书的作者,其中包括获得Jolt大奖的“Object-Oriented Software Construction (Prentice Hall)”。他也因为在对象技术和Eiffel方面的工作获得了ACM软件系统大奖和Dahl-Nygaard大奖,并获得了St. Petersburg州立技术大学的荣誉博士学位。他的研究兴趣涉及面向对象技术、编程语言、软件验证(包括测试、并发和规范方法)。他也是一名活跃的顾问和讲师。
Mitchell是MIT架构和媒体艺术与科学系的Alexander Dreyfoos教授,他领导着MIT媒体实验室和MIT设计实验室的Smart Cities团队。他以前曾担任MIT架构和计划学院的院长。他最近的新书是“World's Greatest Architect”和“Imagining MIT”(都由MIT出版社出版)。
Derek Murray是剑桥大学计算机实验室的博士生。他在2006年加入Xen项目,主要工作是通过重新设计控制栈来改进Xen的安全性。他的研究主要是改进大规模分布式系统的容错性,但他还是偶尔会涉及系统核心。Derek在2006年从爱丁堡大学获得了高性能计算专业的硕士学位,2005年获得了Glasgow大学的计算机学士学位。
Rhy Newman在十多年前于牛津大学完成博士学位时,就开始使用Java,那时Java还只有几年历史。在他早期的研究中,他利用纯Java环境展示了高性能实时场景处理的实现方法,即使当时还是使用早期JIT化的JVM。从那时起,他同时在学界和业界工作,一次次证明Java平台实际上有多灵活、多高效、多快。在超过20年的软件工程生涯中,他获得了多个业界杰出技术奖项,他回到了牛津,承担了网格计算领域的突破性研究。JPC是最新研究工作的一部分。
Michael Nygard致力于在全国帮助开发者提高水平和减少痛苦。他和他遇到的每一个人分享他对改进的热情和活力,有时甚至没有得到对方的同意。Michael花了20年中的大部分时间学习对专业程序员有意义的事,他关心艺术、品质和技艺。他总是愿意在那些全职的、真心投入工作的开发者(那些“觉醒的”开发者)身上花时间。在另一方面,他不能容忍缺乏兴趣或浪费潜力。Michael在近20年来一直是专业的程序员和架构师。在这段时间里,他为美国政府、军方、银行、金融业、农业和零售业交付了运营系统。通常,Michael都要面对他自己开发的系统。这种实际运营的经历改变了他对软件架构和开发的看法。他参与了一个Tier 1零售网站的初期开发,并且常常作为其他在线业务的“流动解决问题专家”。这些经验让他对在相当不友好的环境下构建高性能、高可靠性的软件有了独特的看法。Michael编写了“Release It! Design and Deploy Production-Ready Software (Pragmatic Programmers)”,该书获得了2008年的Jolt生产力大奖。
Ian Rogers是曼彻斯特大学高级处理器技术研究组的研究员。他的博士研究工作是关于Dynamite二进制翻译器的,该技术实现了商用,许多二进制翻译器产品的一部分,包括Apple的Rosetta。他最近的学术研究工作一直是编程语言设计、运行时环境和虚拟机环境,特别是如何自动创建它们并有效地使用并行技术。他是Jikes研究虚拟机的主要贡献者,是开发团队的核心成员。
Brian Sletten是自由的、受过艺术教育的软件工程师,关注forward-learning技术。他曾担任过系统架构师、开发者、现场指导者和培训师。他在世界各地的会议上发表演讲,并为一些在线出版物编写关于面向Web技术的文章。他的经验涉及国防、金融和商业领域。他曾设计并建造了网络矩阵式交换控制系统、在线游戏、3D仿真/可视化环境、因特网分布式计算平台、P2P和基于Web的语义系统。他拥有William and Mary大学的计算机科学学士学位,居住在弗吉尼亚的Fairfax。他是Bosatsu咨询公司的总裁,该公司为Web架构、面向资源的计算、语义Web、高级用户界面、可伸缩系统、安全和其他20世纪末21世纪初的技术提供专业的咨询服务。
Diomidis Spinellis是希腊雅典经济学和商业大学管理科学与技术系统的副教授。他的研究兴趣包括软件工程、计算机安全和编程语言。他也编写了两本“开放源码方面”的书,由Addison-Wesley出版:“Code Reading(获得了2004年的软件开发生产力大奖)”和“Code Quality(获得了2007年软件开发生产力大奖)”。他也写了几十篇科学论文。他是IEEE Software编辑委员会的成员,负责定期的“Tools of the Trade”栏目。Diomidis是FreeBSD的提交者,也是UMLGraph和其他天源软件包、库和工具的开发者。他拥有软件工程的硕士学位和计算机科学博士学位,都是在Imperial College London获得的。Diomidis是ACM的高级成员,也是IEEE和Usenix Association的成员。
Jim Waldo是Sun微系统实验室的杰出工程师,负责研究下一代大规模分布式系统。他是Project Darkstar的技术负责人,该系统是针对大规模多人在线游戏和虚拟世界而设计的多线程、分布式基础设施。在此之,他曾是Jini的首席架构师,Jini是基于Java的分布式编程系统。Jim编写了“The Evolution of C++: Language Design in the Marketplace of Ideas(MIT出版社)”,也是“The Jini Specification (Addison-Wesley)”的合著者之一。他曾是美国国家学术委员会的共同主席,编辑并出版了“Engaging Privacy and Information Technology in a Digital Age”一书。Jim也是哈佛大学的辅助教师,在计算机科学系教授分布式计算和策略与技术相关的内容。Jim拥有马萨诸塞大学(Amherst)的哲学博士学位。
David Weiss拥有Union College的计算机科学学士学位,并拥有马里兰大学的计算机科学硕士和博士学位。他是Avaya实验室的软件技术研究部的领导,他关注软件开发效率改进的普遍问题和Avaya软件开发过程改进的特殊问题。在第二个问题上,他领导了Avaya软件技术研究中心。以前,他曾是朗迅技术贝尔实验室软件生产研究部的主任,该部门负责研究如何改进软件开发的效率。在加入贝尔实验室之前,他是软件生产力协会(SPC)复用和度量部门的主任,该协会由14个大型的美国航空公司组成。在加入SPC之前,Weiss博士在技术评估办公室度过了一年的时间,在那里他与同事共同完成了Strategic Defense Initiative的技术评估。在1985-1986学年,他是Wang Institute的访问学者,在许多年里,他一直是华盛顿特区Naval研究实验室(NRL)计算机科学和系统部门的研究员。他也是一名程序员和数学家。Dave的主要研究兴趣是软件工程领域,特别是软件开发过程和方法学、软件设计和软件测量。他最为人知的是发明了软件测量的“目标-问题-测量指标”方法,软件系统模块化结构的工作,以及软件生产线工程的工作。他是Synthesis过程和继承者FAST过程的共同发明人。他与别人共同编著了两本书:“Software Product-Line Engineering”和“Software Fundamentals: Collected Papers of David L. Parnas ”(都由Addison-Wesley出版)