作者 |
[美]伦·巴斯(Len Bass),[美]保罗·克莱门茨(Paul Clements),[美]瑞克·凯兹曼(Rick Kazman) |
丛书名 |
架构师书库 |
出版社 |
机械工业出版社 |
ISBN |
9787111699156 |
简要 |
简介 |
内容简介书籍计算机书籍 三位著名的软件架构师的新版著作,阐述了软件架构师如何管理和优化现有体系结构,转换它们以解决新问题,并构建可重用的体系结构,使之成为战略业务资产。更新了移动,云,能源管理,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 |