加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 架构之美

架构之美.pdf

架构之美

zhlccsh
2010-03-31 0人阅读 举报 0 0 暂无简介

简介:本文档为《架构之美pdf》,可适用于IT/计算机领域

精选版DiomidisSpinellis等著王海鹏等译顶级业界专家揭密软件设计之美免费在线版本(非印刷免费在线版)登录ChinaPub网站购买此书完整版了解本书更多信息请登录本书的官方网站InfoQ中文站出品本书由InfoQ中文站免费发放如果您从其他渠道获取本书请注册InfoQ中文站以支持作者和出版商并免费下载更多InfoQ企业软件开发系列图书。本书主页为http:infoqcomcnminibooksbeautifularchitecture注:封面图片选自http:wwwflickrcomphotosladymolly欢迎免费下载商务合作:salescninfoqcom读者反馈内容提供:editorscninfoqcom目录推荐序i译者序v作译者简介vii第章架构概述简介创建软件架构架构结构好的架构美丽的架构致谢参考文献第章两个系统的故事:现代软件神话混乱大都市设计之城说明什么问题轮到你了参考文献第章伸缩性架构设计简介背景架构关于架构的思考第章数据增长:Facebook平台的架构简介创建一个社会关系Web服务创建社区关系数据查询服务创建一个社会关系Web门户:FBML系统的支持功能总结推荐序一如何看到一滴水的美丽支付宝(中国)公司业务架构师《大道至简》作者周爱民(aimingoo)【一】架构是一个过程而非一个结果。【二】在大多数人的谈论中架构是一个目标产物而作为架构师的责任就是去生产它。所以无论如何架构是可以“做”出来的而且也应该有一些“做”的方法、技术、技巧。有人问过我:架构的最主要产出是什么?我的答案是:图。这里面有两层含义:一层含义是如同建筑师描绘的蓝图一样用于引导实施者另一层含义是架构师头脑中清晰的目标系统。如果架构师头脑中没有系统清晰的图像他是没有办法把它画出来的。【三】画家画的无非是物我。画物的画家最终画的还是我见。所以画家的笔最终描绘的是他自己心里的映像。【四】艺术是不可能被“生产”出来的生产出来的叫“艺术品”。【五】架构这个过程是架构师洞见系统内在结构、规律、原则和逻辑的过程。真正的架构师是可以将自己放在系统中去的(例如作为系统中的任何一个角色)只有清晰地理解系统才能简洁地描述它。而当架构师拿出了他所描述的“作品”的时候架构这一过程就已经结束了。【六】一滴水滴落的过程中有多少个形态的变化?InfoQ《》推荐序二架构的架构北京无限讯奇信息技术有限公司产品技术高级总监黄冬从编辑手里拿到厚厚的《架构之美》译稿时恰巧是我刚刚讲完一场消息系统架构的讲座之后。而正是在昨天一位想要创业的朋友跟我说要寻找一位懂得“架构”的高人与他一起创业。要知道与代码不同的是“虚幻”的架构常常让人认为其有很多玄妙之处只因它大多难以落在纸上。特别是与很多大师谈及架构时经常落入他们的一些“陷阱”并往往为自己达不到大师的精明与技巧而叹息。殊不知被我们所津津乐道的这些架构是他们在日常工作里经历了大量的错误、重复的尝试、无数的代码、长久的考验所积淀下来的只言片语。本书将数十人的经历与只言片语经过深思熟虑后抽象出规律使之可以不断复用。而另一方面又将架构的过程娓娓道来尝试让读者思考架构的过程与思路。在这里更多的过程与思考被展现出来更多的原因与为什么让我们了解。这本书里展现了很多绚丽的故事犹如士兵阅读将军的传记一样阅读本书将会让你更鼓起勇气追寻大师们的脚步但永远要记住每一滴汗水才真正是你成长路上的每一个记号要在自己的工作里更深地去理解每一处不同架构出属于自己的系统。感谢译者和出版者为我们带来这样一本传奇的架构故事书。InfoQ《》推荐序三美丽架构的含义腾讯RD研发总监(TencentDirectorOfRDDevelopment)资深技术专家(SeniorTechnologyExpert)王速瑜古人形容美女之美:“⋯⋯增之一分则太长减之一分则太短⋯⋯”深刻地揭示了“恰到好处”的美丽含义。当我拿到《架构之美》书稿时我发现美丽的含义如此相似。美丽至简。美丽的架构应尽可能简单但不要过于简单。书中通过多种例子表达了这个最基本的道理。我见过很多大型的软件架构从大型的电信网络管理系统到大规模应用的互联网架构以及企业级的ERP软件系统总是遵循从无到有从简单到复杂再到简单这样的过程。最终支撑这些大型系统稳定可靠运行的就是这个最基本的道理。美丽的架构应尽可能精益并且是演进式发展的。当你架构一个亿万人同时在线的大规模网站系统的时候你无法从一开始就提供最完善的解决方案它应该是随着用户的增长而可扩展的。精益的思想让你避免了过度设计也使架构不断演进趋于完美。书中从企业级应用架构、用户级应用架构等多个角度提供了相应的解决方案对于架构师无不是一顿美味的大餐。深夜看完这本书稿后我发现架构之美并不简单它没有定法。但是它将为架构师们提供一把进入“美丽架构艺术馆”大门的钥匙。拿起它您将会开启这扇大门!InfoQ《》推荐序四美丽架构之道《构建高性能Web站点》作者Web架构实践者郭欣我无法给架构下一个简单的定义因为任何定义都会束缚你对架构的无限想象。不可否认架构师早已出现在人类几千年前的各项生产活动中比如建筑、音乐。而在计算机软件及Web领域架构的设计直接影响着系统的生产比如开发过程和效率、代码和组件复用性等同时也影响着系统的可用性、可伸缩性、性能、容量可预测性等。本书更加关注架构之美。美丽的架构同样无法定义可它却一定是自然的、简单的、可复用的、人文的甚至是外行人也可以细细品味其思想的。当我看到超市的多个收银台排满长队时便想到服务器并发处理性能和容量当我看到十字路口的车辆等待转弯时便想到它通过缓存思想来提高交通吞吐率。那么如何设计出美丽的架构呢?从代码逻辑到物理网络从单机到分布式无数的技术可供架构师选择如分层、组件化、服务化、标准化、缓存、分离、队列、复制、冗余、代理等不过它们仍然只是“术”的范畴而何时何处如何恰到好处地使用它们才是“道”的范畴比如顿悟变化的道理在博弈中寻找平衡以系统化的角度来分析问题寻找相对与绝对的奥秘、开放的心态⋯⋯然而这个领域实在是太年轻了我们需要更多的例子和经验本书将让你大开眼界!InfoQ《》译者序架构与美王海鹏人们在生活和工作中发现美并创造美软件开发和架构设计也不例外。架构之美体现了关注点的分离与结合。在软件设计中设计师需要考虑多方面的关注点。漂亮的架构设计让这些关注点尽可能分离然后以最简单的机制结合在一起从而得到高内聚、低耦合的系统。例如在Darkstar项目中架构师们考虑的重点就是如何将多人在线游戏的游戏逻辑与系统的可伸缩性分离开来让游戏的开发者只要遵守少量的规则就能够像编写单机游戏一样编写大规模多人在线游戏。又如REST架构风格体现了对资源命名、请求处理和资源物理表现形式的关注点分离。资源的名称与请求资源时服务器的处理方式无关请求者无需知道服务器端采取的技术并且请求者本来就不关心服务器端的处理技术。资源的物理表示形式可以通过内容协商来决定使系统可以支持多种物理表示形式并可以方便地扩展。架构之美注重表达的简洁性。“Don’tRepeatYourself”好的架构致力于消除各种类型的信息重复。从结构化程序设计中的子程序和函数到面向对象程序设计中的继承无不体现了对表达简洁性的特殊偏爱。在敏捷方法学中消除重复则是重构的主要目的之一。爱因斯坦说:“让它尽可能简单但不要过于简单。”我们需要考虑所有必须考虑的关注点然后用简洁漂亮的架构体现我们的关注。同时简洁的架构之美也降低了软件的总体成本从这个意义上说“简洁性”又可以称为“经济性”。架构之美需要解决实际问题它既是艺术也是生活。软件像建筑一样它的美不能脱离它的实用价值。BjarneStroustrup说人类文明运行于软件之上。每一个软件都有自己的架构这些架构有的很美有的不太美。从艺术的角度来说美是创造矛盾并解决矛盾。架构的多关注点和表达简洁性就是一种矛盾美丽的架构提供了这一矛盾的解决方法让我们的内心产生一种愉快的感觉。InfoQ《》架构之美需要经过专业的学习才能更好地欣赏和创造。和所有的艺术之美一样不是说不经过专业学习就不能欣赏但是经过了专业的学习就能更好地欣赏这种美的种种精妙之处。如果想要创造出这种美那就必然要经过长期的专业学习。架构之美经过时间打磨。像Facebook面向数据的Web服务、FQL和FML架构是在对应不同实际需求的过程中逐渐发展起来。在应用程序架构形成的过程中设计者不断面对新的关注点需求不断对已有的架构进行修改并发展出新的架构组件。这就是所谓的“演进式架构”。只有变化是永恒不变的。在架构设计初期设计者会将一些关注点有意推迟到将来考虑例如持久和并发。对于这些暂不考虑的关注点设计者对它们的实现方式尽可能不做任何假定从而保留更多的可能性让不同关注点之间的耦合尽可能小。架构之美没有定法。虽然有一些法则可供我们参考却没有非如此不可的。《金刚经》云:“一切贤圣皆以无为法而有差别。”参加本书翻译工作的人员还有蔡黄辉、徐锋、王海燕、李国安、周建鸣、范俊、张海洲、谢伟奇、林冀、钱立强、甘莉萍。在这本书的翻译过程中我受益良多因此郑重地向大家推荐它。xii译者序InfoQ《》Administrator矩形作译者简介作者简介TillAdam在年轻时学习了哲学、比较文学、美国研究和音乐学职业是音乐人。由于没有发财和出名他转而攻读科学硕士学习了数学、计算机科学和商业。多年从事自由软件的经历(特别是对KDE的贡献)教会了他编程也为他带来了在KlarälvdalensDatakonsultAB工作的机会目前他在该公司负责协调KDE的开发和其他与自由软件相关的活动。他和他的妻子、女儿住在德国柏林。JimBlandy在年至年间为自由软件基金会维护GNUEmacs和RichardStallman一起发布了Emacs的第个版本。他是Subversion版本控制系统的最初设计者之一。他也是CVS版本控制系统、GNU调试器(GDB)、Guile扩展语言库和一个编辑基因序列的Emacs程序的贡献者。他现在为Mozilla公司工作工作内容是SpiderMonkey即Mozilla的Javascript编程语言的实现。Jim和他的妻子、两个女儿住在俄勒冈州的波特兰。MirkoBoehm从开始就是KDE的开发者在年至年间是KDEeV委员会的成员。他毕业于德国汉堡HelmutSchmidt大学的商业专业。在他的闲暇时间里他阅读纸版书籍、与家人在一起试图远离计算机。他目前在德国柏林为KlarälvdalensDatakonsultAB工作负责跨平台软件和嵌入式软件开发。ChristopherDennis自年JCP项目开始时就是项目的主要开发者。Chris在牛津大学读博士时开始使用Java。此前他使用过各种编程语言从十六进制小键盘上编写的Z机器码到PHP和JavaScript。他对特殊情况、编码技巧和偶尔有点丑陋的临时编码很有兴趣喜欢用各种语言编写紧凑的、优雅的代码。DaveFetterman是Facebook的工程经理他在那里创建了Facebook平台项目。在年加入Facebook之前他是一名软件工程师参加Microsoft开发者部门的项目包括NET的通用语言运行环境(CLR)。他喜欢为其他开发者创建软件也喜欢对愿意听的人发表长篇大论。他拥有应用数学的学士学位并在年获得了哈佛大学的计算机科学硕士学位。KeirFraser是XenSource的创始人之一XenSource现在是CitrixSystems公司的一部分。他也是Xen系统管理程序的首席架构师。Keir在实现了Xen的第一个版本作为他InfoQ《》在剑桥计算机实验室攻读博士学位时的一项娱乐。在该项目成为大规模的社区合作的过程中他继续作为主要的开发者。他因在无锁并发控制方面的工作于年获得了博士学位并在同年成为一名教师。PeteGoodliffe是一名程序员、专栏作家、演说家和作家从来不在同一软件领域做过多的停留。Pete的热门书籍《CodeCraft》(NoStarchPress)是对整个编程追求的实际而有趣的调查大约页真是了不起!他对制革很有热情而且不穿鞋。GeorgiosGousios是一名职业研究者接受的教育和软件工程有关热衷于软件开发。目前他正在希腊的雅典经济与商业大学完成他的博士论文。他的研究兴趣包括软件工程、软件质量、虚拟机和操作系统他拥有英国曼彻斯特大学的科学硕士学位。Gousios为多个开源软件项目贡献过代码并参与了各种学术项目和商业项目的研究与开发。他是SQOOSS项目的项目经理、设计权威和主要开发成员为评估软件质量探索一些创新的方法。在他的学术生涯中Gousios在会议和杂志上发表了篇技术论文。Gousios是ACM、IEEE、UsenixAssociation和TechnicalChamberofGreece的成员。DaveGrove是IBM的TJWatson研究中心动态优化组的一名研究员。他的主要研究兴趣包括分析和优化面向对象语言、虚拟机设计和实现、JIT编译、在线反馈导向的优化和垃圾收集。他在年参加了Jalapeño项目是这个优化编译器和适应式优化系统首个实现的主要贡献者。自Jalapeño在年作为JikesRVM开放源码以来他一直是JikesRVM核心团队和指导委员会的活跃成员。JohnKlein是软件工程研究所(SEI)的高级技术人员他的研究方向是“众系统之系统”的架构方法并帮助个人、团队和组织机构改进他们的软件架构能力。在加入SEI之前John是Avaya公司的首席架构师。在Avaya他负责开发多模式的代理、通信分析的架构以及为各种客户交互产品创建并改进架构。在此之前John是Quintus的一名软件架构师在那里他设计了第一款获得商业成功的多渠道集成联系中心产品并导致了Quintus兼并了另外两家公司实现了产品组合的技术集成。在加入Quintus之前John曾为多家视频会议和视频网络业的公司服务。他的职业生涯开始于Raytheon在那里他为雷达信号处理、多光谱图像处理、并行处理架构和算法提供硬件和软件解决方案。John拥有Stevens技术学院的学士学位和Northeastern大学的硕士学位。他是ACM和IEEE计算机学会的成员。GregLehey的漫长职业生涯在德国和澳大利业度过他曾为德国空间研究所工作也曾为Univac、Tandem、SiemensNixdorf和IBM等计算机制造商工作也曾作为一些没名气的软件公司的大客户还曾做过独立的咨询顾问。他的活动范围很广包括从内核开发到产品管理从系统编程到系统管理从处理卫星数据到为油泵编程从生产xiv作译者简介InfoQ《》Administrator矩形Administrator矩形CDROM到把自由软件移植到DSP指令集上。他是FreeBSD核心团队的成员也是澳大利业UNIX用户协会的主席。他是FreeBSD和NetBSD项目的开发者也是《PortingUNIXSoftware》和《TheCompleteFreeBSD,FourthEdition》(O’Reilly)的作者。他还以编写商业应用软件而闻名。Greg在年退休将多出来的时间用于品味生活。现在休闲活动占据了他的大多数时间但这还不够他还听古典木纹唱片、烹饪、酿啤酒(他开发了一个计算机控制的发酵系统)、做园艺、骑马和摄影。他也对一些历史题材感兴趣包括古代的难解的欧洲语言。他的主页是:http:wwwlemiscomgrop。PanagiotisLouridas在世纪年代通过一台SinclairZXSpectrum开始涉足计算机。从那时起他就开始用机器语言进行编程而且非常喜欢编程。他在雅典大学信息系获得了计算机科学学士学位在曼彻斯特大学获得了计算机硕士和博士学位。这些年来他一直为私人机构开发软件现在他在希腊研究和教育网络(GRNET)工作。他也是雅典经济与商业大学(AUEB)软件工程和安全(SENSE)研究组的成员。他发表的文章范围很广从人类学到加密从仪表展示到软件工程。他特别喜欢寻找计算机世界和其他领域的联系。StephenJMellor在为软件开发创建有效的工程方法方面是国际公认的先行者。在年他出版了广为阅读的WardMellor三卷本《StructuredDevelopmentforRealTimeSystems》(PrenticeHall)在年他的书首次定义了面向对象分析。Stephen还在年出版了《ExecutableUML:AFoundationforModelDrivenArchitecture》(AddisonWesleyProfessional)。他最近的一本书《MDADistilled:PrinciplesofModelDrivenArchitecture》(AddisonWesleyProfessional)在年出版。他在对象管理组织(OMG)中活动积极是为UML添加可执行动作的协会的主席他最近完成了可执行UML的标准。他是敏捷宣言的签名者之一。他是OMG架构委员会的两任成员IEEE软件顾问委员会的主席最近他成为MentorGraphics的嵌入式软件部门的首席科学家。BertrandMeyer是ETHZurich的软件工程教授也是Eiffel软件的首席架构师他领导并设计了EiffelStudio环境和大量的库。他是一些畅销书的作者其中包括获得Jolt大奖的《ObjectOrientedSoftwareConstruction》(PrenticeHall)。他也因为在对象技术和Eiffel方面的工作获得了ACM软件系统大奖和DahlNygaard大奖并获得了StPetersburg州立技术大学的荣誉博士学位。他的研究对象涉及面向对象技术、编程语言、软件验证(包括测试、并发和规范方法)。他也是一名活跃的顾问和讲师。WilliamJMitchell是MIT架构和媒体艺术与科学系的AlexanderDreyfoos教授他领导着MIT媒体实验室和MIT设计实验室的SmartCities团队。他以前曾担任MIT架构和计划学院的院长。他最近的新书是《World’sGreatestArchitect》和《ImaginingMIT》(都由作译者简介xvInfoQ《》Administrator矩形MIT出版社出版)。DerekMurray是剑桥大学计算机实验室的博士生。他在年加入Xen项目主要工作是通过重新设计控制栈来改进Xen的安全性。他现在的研究主要是改进大规模分布式系统的容错性但他还是偶尔会涉及系统核心。Derek在年从爱丁堡大学获得了高性能计算专业的硕士学位年获得了Glasgow大学的计算机学士学位。RhysNewman在十多年前于牛津大学完成博士学位时就开始使用Java那时Java还只有几年历史。在他早期的研究中他利用纯Java环境展示了高性能实时场景处理的实现方法即使当时还是使用早期JIT化的JVM。从那时起他同时在学界和业界工作一次次证明Java平台实际上有多灵活、多高效、多快。在超过年的软件工程生涯中他获得了多个业界杰出技术奖项最近他回到了牛津承担了网格计算领域的突破性研究工作。JPC是最新研究工作的一部分。MichaelNygard致力于在全国帮助开发者提高水平和减少痛苦。他和他遇到的每一个人分享他对改进的热情和活力有时甚至没有得到对方的同意。Michael花了年中的大部分时间学习对专业程序员有意义的事他关心艺术、质量和技艺。他总是愿意在那些全职的、真心投入工作的开发者(那些“觉醒的”开发者)身上花时间。在另一方面他不能容忍缺乏兴趣或浪费潜力。Michael在近年来一直是专业的程序员和架构师。在这段时间里他为美国政府、军方、银行、金融业、农业和零售业交付了运营系统。通常Michael都要面对他自己开发的系统。这种实际运营的经历改变了他对软件架构和开发的看法。他参与了一个Tier零售网站的初期开发并且常常作为其他在线业务的“流动解决问题专家”。这些经验让他对在相当不友好的环境下构建高性能、高可靠性的软件有了独特的看法。最近Michael编写了《ReleaseIt!DesignandDeployProductionReadySoftware》(PragmaticProgrammers)该书获得了年的Jolt生产力大奖。他的其他文字可以在http:wwwmichaelnygardcomblog上读到。IanRogers是曼彻斯特大学高级处理器技术研究组的研究员。他的博士研究工作是关于Dynamite二进制翻译器的该技术实现了商用现在是许多二进制翻译器产品的一部分包括Apple的Rosetta。他最近的学术研究工作一直是编程语言设计、运行时环境和虚拟机环境特别是如何自动创建它们并有效地使用并行技术。他是Jikes研究虚拟机的主要贡献者是开发团队的核心成员。BrianSletten是自由的、受过艺术教育的软件工程师关注forwardlearning技术。他曾担任过系统架构师、开发者、现场指导者和培训师。他在世界各地的会议上发表演讲xvi作译者简介编辑注:此书由机械工业出版社引进出版书名为《代码质量》(注释版)书号为:。InfoQ《》Administrator矩形并为一些在线出版物编写关于面向Web技术的文章。他的经验涉及国防、金融和商业领域。他曾设计并建造了网络矩阵式交换控制系统、在线游戏、D仿真可视化环境、因特网分布式计算平台、PP和基于Web的语义系统。他拥有WilliamandMary大学的计算机科学学士学位目前居住在弗吉尼亚的Fairfax。他是Bosatsu咨询公司的总裁该公司为Web架构、面向资源的计算、语义Web、高级用户界面、可伸缩系统、安全和其他世纪末世纪初的技术提供专业的咨询服务。DiomidisSpinellis是希腊雅典经济与商业大学管理科学与技术系的副教授。他的研究领域包括软件工程、计算机安全和编程语言。他也编写了两本“开放源码方面”的书由AddisonWesley出版:《CodeReading》(获得了年的软件开发生产力大奖)和《CodeQuality》(获得了年软件开发生产力大奖编辑注)。他也写了几十篇科学论文。他是IEEESoftware编辑委员会的成员负责定期的“ToolsoftheTrade”栏目。Diomidis是FreeBSD的提交者也是UMLGraph和其他开源软件包、库和工具的开发者。他拥有软件工程的硕士学位和计算机科学博士学位都是在ImperialCollegeLondon获得的。Diomidis是ACM的高级成员也是IEEE和UsenixAssociation的成员。JimWaldo是Sun微系统实验室的杰出工程师负责研究下一代大规模分布式系统。他目前是ProjectDarkstar的技术负责人该系统是针对大规模多人在线游戏和虚拟世界而设计的多线程、分布式基础设施。在此之前他曾是Jini的首席架构师Jini是基于Java的分布式编程系统。Jim编写了《TheEvolutionofC:LanguageDesignintheMarketplaceofIdeas》(MIT出版社)也是《TheJiniSpecification《AddisonWesley》的合著者之一。他曾是美国国家学术委员会的共同主席编辑并出版了《EngagingPrivacyandInformationTechnologyinaDigitalAge》一书。Jim也是哈佛大学的辅助教师在计算机科学系教授分布式计算和策略与技术相关的内容。Jim拥有马萨诸塞大学(Amherst)的哲学博士学位。DavidWeiss拥有UnionCollege的计算机科学学士学位并拥有马里兰大学的计算机科学硕士和博士学位。他目前是Avaya实验室的软件技术研究部的领导他关注软件开发效率改进的普遍问题和Avaya软件开发过程改进的特殊问题。在第二个问题上他领导了Avaya软件技术研究中心。以前他曾是朗迅技术贝尔实验室软件生产研究部的主任该部门负责研究如何改进软件开发的效率。在加入贝尔实验室之前他是软件生产力协会(SPC)复用和度量部门的主任该协会由个大型的美国航空公司组成。在加入SPC之前Weiss博士在技术评估办公室度过了一年的时间在那里他与同事共同完成了StrategicDefenseInitiative的技术评估。在学年他是WangInstitute的访问学者在许多年里他一直是华盛顿特区Naval研究实验室(NRL)计算机科学和系统部门的研究员。他也是一名程序员和数学家。Dave的主要研究方向是软件工程领域特作译者简介xviiInfoQ《》Administrator矩形别是软件开发过程和方法学、软件设计和软件测量。他最为人知的是发明了软件测量的“目标问题测量指标”方法软件系统模块化结构的工作以及软件生产线工程的工作。他是Synthesis过程及其后继FAST过程的共同发明人。他与别人共同编著了两本书:《SoftwareProductLineEngineering》和《SoftwareFundamentals:CollectedPapersofDavidLParnas》(都由AddisonWesley出版)。译者简介王海鹏年毕业于华东师范大学。拥有理学士(物理)和文学士(英国语言文学)学位。独立的咨询顾问、培训讲师、译者和软件开发者。已翻译十余本软件开发书籍主题涵盖敏捷方法学、需求工程、UML建模和测试。拥有年软件开发经验目前主要的研究领域是软件架构和方法学致力于提高软件开发的品质和效率。蔡黄辉江苏启东人。年毕业于上海交通大学毕业后一直从事软件开发工作主要使用Java做Web方面的底层开发。现居住在上海。联系方式:caihuanghuihotmailcom。徐锋中国系统分析员顾问团(CSAI)软件工程首席顾问中国软件技术大会杰出贡献专家资深咨询顾问。主要研究领域为需求工程、系统分析与设计、软件估算致力于推动软件工程方法论的落地应用。曾在《程序员》等媒体发表了《实战OO》、《项目管理三步曲》、《大话Design》等多个专栏文章著有《软件需求最佳实践》、《UML面向对象建模基础》等多本书籍翻译了《UML实战》、《AOSD中文版》、《CloudtoCode中文版》等多本相关技术书籍。xviii作译者简介InfoQ《》Administrator矩形第章架构概述JohnKleinDavidWeiss简介建筑师、音乐家、作家、计算机设计师、网络设计师和软件开发者都在使用“架构”这个术语其他人也用(你有没有听说过“食物架构”?)然而不同的用法其结果也不同。建筑与交响乐完全不同但都有架构。而且所有的架构师都在谈论他们工作中的美以及因此而导致的结果。建筑师可能会说一座建筑应该提供适合工作或生活的环境而且它应该看起来很美。音乐家可能会说音乐应该能演奏包含能够辨明的主题而且它应该听起来很美。软件架构师可能会说系统应该对用户友好、响应及时、可维护、没有重大错误、易于安装、可靠应该通过标准的方式与其他系统通信而且也应该是美的。这本书为你提供了一些美丽架构的详细例子它们来自于各类计算机系统。相对来说计算机是比较年轻的一个学科。因为年轻所以不像建筑、音乐或写作等领域那样有那么多的例子也因为年轻则需要更多的例子。我们希望这本书能满足这种需要。在你开始研究这些例子之前我们希望你考虑以下两个问题:)什么是架构?)美丽的架构都有哪些特性?你会在这一章中看到架构的不同定义每个学科都有自己的定义所以我们将首先探讨不同学科中的架构有何共同点以及人们试图用架构解决哪些问题。具体来说架构有助于确保系统能够满足其利益相关人的关注点在构想、计划、构建和维护系统时架构有助于处理复杂性。InfoQ《》Administrator矩形然后我们将介绍架构的定义展示如何将这个定义应用于软件架构因为软件是本书后面大部分例子关注的核心。这个定义的关键在于架构由一组结构组成这些结构的设计目的是让架构师、构建者以及其他利益相关人看到他们的关注点是如何得到满足的。在本章末尾我们将讨论美丽架构的特性并引用一些例子。美的核心在于概念完整性即一组抽象和规则在整个系统中尽可能简单地应用它们。在讨论中我们将“架构”作为一个名词它意味着一组工件包括像蓝图和构建规范这样的文档。这些工件描述了要构建的对象在这种描述中该对象被视为一组结构。某些人也把“架构”作为一个动词用来描述创建这些工件的过程包括由此而导致的工作。然而正如JimWaldo和其他人曾指出的没有什么过程可以保证你学了以后就能创造出好的系统架构更不必说美的架构了(Waldo)所以我们将更关注工件而非过程。架构:“建造的艺术或科学特别是设计和建造人类使用的建筑时的艺术或实践同时考虑到美学因素和实用因素。”《TheShorterOxfordEnglishDictionary》(小型牛津英语字典第版)在所有学科中架构都提供了一种方式来解决共同的问题:确保建筑、桥梁、乐曲、书籍、计算机、网络或系统在完成后具有某些属性或行为。换言之架构既是所构建系统的计划确保由此得到期望的特性同时也是所构建系统的描述。维基百科上说:“根据这方面已知最早的著作即Vitruvius的‘OnArchitecture’好的建筑应该美观(Venustas)、坚固(Firmitas)、实用(Utilitas)架构可以说是这三方面的一种平衡和配合没有哪一个方面比其他方面更重要。”我们谈到交响乐的“架构(architecture)”反过来又将架构(architecture)称为“凝固的音乐”。DeryckCooke,《TheLanguageofMusic》(音乐的语言)好的系统架构展示了架构完整性。也就是说它来自于一组设计规则这组规则有助于减少复杂性并可以用于指导详细设计和系统验证。设计规则可能包含特定的抽象这些抽象总是以同样的方式使用诸如虚拟设备等。这些规则可能表现为一种模式如管道和过滤器。在最理想的情况下存在一些可以用于验证的规则如“在设备失效时所有某一类的虚拟设备都可以用任何其他同类的虚拟设备代替”或“所有竞争同一资源的进程必须具有相同的调度优先级”。当代的架构师可能会说待构建的对象或系统必须具有以下特征:•具备客户要求的功能。•能够在要求的工期内安全地构建。第章InfoQ《》Administrator矩形•性能足够好。•可靠的。•可用的并且使用时不会造成伤害。•安全的。•成本是可以接受的。•符合法规标准。•将超越前人及其竞争者。我们将计算机系统的架构定义为一组最小的特征集它们决定了哪些程序将运行以及这些程序将得到什么结果。GerritBlaauw和FrederickBrooks,《ComputerArchitecture》(计算机体系结构)我们从来没有看到过一个复杂系统能够很好地满足上述特征。架构是一种折中决定改进其中一个特征常常会对其他特征产生负面影响。架构师必须确定怎样做是足够好的方法就是发现特定系统的重要关注点以及充分满足这些关注点的条件。架构观点中的常见思想是结构每种结构都由各种类型的组件及其关系构成:它们如何组合、相互调用、通信、同步以及进行其他交互。组件可以是建筑中的支架横梁或内部腔室、交响乐中的旋律、故事中的章节或人物、计算机中的CPU和内存、通信栈中的层或连接到一个网络上的处理器、协作的顺序过程、对象、编译时的宏、构建时的脚本。每个学科都有自己的一套组件和组件间的相互关系。从更大的范围来说术语“架构”总是意味着“不变的深层次结构”。StewartBrand,《HowBuildingsLearn》面对不断增长的系统复杂性以及它们内部和相互之间的交互由一组结构形成的架构提供了对付复杂性的主要手段目的是确保得到的系统具备所要求的特征。结构为我们提供途径将系统化解为一些交互的组件。每种结构都是为了帮助架构师理解如何来满足特定的关注点如可变性或性能。展示某些关注点得到满足时可能会影响到其他方面的关注点但架构师必须能够说明所有关注点都已得到满足。网络架构:构成一个网络的通信设备、协议和传输链路以及它们的组织方式。http:wwwwtcsorgsnmptpcjtonhtm架构概述InfoQ《》Administrator矩形建筑师的角色在设计、构建和修复建筑时我们指定关键的设计师为“建筑师(architects)”并赋予他们广泛的职责。建筑师准备建筑最初的草图展示外观和内部布局与客户讨论这些草图直至所有相关方都达成一致意见认为展示的就是他们想要的。这些草图是抽象:它们关注建筑中某些方面的适当细节而忽略其他的内容。当客户和建筑师在这些抽象上达成一致意见之后建筑师会准备或监督准备更为详细的图纸以及相关的文字规格说明。这些图纸和规格说明描述了建筑的许多“实质性”细节如管道、壁板材料、窗户玻璃和电线等。在极少的情况下建筑师简单地将详细规划交给建造者建造者将根据规划完成项目。对更重要一些的项目建筑师会继续参与定期检查工作并且可能会建议变更或接受来自建造者和客户的变更建议。如果建筑师监督项目仅当他确认项目充分符合了规划和规格说明的要求项目才算完工。我们请一名建筑师是为了确保:)设计满足客户的需要包括前面提到的那些特征)设计具有概念完整性处处运用了相同的设计原则)设计满足法规和安全的要求。建筑师职责的一个重要方面是确保设计概念在实现时得到一致的体现。有时候建筑师也充当建造者和客户之间的协调人。哪些决定需要由建筑师做出哪些决定由其他人做出人们对这个问题常有不同意见但我们清楚建筑师将做出重要决定包括所有对结构的可用性、安全性和可维护性产生影响的那些决定。音乐作曲与软件架构虽然人们常用建筑架构设计来类比软件架构但音乐作曲可能是更好的类比。建筑师创建的是相对静止的结构(该架构必须考虑到人员和服务在建筑内的移动以及承重结构)的静态描述(蓝图或其他图纸)。在音乐作曲和软件设计中作曲家(软件架构师)创建一段音乐的静态描述(架构描述和代码)这段音乐以后将演奏(执行)许多次。在音乐和软件中设计都依靠许多组件的交互来得到期望的结果结果依赖于演奏者、演奏环境以及演奏者所做的诠释。软件架构师的角色软件开发项目需要一些人在软件构建时扮演架构师的角色就像构建或修复建筑时传统的建筑师的角色一样。但是对于软件系统来说从来就弄不清楚哪些决定属于架构师

用户评价(1)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/21

架构之美

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利