软件架构实践
第一部分 简介
第一部分 简介 第1章 什么是软件架构? 第2章 为社么软件架构很重要?
第1章 什么是软件架构?
我们应成为未来的架构师,而非受害者。 ——R. 巴克敏斯特・富勒(R. Buckminster Fuller) 我们(作者)撰写和你们(读者)阅读一本关于软件架构的书,这本书提炼了许多人的经...
第2章 为什么软件架构很重要?
啊,建造,建造! 这是所有艺术中最崇高的艺术。 —— 亨利・沃兹沃思・朗费罗(Henry Wadsworth Longfellow) 如果架构是答案,那么问题是什么? 本章从技术角度重点关注...
第二部分 质量属性
第3章 理解质量属性 第4章 可用性 第5章 可部署性 第6章 能效性 第7章 可集成性 第8章 可修改性 第9章 性能 第10章 安全性 第11章 信息安全...
第3章 理解质量属性
第3章 理解质量属性 质量绝非偶然;它始终是高远的意图、真诚的努力、明智的引导以及精湛的执行共同作用的结果。 —— 威廉・A・福斯特(William A. Foster) 许多因素决定了系统...
第4章 可用性
技术并不总是与完美和可靠性相契合。 实际上,二者相差甚远! ——让-米歇尔·雅尔(Jean-Michel Jarre) 可用性是指软件的一种特性,即当你需要软件执行任务时,它能够正常运行并随...
第5章 可部署性
从我们来到这个星球的那一天起 眨着眼睛,走进阳光里 有太多的风景,难以尽览 有太多的事情,难以做完 ——《狮子王》(The Lion King) 有那么一天,软件也像我们人类一样,必须离开 ...
第6章 能效性
能量有点像金钱:如果你有盈余,就可以以各种方式支配它,但根据本世纪初人们所信奉的经典定律,你是不允许出现透支情况的。 ——斯蒂芬·霍金(Stephen Hawking ) 过去,计算机所消耗...
第7章 可集成性
融合是生命的基本法则;当我们抗拒融合时,无论是内心还是外在,瓦解都将是必然的结果。因此,我们通过融合领悟到了和谐的概念。 —— 诺曼・卡曾斯(Norman Cousins ) 根据韦氏词典的...
第8章 可修改性
生存下来的物种,既不是最强壮的,也不是最聪明的,而是最能适应变化的。 ——查尔斯·达尔文(Charles Darwin) 变化总会发生。 一项又一项研究表明,典型软件系统的大部分成本产生于其...
第9章 性能
身行一例,胜似千言。 —— 梅・韦斯特(Mae West) 是时候谈谈性能了。 这里所说的性能,关乎时间以及软件系统满足时间要求的能力。令人无奈的是,计算机上的操作都需要耗费时间。计算耗时以...
第10章 安全性
贾尔斯:哎呀,看在老天的份上,小心点…… 要是你受伤或者送命,我会很生气的。 薇洛:嗯,我们尽量不送命。这可是我们使命宣言的一部分:别送命。 贾尔斯:很好。 ——《吸血鬼猎人巴菲》第三季,“安...
第11章 信息安全性
如果你把秘密告诉风,就不该怪风告诉树。 ——卡里·纪伯伦(Kahlil Gibran) 信息安全性是衡量系统保护数据和信息免受未经授权的访问的能力,同时仍向授权的人员和系统提供访问权限的指标...
第12章 可测试性
测试会导致失效,而失效会带来理解。 —— 伯特・鲁坦(Burt Rutan) 开发设计良好的系统的成本中,有很大一部分用于测试。如果经过深思熟虑的软件架构能够降低这一成本,回报将是巨大的。 ...
第13章 易用性
人们会忽略那些忽略人的设计。 —— 弗兰克・奇梅罗(Frank Chimero) 易用性关注的是用户完成期望任务的难易程度以及系统提供的用户支持类型。多年来,对易用性的关注已被证明是提高系统...
第14章 其他质量属性
质量不是当你所做的符合你的意图时所发生的情况。质量是当你所做的符合客户期望时所发生的情况。 ——瓜斯帕里(Guaspari) [第 4 章][ch04]——[第 13 章][ch13] 分别...
第三部分 架构解决方案
15. 第15章 软件接口 16. 第16章 虚拟化 17. 第17章 云计算和分布式计算 18. 第18章 移动系统
第15章 软件接口
With Cesare Pautasso 美国国家航空航天局(NASA)损失了其价值 1.25 亿美元的火星气候轨道器,原因是航天器工程师在该航天器发射前交换重要数据时未能从英制单位转换为公制...
第16章 虚拟化
“虚拟”意味着永远不知道你的下一个字节从哪里来。 —— 佚名 在 20 世纪 60 年代,计算领域面临着这样一个难题:如何在一台物理机器上让多个独立的应用程序共享诸如内存、磁盘、I/O 通道...
第17章 云计算和分布式计算
分布式系统是这样一种系统:在其中,一台你甚至都不知道其存在的计算机出现故障,就可能会使你自己的计算机无法使用。 ——莱斯利·兰波特(Leslie Lamport) “云计算” 是指按需提供资...
第18章 移动系统
与 Yazid Hamdi 和 Greg Hartman 合作完成 电话将被用来通知人们电报已发出。 ——亚历山大·格拉汉姆·贝尔(Alexander Graham Bell) 那么,亚历山...
第四部分 可扩展的架构实践
19. 第19章 对架构影响重大的需求 20. 第20章 设计架构 21. 第21章 评估架构 22. 第22章 记录架构 23. 第23章 管理架构债
第19章 架构重要需求
软件开发最重要的一个方面是明确你正在尝试构建的东西是什么。 ——比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup),C++ 语言创造者 架构的存在是为了构建满足需求的系统。这里的 ...
第20章 设计架构
与 Humberto Cervantes 合作 设计师知道,不是当没有什么可以添加的时候,而是当没有什么可以删减的时候,他才达到了完美。 ——安托万·德·圣埃克苏佩里(Antoine de S...
第21章 评估架构
医生可以掩埋自己的错误,但建筑师只能建议客户种上藤蔓。 —— 弗兰克・劳埃德・赖特(Frank Lloyd Wright) 在 [第 2 章][ch02] 中,我们提到架构之所以重要的一个主...
第22章 记录架构
文档是你写给未来自己的一封情书。 ——达米安·康威(Damian Conway) 创建一个架构是不够的。必须以一种能让其利益相关者正确使用它来完成工作的方式进行传达。如果你不辞辛苦地创建了一...
第23章 管理架构债务
与 Yuanfang Cai 合作 有些债务在你欠下的时候是有趣的,但当你着手偿还它们的时候,就没有一个是有趣的了。 —— 奥格登·纳什(Ogden Nash) 如果不加以仔细关注并投入的努...
第五部分 架构和组织
24. 第24章 架构师在项目中的角色 25. 第25章 架构能力
第24章 架构师在项目中的角色
我不知道为什么人们雇了架构师,然后又告诉他们该做什么。 ——弗兰克·盖里(Frank Gehry) 任何在课堂之外进行的架构实践都发生在一个更大的开发项目背景下,而开发项目是由一个或多个组织...
第25章 架构能力
人生苦短,学海无涯。 —— 杰弗里・乔叟(Geoffrey Chaucer) 如果软件架构值得去做,那肯定值得做好。大多数关于架构的文献都集中在技术方面。这并不奇怪,因为它是一门深奥的技术学...
第六部分 总结
26. 第26章 未来一瞥:量子计算
第26章 未来一瞥:量子计算
[可以将量子计算机与]1903年莱特兄弟在基蒂霍克试飞的飞机相提并论。莱特飞行器勉强离开地面,但它预示着一场革命。 在影响软件架构实践的发展方面,未来会带来什么呢?人类在预测长期未来方面出了...