所有前面的方法都有助于我们判断一个架构是否“足够好”—也就是说,是否有可能指导开发者和测试者构建一个系统,并满足系统的利益相关人的功能和质量关注点。在我们每天使用的系统中存在着许多好的架构。

但是,超越足够好的架构是怎样的呢?如果有一个“软件架构名人堂”,那会怎样?哪些架构会陈列在这个艺术馆的墙上?这个想法可能没有你想象的那么遥远—在软件产品线领域,这样的“名人堂”的确存在。(注1)进入“软件产品线名人堂”的条件包括获得商业上的成功、影响其他产品线的架构(其他产品线可能“借用、复制、窃取”这个架构)、拥有足够的文档从而让其他人“不必通过道听途说”就能够理解该架构。我们将为更一般的“架构名人堂”或“美丽架构艺术馆”的候选者设立怎样的条件呢?首先我们应该认识到,这是一个软件系统的艺术馆,而不是其他艺术馆,我们的系统构建的目的是为了使用。所以,我们也许从一开始就应该关注该架构的实用性:它应该每天被许多人使用。

但是,在使用架构之前,它必须先构建,所以我们应该关注该架构的可构建性。我们会寻找那些具有定义良好的使用结构的架构,它们支持增量式构建,这样,通过每次构建迭代我们都能得到一个有用的、可测试的系统。我们也会寻找那些具有定义良好的模块接口、本来就很好测试的架构,这样,构建的过程就是透明的、可见的。

接来下,我们想寻找那些展示了持久性的架构—也就是说,那些经过了时间考验的架构。我们生活在一个技术环境以从未有过的加速度变化的年代。美丽的架构应该预期到
变更的需要,允许期望的修改能够容易而有效地进行。我们想寻找那些避免了“衰老地平线”(Klein 2005)的架构,超过了这条“衰老地平线”,维护将变得代价极大,以至于不可能进行。
         最后,我们还想寻找这样一些架构,它们的特征让使用、构建、测试这些架构的开发人员和测试人员,以及由它而形成的系统的用户感到由衷的高兴。为什么开发人员会高兴?因为它让他们的工作变得容易,而且更有可能得到一个高品质的系统。为什么测试人员会高兴?作为测试过程的一部分,他们必须尝试模拟用户的行为。如果他们高兴,可能用户也会感到高兴。如果厨师对他的烹调的菜品感到不高兴,那么品尝这些菜品的顾客也可能会感到不高兴。

不同的系统和应用领域为这些架构提供了许多机会,展示它们特有的令人高兴的特征,但概念完整性是一项跨越所有领域的特征,并且总是让人感到高兴。一致的架构学习起来更容易、更快,当知道了一点之后,你就可以开始预测其余的部分。不需要记住并处理特殊的情况,代码更干净,测试集更小。一致的架构不会为做同一件事情提供两种(或更多)方法,不会让用户浪费时间进行选择。正如Ludwig Mies van der Rohe所说的,好的设计,“少即是多”。爱因斯坦可能会说,美丽的架构就是尽可能简单,但不要过于简单。

有了这些判别条件,我们推荐第一批进入“美丽架构艺术馆”的候选者。

第一个是A-7E舰载飞行处理器(Onboard Flight Processor,OFP)的架构,它由海军研究实验室(Naval Research Laboratory,NRL)在20世纪70年代后期开发,在(Bass、Clements和Kazman 2003)有介绍。尽管这个系统从未实现量产,但它满足了所有其他的判别条件。这个架构对软件架构的实践曾经产生了巨大的影响,它展示在真实世界的系统中,将设计时的信息隐藏模块和使用结构与运行时的进程结构分离。因为美国政府资助并开发了这个架构,所以所有项目文档都提供给了公共领域。(注2)这个架构具有定义良好的使用结构,促进了系统的增量式构建。最后,信息隐藏模块结构为分解系统提供了清晰一致的准则,实现
了很强的概念完整性。作为嵌入式系统软件架构的榜样,A-7E OFP当然属于我们的艺术馆。

我们想放入艺术馆的另一个架构是朗讯5ESS电话交换机的软件架构(Carney等1985)。5ESS取得了全球范围的商业成功,为世界各国的网络提供了核心电话网络交换。它成为性能和可靠性的标准,每个单元每小时能处理超过100万次的连接,平均每年非计划宕机时间少于10秒钟(Alcatel-Lucent 1999)。该架构的一些统一概念,如管理电话连接的“半通话模型”,已经成为电话和网络协议领域的标准模式(Hanmer 2001)。除了保持必须处理的通话类型的数目为2n(其中n是通话协议的数目)之外,半通话模式还在操作系统的进程概念和电话的通话类型概念之间建立起了联系,从而提供了简单的设计原则,引入了漂亮的架构一致性。在过去的25年中,开发团队涉及多达3000个人,他们发展并增强该系统。基于它的商业成功、持久性和影响,5ESS架构是我们艺术馆的一件好藏品。

还有一个我们想放入美丽架构艺术馆的系统,它就是万维网(World Wide Web,WWW)的架构。它由Tim Berners-Lee在CERN创建,在(Bass、Clements和Kazman 2003)中有介绍。万维网当然已经取得了商业上的成功,它转变了人们使用因特网的方式。即使创建了新的应用、引入了新的功能,它的架构仍然保持不变。该架构的整体简单性促成了它的概念完整性,但有一些决定导致了该架构的完整性保持不变,如客户端和服务器端使用同一个库,创建分层架构以实现分离关注点等。核心万维网架构的持久性和它对新扩展、新功能持续支持的能力,使它当之无愧地进入了我们的艺术馆。


什么是建筑师?
夏天很热的一个日子里,一个外乡人沿着一条路在行走。他走着走着,来
到一个人跟前,此人正在路边敲碎石头。
“你在做什么?”他问那个人。
那个人抬头看着他;“我在敲碎石头。你以为我看起来像在干什么?现在
不要妨碍我,让我继续干活。”
这个外乡人继续沿着路走,不久他遇到了第二个在大太阳下敲碎石头的人。
这个人正努力工作,汗滴如雨。
“你在做什么?”外乡人问道。
这个人抬头看他,露出微笑。
“我在为谋生而工作,”他说,“但这个工作太辛苦了。也许你能给我一份更
好的工作?”
外乡人摇了摇头,继续前行。没多久,他遇到了第三个敲碎石头的人。太
阳正是最炙热的时候,这个人非常卖力,汗流如注。
“你在做什么?”外乡人问道。
这个人停了一下,喝了一口水,微笑着抬起他的手,指向天空。
“我在建一座大教堂。”他喘着气说。
外乡人看了他一会儿,说:“我们正打算开一家新公司。你来做我们的总建
筑师怎么样?”


            我们的最后一个例子是UNIX系统,它展示了概念完整性,使用广泛,拥有巨大的影响力。管道和过滤器的设计是讨人喜欢的抽象,允许我们快速构建新的应用。在描述架构、架构师的角色和创建架构时的考虑等方面,我们已经谈了很多,我们也简

单介绍了一些美丽架构的例子。接下来我们邀请你阅读后续章节中详细的例子,这些例子来自于那些技艺精湛的架构师,本书介绍了他们创建并使用过的那些美丽架构。

架构之美第十三章-美丽的架构相关推荐

  1. 架构师必看-架构之美第14章-两个系统的故事:混乱大都市(一)

    你们修筑.修筑,预备道路,将绊脚石从我百姓的路中除掉.                                        -<以赛亚书>第57章14节 我们要看的第一个软件系统 ...

  2. 《网络安全工程师笔记》 第一章:虚拟化架构与系统部署

    注:本笔记来自温晓飞老师的网络安全课程 第一章:虚拟化架构与系统部署 第一章:虚拟化架构与系统部署 第二章:IP地址详解 第三章:进制转换 第四章:DOS基本命令与批处理 第五章:用户与组管理 第六章 ...

  3. 架构之美第二章-美丽架构的含义

     古人形容美女之美:"⋯⋯增之一分则太长,减之一分则太短⋯⋯",深刻地揭示了"恰到好处"的美丽含义.当我拿到<架构之美>书稿时,我发现美丽的含义如此 ...

  4. VLSI数字信号处理系统——第十三章位级运算架构

    VLSI数字信号处理系统--第十三章位级运算架构 作者:夏风喃喃 参考: (1) VLSI数字信号处理系统:设计与实现 (美)Keshab K.Parhi/著 (2) socvista https:/ ...

  5. 架构之美(china-pub全国独家首发)

    架构之美(china-pub全国独家首发) [作 者]Till Adam [同作者作品] [作译者介绍]  [译 者] 王海鹏;蔡黄辉;徐锋[同译者作品]  [出 版 社] 机械工业出版社     [ ...

  6. 架构之美阅读笔记之一

    寒假生活开始了,关于软件架构这部分的学习,我选择的是<架构之美>这本书.这本出版于2009年的书,由浅入深地讲述了从架构的概述,到企业级应用架构,系统架构,最终用户应用架构,再到语言与架构 ...

  7. 价格奥秘-在超市遇见亚当斯密--第十三章 把未来留给未知的一切

    第十三章把未来留给未知的一切 拉蒙在20年前的那个春天(他当时即将毕业,并在为参加温布尔登网球赛做准备),曾和鲁思多次讨论经济学,但鲁思那时的真实想法,拉蒙在20年之后才发现.在20年之后8月一个晴朗 ...

  8. 数学:确定性的丧失---第十三章 数学的孤立

    发信人: paradax (秀树*冬眠中...), 信区: Philosophy 标  题: 数学:确定性的丧失(14) 发信站: 北大未名站 (2002年10月23日22:40:11 星期三), 转 ...

  9. 鸟哥的Linux私房菜(服务器)- 第十三章、文件服务器之一:NFS 服务器

    第十三章.文件服务器之一:NFS 服务器 最近更新日期:2011/07/27 NFS为 Network FileSystem 的简称,它的目的就是想让不同的机器.不同的操作系统可以彼此分享个别的档案啦 ...

  10. 《架构之美》阅读笔记四

    书中提到了ruby on rails,所以百度了下,介绍如下: 题外话:Ruby on rails 它是一种可以使你开发,部署和维护的WEB应用程序变得简单的框架,以简化web开发为目标,它简洁,易懂 ...

最新文章

  1. 这个 AI 模型火上 GitHub 热榜第一,在线修复照片
  2. linux root权限_深入了解 Linux 权限
  3. 通过VB结构数组输入数据VC编写DLL
  4. Openstack部署工具
  5. golang中的time详情
  6. 【HM】第2课:JavaScript基础
  7. 多个tomcat部署的端口问题
  8. Python timeit模块的使用
  9. 上探式提额与倒逼式提额—风控调额就该这么做
  10. 解决Sublime Text3 显示中文乱码问题
  11. matlab的区域操作,matlab的操作()
  12. STM32F7 SAI驱动
  13. 推荐个工作日志的软件nyfedit
  14. 零基础怎么自学日语?
  15. 各纬度气候分布图_世界气候类型分布图高清版(世界气候分布高清地图)V1.0 免费版...
  16. ResourceBundle 中文乱码
  17. java wmic_强大的命令行工具wmic
  18. matlab调用ANSYS
  19. 自然语言处理之语言模型与词向量
  20. 系统架构设计师-软件水平考试(高级)-论文-架构风格

热门文章

  1. java工程师简历项目经验
  2. 极光笔记 | 极光clickhouse千亿级数据分析实践之路
  3. 苹果mac能安装计算机题库吗,苹果电脑能装windows系统吗_苹果电脑安装windows系统的方法...
  4. Ubuntu18.04安装TIM、微信
  5. 常见的网络协议和端口号
  6. cad填充图案乱理石_CAD教程:CAD填充图案管理技巧
  7. Python制作2048小游戏
  8. 黑马全套Java教程(七)
  9. tcp协议可以提供什么服务器,什么是TCP协议?
  10. 机器人学导论——笔记(1)