您现在的位置: 首页 / 产品中心/ 华章分社/ 软件架构实践 (英文版·原书第4版)

软件架构实践 (英文版·原书第4版)

ISBN:978-7-111-69915-6

作者:[美] 伦·巴斯(Len Bass) [美] 保罗·克莱门茨(Paul Clements) [美] 瑞克·凯兹曼(Rick Kazman)

定价:¥139.00

本站图书均由机械工业出版社旗下电子商务网站提供

图书详情
内容提要
目录
CIP
本书着重讨论以下核心内容,并层层递进,逐步深入。
首先解释了什么是软件架构,为什么它很重要,以及如何以规范和有效的方式设计、实现、分析、演进和管理它。
其次系统阐述如何使用架构来应对需求和系统规模的加速增长,以及如何管理新增的质量属性。
最后讲解如何利用架构优化关键质量属性(包括性能、可修改性、防护性、可用性、互操作性、可测试性、易用性、可部署性等),如何管理和优化现有架构,如何将它们用于解决新问题并构建成可作为战略资产的可重用架构。

自第3版出版以来,计算机领域发生了很大变化。一些之前没有被考虑的质量属性在许多架构师的日常实践中变得重要。我们正在构建不同种类的系统,并且以不同于十年前的方式构建它们。现在的系统通常构建在云中的虚拟化资源之上,移动性越来越强,移动性带来的机遇和挑战也越来越多。因此,第4版全面更新了有关移动、云、能源管理、DevOps、量子计算等方面的内容。
通过本书,你将:
了解架构如何影响技术环境(并受其影响)、项目生命周期、业务概要和实践。
了解如何通过架构来利用已验证的模式、接口和实践去优化质量。
了解移动、云、机器学习和量子计算的架构。
设计越来越重要的属性,如能源效率和安全性。
了解如何通过发现架构的重大影响、使用DevOps和部署流水线以及管理架构债来扩展系统。
了解架构在组织中的作用,以便提供更多价值。
第一部分 入门介绍
第1章 什么是软件架构	1
1.1 什么是软件架构,什么不是软件架构	2
1.2 架构结构与视图	5
1.3 什么是“好的”架构	19
1.4 总结	21
1.5 进一步阅读	21
1.6 问题讨论	22
第2章 软件架构的重要性	25
2.1 抑制或支持系统的质量属性	26
2.2 关于变更的推理和管理	27
2.3 预测系统质量	28
2.4 利益相关者之间的沟通	28
2.5 早期设计决策	31
2.6 实现约束	31
2.7 对组织结构的影响	32
2.8 赋能增量开发	33
2.9 成本和进度估算	33
2.10 可转移、可重用模型	34
2.11 架构允许合并独立开发的元素	34
2.12 限制设计方案的术语	35
2.13 培训的基础	36
2.14 总结	36
2.15 进一步阅读	37
2.16 问题讨论	37
第二部分 质量属性
第3章 理解质量属性	39
3.1 功能性	40
3.2 质量属性注意事项	41
3.3 明确质量属性需求:质量属性场景	42
3.4 通过架构模式和战术实现质量属性	45
3.5 用战术设计	46
3.6 分析质量属性的设计决策:基于战术的调查问卷	48
3.7 总结	49
3.8 进一步阅读	49
3.9 问题讨论	50
第4章 可用性	51
4.1 可用性通用场景	53
4.2 可用性战术	55
4.3 基于战术的可用性调查问卷	62
4.4 可用性模式	66
4.5 进一步阅读	68
4.6 问题讨论	69
第5章 可部署性	71
5.1 持续部署	72
5.2 可部署性	75
5.3 可部署性通用场景	76
5.4 可部署性战术	78
5.5 基于战术的可部署性调查问卷	80
5.6 可部署性模式	81
5.7 进一步阅读	87
5.8 问题讨论	87
第6章 能源效率	89
6.1 能源效率通用场景	90
6.2 能源效率战术	92
6.3 基于战术的能源效率调查问卷	95
6.4 模式	97
6.5 进一步阅读	98
6.6 问题讨论	99
第7章 可集成性	101
7.1 评估架构的可集成性	102
7.2 可集成性通用场景	104
7.3 可集成性战术	105
7.4 基于战术的可集成性调查问卷	110
7.5 模式	112
7.6 进一步阅读	114
7.7 问题讨论	115
第8章 可修改性	117
8.1 可修改性通用场景	120
8.2 可修改性战术	121
8.3 基于战术的可修改性调查问卷	125
8.4 模式	126
8.5 进一步阅读	130
8.6 问题讨论	131
第9章 性能	133
9.1 性能通用场景	134
9.2 性能战术	137
9.3 基于战术的性能调查问卷	145
9.4 性能模式	146
9.5 进一步阅读	149
9.6 问题讨论	150
第10章 安全性	151
10.1 安全性通用场景	154
10.2 安全性战术	156
10.3 基于战术的安全性调查问卷	160
10.4 安全性模式	163
10.5 进一步阅读	165
10.6 问题讨论	166
第11章 防护性	169
11.1 防护性通用场景	170
11.2 防护性战术	172
11.3 基于战术的防护性调查问卷	176
11.4 防护性模式	179
11.5 进一步阅读	180
11.6 问题讨论	180
第12章 可测试性	183
12.1 可测试性通用场景	186
12.2 可测试性战术	187
12.3 基于战术的可测试性调查问卷	192
12.4 可测试性模式	192
12.5 进一步阅读	194
12.6 问题讨论	195
第13章 易用性	197
13.1 易用性通用场景	198
13.2 易用性战术	200
13.3 基于战术的易用性调查问卷	202
13.4 易用性模式	203
13.5 进一步阅读	205
13.6 问题讨论	205
第14章 使用其他质量属性	207
14.1 其他质量属性	207
14.2 是否使用标准质量属性清单	209
14.3 处理“X能力”:引入新的QA	212
14.4 进一步阅读	215
14.5 问题讨论	215
第三部分 架构解决方案
第15章 软件接口	217
15.1 接口的概念	218
15.2 设计一个接口	222
15.3 接口文档编制	228
15.4 总结	230
15.5 进一步阅读	230
15.6 问题讨论	231
第16章 虚拟化	233
16.1 共享资源	234
16.2 虚拟机	235
16.3 虚拟机映像	238
16.4 容器	239
16.5 容器和虚拟机	241
16.6 容器可移植性	242
16.7 Pod	242
16.8 无服务器架构	243
16.9 总结	244
16.10 进一步阅读	245
16.11 问题讨论	245
第17章 云和分布式计算	247
17.1 云基础	248
17.2 云中失效	251
17.3 使用多个实例提高性能和可用性	253
17.4 总结	261
17.5 进一步阅读	262
17.6 问题讨论	262
第18章 移动系统	263
18.1 能源	264
18.2 网络连通性	266
18.3 传感器和执行器	267
18.4 资源	268
18.5 生命周期	270
18.6 总结	273
18.7 进一步阅读	274
18.8 问题讨论	275
第四部分 可扩展架构实践
第19章 架构上的重要需求	277
19.1 从需求文档中收集ASR	278
19.2 通过访谈利益相关者收集ASR	279
19.3 通过理解业务目标收集ASR	282
19.4 在工具树中捕获ASR	284
19.5 发生了变化	286
19.6 总结	286
19.7 进一步阅读	287
19.8 问题讨论	287
第20章 设计架构	289
20.1 属性驱动的设计	289
20.2 ADD步骤	292
20.3 ADD步骤4的进一步说明:选择一个或多个设计概念	295
20.4 ADD步骤5的进一步说明:生成结构	298
20.5 ADD步骤6的进一步说明:在设计过程中创建初步文档	301
20.6 ADD步骤7的进一步说明:对当前设计进行分析并审查迭代目标和设计目的实现情况	304
20.7 总结	306
20.8 进一步阅读	306
20.9 问题讨论	307
第21章 架构评估	309
21.1 评估作为一项降低风险的活动	309
21.2 主要的评估活动	310
21.3 谁能执行评估	311
21.4 环境因素	312
21.5 架构权衡分析方法	313
21.6 轻量级架构评估	324
21.7 总结	326
21.8 进一步阅读	327
21.9 问题讨论	327
第22章 记录一个架构	329
22.1 架构文档的用途和受众	330
22.2 符号	331
22.3 视图	332
22.4 合并视图	339
22.5 记录的行为	340
22.6 视图以外	345
22.7 记录基本原理	346
22.8 架构利益相关者	347
22.9 实际问题	350
22.10 总结	353
22.11 进一步阅读	353
22.12 问题讨论	354
第23章 管理架构债	355
23.1 确定是否存在架构债问题	356
23.2 发现热点	358
23.3 示例	362
23.4 自动化	363
23.5 总结	364
23.6 进一步阅读	364
23.7 问题讨论	365
第五部分 架构和组织
第24章 架构师在项目中的角色	367
24.1 架构师和项目经理	367
24.2 增量架构和利益相关者	369
24.3 架构和敏捷开发	370
24.4 架构和分布式开发	373
24.5 总结	376
24.6 进一步阅读	376
24.7 问题讨论	377
第25章 架构能力	379
25.1 个人能力:架构师的职责、技能和知识	379
25.2 软件架构组织的能力	386
25.3 成为更好的架构师	387
25.4 总结	388
25.5 进一步阅读	388
25.6 问题讨论	389
第六部分 结论
第26章 展望未来:量子计算	391
26.1 单量子位	392
26.2 量子隐形传态	394
26.3 量子计算和加密	394
26.4 其他算法	395
26.5 潜在应用	396
26.6 最后的想法	397
26.7 进一步阅读	398
参考资料	399



Contents 
PART I INTRODUCTION 1 
CHAPTER 1 What Is Software Architecture? 1 
1.1 What Software Architecture Is and What It Isn’t 2 
1.2 Architectural Structures and Views 5 
1.3 What Makes a “Good” Architecture? 19 
1.4 Summary 21 
1.5 For Further Reading 21 
1.6 Discussion Questions 22 
CHAPTER 2 Why Is Software Architecture Important? 25 
2.1 Inhibiting or Enabling a System’s Quality Attributes 26 
2.2 Reasoning about and Managing Change 27 
2.3 Predicting System Qualities 28 
2.4 Communication among Stakeholders 28 
2.5 Early Design Decisions 31 
2.6 Constraints on Implementation 31 
2.7 Influences on Organizational Structure 32 
2.8 Enabling Incremental Development 33 
2.9 Cost and Schedule Estimates 33 
2.10 Transferable, Reusable Model 34 
2.11 Architecture Allows Incorporation of Independently Developed Elements 34 
2.12 Restricting the Vocabulary of Design Alternatives 35 
2.13 A Basis for Training 36 
2.14 Summary 36 
2.15 For Further Reading 37 
2.16 Discussion Questions 37 
PART II QUALITY ATTRIBUTES 39 
CHAPTER 3 Understanding Quality Attributes 39 
3.1 Functionality 40 
3.2 Quality Attribute Considerations 41 
3.3 Specifying Quality Attribute Requirements: Quality Attribute Scenarios 42 
3.4 Achieving Quality Attributes through Architectural Patterns and Tactics 45 
3.5 Designing with Tactics 46 
3.6 Analyzing Quality Attribute Design Decisions: Tactics-Based Questionnaires 48 
3.7 Summary 49 
3.8 For Further Reading 49 
3.9 Discussion Questions 50 
CHAPTER 4 Availability 51 
4.1 Availability General Scenario 53 
4.2 Tactics for Availability 55 
4.3 Tactics-Based Questionnaire for Availability 62 
4.4 Patterns for Availability 66 
4.5 For Further Reading 68 
4.6 Discussion Questions 69 
CHAPTER 5 Deployability 71 
5.1 Continuous Deployment 72 
5.2 Deployability 75 
5.3 Deployability General Scenario 76 
5.4 Tactics for Deployability 78 
5.5 Tactics-Based Questionnaire for Deployability 80 
5.6 Patterns for Deployability 81 
5.7 For Further Reading 87 
5.8 Discussion Questions 87 
CHAPTER 6 Energy Efficiency 89 
6.1 Energy Efficiency General Scenario 90 
6.2 Tactics for Energy Efficiency 92 
6.3 Tactics-Based Questionnaire for Energy Efficiency 95 
6.4 Patterns 97 
6.5 For Further Reading 98 
6.6 Discussion Questions 99 
CHAPTER 7 Integrability 101 
7.1 Evaluating the Integrability of an Architecture 102 
7.2 General Scenario for Integrability 104 
7.3 Integrability Tactics 105 
7.4 Tactics-Based Questionnaire for Integrability 110 
7.5 Patterns 112 
7.6 For Further Reading 114 
7.7 Discussion Questions 115 
CHAPTER 8 Modifiability 117 
8.1 Modifiability General Scenario 120 
8.2 Tactics for Modifiability 121 
8.3 Tactics-Based Questionnaire for Modifiability 125 
8.4 Patterns 126 
8.5 For Further Reading 130 
8.6 Discussion Questions 131 
CHAPTER 9 Performance 133 
9.1 Performance General Scenario 134 
9.2 Tactics for Performance 137 
9.3 Tactics-Based Questionnaire for Performance 145 
9.4 Patterns for Performance 146 
9.5 For Further Reading 149 
9.6 Discussion Questions 150 
CHAPTER 10 Safety 151 
10.1 Safety General Scenario 154 
10.2 Tactics for Safety 156 
10.3 Tactics-Based Questionnaire for Safety 160 
10.4 Patterns for Safety 163 
10.5 For Further Reading 165 
10.6 Discussion Questions 166 
CHAPTER 11 Security 169 
11.1 Security General Scenario 170 
11.2 Tactics for Security 172 
11.3 Tactics-Based Questionnaire for Security 176 
11.4 Patterns for Security 179 
11.5 For Further Reading 180 
11.6 Discussion Questions 180 
CHAPTER 12 Testability 183 
12.1 Testability General Scenario 186 
12.2 Tactics for Testability 187 
12.3 Tactics-Based Questionnaire for Testability 192 
12.4 Patterns for Testability 192 
12.5 For Further Reading 194 
12.6 Discussion Questions 195 
CHAPTER 13 Usability 197 
13.1 Usability General Scenario 198 
13.2 Tactics for Usability 200 
13.3 Tactics-Based Questionnaire for Usability 202 
13.4 Patterns for Usability 203 
13.5 For Further Reading 205 
13.6 Discussion Questions 205 
CHAPTER 14 Working with Other Quality Attributes 207 
14.1 Other Kinds of Quality Attributes 207 
14.2 Using Standard Lists of Quality Attributes—Or Not 209 
14.3 Dealing with “X-Ability”: Bringing a New QA into the Fold 212 
14.4 For Further Reading 215 
14.5 Discussion Questions 215 
PART III ARCHITECTURAL SOLUTIONS 217 
CHAPTER 15 Software Interfaces 217 
15.1 Interface Concepts 218 
15.2 Designing an Interface 222 
15.3 Documenting the Interface 228 
15.4 Summary 230 
15.5 For Further Reading 230 
15.6 Discussion Questions 231 
CHAPTER 16 Virtualization 233 
16.1 Shared Resources 234 
16.2 Virtual Machines 235 
16.3 VM Images 238 
16.4 Containers 239 
16.5 Containers and VMs 241 
16.6 Container Portability 242 
16.7 Pods 242 
16.8 Serverless Architecture 243 
16.9 Summary 244 
16.10 For Further Reading 245 
16.11 Discussion Questions 245 
CHAPTER 17 The Cloud and Distributed Computing 247 
17.1 Cloud Basics 248 
17.2 Failure in the Cloud 251 
17.3 Using Multiple Instances to Improve Performance and Availability 253 
17.4 Summary 261 
17.5 For Further Reading 262 
17.6 Discussion Questions 262 
CHAPTER 18 Mobile Systems 263 
18.1 Energy 264 
18.2 Network Connectivity 266 
18.3 Sensors and Actuators 267 
18.4 Resources 268 
18.5 Life Cycle 270 
18.6 Summary 273 
18.7 For Further Reading 274 
18.8 Discussion Questions 275 
PART IV SCALABLE ARCHITECTURE PRACTICES 277 
CHAPTER 19 Architecturally Significant Requirements 277 
19.1 Gathering ASRs from Requirements Documents 278 
19.2 Gathering ASRs by Interviewing Stakeholders 279 
19.3 Gathering ASRs by Understanding the Business Goals 282 
19.4 Capturing ASRs in a Utility Tree 284 
19.5 Change Happens 286 
19.6 Summary 286 
19.7 For Further Reading 287 
19.8 Discussion Questions 287 
CHAPTER 20 Designing an Architecture 289 
20.1 Attribute-Driven Design 289 
20.2 The Steps of ADD 292 
20.3 More on ADD Step 4: Choose One or More Design Concepts 295 
20.4 More on ADD Step 5: Producing Structures 298 
20.5 More on ADD Step 6: Creating Preliminary Documentation during the Design 301 
20.6 More on ADD Step 7: Perform Analysis of the Current Design and Review the Iteration Goal and Achievement of the Design Purpose 304 
20.7 Summary 306 
20.8 For Further Reading 306 
20.9 Discussion Questions 307 
CHAPTER 21 Evaluating an Architecture 309 
21.1 Evaluation as a Risk Reduction Activity 309 
21.2 What Are the Key Evaluation Activities? 310 
21.3 Who Can Perform the Evaluation? 311 
21.4 Contextual Factors 312 
21.5 The Architecture Tradeoff Analysis Method 313 
21.6 Lightweight Architecture Evaluation 324 
21.7 Summary 326 
21.8 For Further Reading 327 
21.9 Discussion Questions 327 
CHAPTER 22 Documenting an Architecture 329 
22.1 Uses and Audiences for Architecture Documentation 330 
22.2 Notations 331 
22.3 Views 332 
22.4 Combining Views 339 
22.5 Documenting Behavior 340 
22.6 Beyond Views 345 
22.7 Documenting the Rationale 346 
22.8 Architecture Stakeholders 347 
22.9 Practical Considerations 350 
22.10 Summary 353 
22.11 For Further Reading 353 
22.12 Discussion Questions 354 
CHAPTER 23 Managing Architecture Debt 355 
23.1 Determining Whether You Have an Architecture Debt Problem 356 
23.2 Discovering Hotspots 358 
23.3 Example 362 
23.4 Automation 363 
23.5 Summary 364 
23.6 For Further Reading 364 
23.7 Discussion Questions 365 
PART V ARCHITECTURE AND THE ORGANIZATION 367 
CHAPTER 24 The Role of Architects in Projects 367 
24.1 The Architect and the Project Manager 367 
24.2 Incremental Architecture and Stakeholders 369 
24.3 Architecture and Agile Development 370 
24.4 Architecture and Distributed Development 373 
24.5 Summary 376 
24.6 For Further Reading 376 
24.7 Discussion Questions 377 
CHAPTER 25 Architecture Competence 379 
25.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects 379 
25.2 Competence of a Software Architecture Organization 386 
25.3 Become a Better Architect 387 
25.4 Summary 388 
25.5 For Further Reading 388 
25.6 Discussion Questions 389 
PART VI CONCLUSIONS 391 
CHAPTER 26 A Glimpse of the Future: Quantum Computing 391 
26.1 Single Qubit 392 
26.2 Quantum Teleportation 394 
26.3 Quantum Computing and Encryption 394 
26.4 Other Algorithms 395 
26.5 Potential Applications 396 
26.6 Final Thoughts 397 
26.7 For Further Reading 398 
References 399 
图书在版编目(CIP)数据
软件架构实践:原书第4版= Software Architecture in Practice, Fourth Edition:英文/(美)伦·巴斯(Len Bass),(美)保罗·克莱门茨(Paul Clements),(美)瑞克·凯兹曼(Rick Kazman)著. --北京:机械工业出版社,2022.1
(架构师书库)
ISBN 978-7-111-69915-6
Ⅰ. ①软… Ⅱ. ①伦… ②保… ③瑞… Ⅲ. ①软件设计–英文 Ⅳ. ①TP311.1
中国版本图书馆CIP数据核字(2021)第275866号
相关图书
浏览此书同时浏览过的图书