新書推薦:

《
巴格达新版 和平之城 血腥之城 汗青堂丛书055
》
售價:NT$
551.0

《
水之契约
》
售價:NT$
367.0

《
ABB工业机器人离线编程与仿真
》
售價:NT$
607.0

《
工厂生产计划精细化、精益化、精进化管理手册
》
售價:NT$
352.0

《
中国画技法与教学研究
》
售價:NT$
337.0

《
生命瞬间 人生风采——晚晴居影集
》
售價:NT$
500.0

《
西方毛发时尚演变
》
售價:NT$
500.0

《
情绪彩虹书:CBT与艺术的轻疗愈手册(珍藏版)
》
售價:NT$
1020.0
|
編輯推薦: |
在云原生、微服务、AI集成等技术浪潮下,架构设计已成为软件开发的核心竞争力,但许多开发者仍困于“决策无章法”“敏捷与规范难平衡”等难题。《软件架构设计:实用方法及实践(原书第2版)》以经典ADD方法为根基,结合前沿趋势,为架构师提供了一套“从理论到落地”的完整解决方案。 本书三大核心价值: 方法论升级:新增云原生架构、API优先设计、技术债务治理等章节,覆盖部署可观测性、敏捷实践等热点,适配高并发、分布式等复杂场景。 案例驱动:通过“酒店定价系统”“数字孪生平台”两大实战案例,拆解微服务拆分、AI集成等设计思路,提供20+可复用模板。 敏捷赋能:融合DevOps与持续交付,教你用“属性驱动”平衡业务增长与技术演进,避免架构腐化。
|
內容簡介: |
本书阐述了如何以一种系统的、可预测的、可重复的、节约成本的方式来设计各类软件架构。书中不仅介绍了一种实用的架构设计方法,还提供了由可重用的设计知识所支撑的结构化方法,也收录了丰富的案例研究,用于展示如何使用这一实用方法。利用现实案例,你将掌握已被验证过的属性驱动设计(ADD)的全新版本,比如伴随功能需求和架构问题出现的可修改性、可用性以及可靠性。Humberto Cervantes和Rick Kazman基于他们丰富的经验,指导你通过各具特色的实用设计来支持完整的软件周期,从需求到维护,再到演化。你将学习如何成功地将设计整合在组织背景中,以及如何使用敏捷方法设计软件系统。
|
關於作者: |
亨伯托·塞万提斯(Humberto Cervantes)是一位经验丰富的软件架构师,同时也是墨西哥城Iztapalapa大都会自治大学的教授。他的主要研究方向是开发工具和方法,以改进软件架构设计实践。他还持有SEI颁发的软件架构师专业证书和ATAM评估师证书。里克·卡兹曼(Rick Kazman)是夏威夷大学信息技术管理专业的Danny和Elsa Lui杰出教授。他参与创建了架构分析方法(ATAM)以及用于架构分析的Titan和DV8工具。
|
目錄:
|
目 录 Contents 译者序前 言致 谢关于作者第1章 引言11.1 动机11.2 软件架构21.2.1 软件架构的重要性21.2.2 生命周期活动31.3 架构师的角色51.4 ADD简史61.5 总结71.6 扩展阅读71.7 讨论问题8第2章 架构设计92.1 通用设计92.2 软件架构中的设计102.2.1 架构设计112.2.2 元素交互设计122.2.3 元素内部设计122.2.4 决策和设计级别122.3 为什么架构设计如此重要132.4 架构驱动因素142.4.1 设计目标142.4.2 质量属性152.4.3 主要功能202.4.4 架构关注点212.4.5 约束条件222.5 总结222.6 扩展阅读222.7 讨论问题23第3章 制定设计决策253.1 制定设计决策概述253.2 设计理念:创建软件结构的基石283.2.1 参考架构293.2.2 模式303.2.3 策略303.2.4 外部开发的组件323.3 支持性能的设计理念333.3.1 性能策略333.3.2 性能模式343.4 支持可用性的设计理念353.4.1 可用性策略353.4.2 可用性模式373.5 支持可修改性的设计概念393.5.1 可修改性策略403.5.2 可修改性模式413.6 支持安全性的设计理念423.6.1 安全策略423.6.2 安全模式443.7 支持可集成性的设计理念453.7.1 可集成性策略453.7.2 集成模式473.8 总结483.9 扩展阅读483.10 讨论问题49第4章 架构设计过程504.1 对具备原则性的方法的需求504.2 属性驱动设计3.0版本514.2.1 步骤1:审查输入514.2.2 步骤2:通过选择驱动因素 建立迭代目标524.2.3 步骤3:选择系统元素进行细化534.2.4 步骤4:选择满足选定驱动 因素的设计概念534.2.5 步骤5:实例化架构元素、分配 职责并定义接口534.2.6 步骤6:绘制视图草图并记录 设计决策544.2.7 步骤7:执行当前设计分析, 并审查迭代目标和设计目标 的实现情况544.2.8 必要时进行迭代544.3 在不同的系统环境中应用属性 驱动设计554.3.1 面向成熟领域的全新系统设计554.3.2 面向新兴领域的全新系统设计574.3.3 面向现有系统的变更设计574.3.4 替换遗留应用程序的设计584.4 识别和选择设计概念584.4.1 设计概念的识别584.4.2 设计概念的选择594.5 生成结构614.5.1 实例化元素624.5.2 分配功能并识别属性634.5.3 建立元素间的关系634.6 定义接口634.6.1 外部接口634.6.2 内部接口634.7 在设计过程中创建初步文档674.7.1 记录视图草图674.7.2 记录设计决策694.8 跟踪设计进度704.8.1 使用架构待办事项列表704.8.2 设计看板的使用714.9 总结724.10 扩展阅读724.11 讨论问题73第5章 以API为中心的设计745.1 业务敏捷性745.1.1 从项目转向产品755.1.2 业务敏捷性的驱动因素755.2 以API为中心的设计关注点765.2.1 API和可组合性765.2.2 API优先设计775.2.3 以API为中心的设计概念825.2.4 API管理855.3 以API为中心的设计和ADD875.3.1 ADD和API规范设计875.3.2 在以API为中心的设计的其他 领域使用ADD885.4 总结895.5 扩展阅读895.6 讨论问题90第6章 可部署性设计916.1 可部署性原则和架构设计916.1.1 可部署性的定义916.1.2 持续集成、部署和交付936.1.3 可部署性设计的探讨946.2 支持可部署性的设计决策956.2.1 可部署性策略966.2.2 可部署性模式976.3 可部署性和ADD1026.4 总结1046.5 扩展阅读1046.6 讨论问题105第7章 设计基于云的解决方案1067.1 云计算概述1067.1.1 什么是云计算1067.1.2 服务模型1077.1.3 托管资源1087.2 驱动因素和云1087.2.1 质量属性1087.2.2 约束条件1097.3 基于云的设计概念1117.3.1 外部开发组件:云功能1117.3.2 策略1147.3.3 模式1157.4 云解决方案中的ADD1177.5 总结1187.6 扩展阅读1187.7 讨论问题118第8章 案例研究:酒店定价系统1208.1 商业案例1208.2 系统需求1218.2.1 主要功能1218.2.2 质量属性场景1228.2.3 约束条件1238.2.4 架构关注点1238.3 开发和运营需求1248.3.1 质量属性场景1248.3.2 约束条件1248.3.3 架构关注点1258.4 软件设计过程1258.4.1 ADD步骤1:审查输入1258.4.2 迭代1:建立整体系统结构1268.4.3 迭代2:识别支持主要功能的 结构1318.4.4 迭代3:处理可靠性和可用性 质量属性1428.4.5 迭代4:满足开发和运维需求1468.5 总结1498.6 扩展阅读1508.7 讨论问题150第9章 案例研究:数字孪生平台1519.1 商业案例1519.2 系统需求1529.2.1 用例模型1539.2.2 质量属性场景1539.2.3 约束条件1549.3 设计过程1549.3.1 ADD步骤1:审查输入1549.3.2 迭代1:参考架构和整体 系统结构1559.3.3 迭代 2:工业物联网要素的 细化1609.3.4 迭代3:大数据和AI元素的 细化1669.4 总结1749.5 扩展阅读1759.6 讨论问题176第10章 架构设计中的技术债务17710.1 技术债务17710.2 设计中技术债务的根源17810.3 重构和重新设计18110.4 技术债务和 ADD18210.5 总结18410.6 扩展阅读18410.7 讨论问题185第11章 设计过程中的分析18611.1 分析和设计18611.2 为什么要进行分析18811.3 分析技术18911.4 基于策略的分析19011.5 反思问题19111.6 基于场景的设计评审19211.7 总结19511.8 扩展阅读19511.9 讨论问题196第12章 组织中的架构设计流程19712.1 架构设计与开发生命周期19712.1.1 支持估算的设计19712.1.2 支持敏捷开发的设计19912.1.3 支持顺序开发的设计20212.1.4 架构设计与测试策略20312.2 架构设计与组织结构20412.2.1 个人设计或团队设计20412.2.2 架构师的多重角色20512.2.3 组织的架构指南20712.2.4 架构团队20812.3 总结20912.4 扩展阅读20912.5 讨论问题210第13章 结束语21213.1 方法的必要性21213.2 未来方向21413.3 下一步21413.4 扩展阅读21513.5 讨论问题215附录 基于策略的问卷调查216
|
內容試閱:
|
前 言 距离本书第1版问世已过多年,在此期间,我们在技术领域见证了云架构、物联网(IoT)架构、DevOps、人工智能/机器学习(AI/ML)、容器、微服务等众多技术的兴起。那么,我们在当时提出的建议现在仍然适用吗?可以说,既适用也不适用。我们认为,设计软件架构的原则和实践并未发生改变,因此,本书的支撑框架—属性驱动设计的方法也不会改变。在过去的几年里,成千上万名从业者掌握了该方法,并成功地将该方法应用到许多工业项目中。读者反馈的内容一直都是很积极的,我们并未收到修改该方法的请求,这令我们倍感欣慰。然而,当下软件设计所处的技术环境与背景确实发生了改变。如今,很少有人会设计一个完全独立的系统。大多数情况下,你只需在现有框架和工具包的基础上进行构建,并集成一些现成的组件(可能是开源的)。更常见的情况是,你构建的系统需要与其他系统进行实时交互,甚至可能需要共享资源。很可能你正在使用某种敏捷开发的方法来构建系统,这意味着你的系统将会被频繁修改,并进行定期更新和发布。你构建的系统架构可能涉及物联网系统、移动系统、云和容器化系统或自适应性系统。当然,你所使用的软件可能也已经非常老旧,并且多年来积累了许多技术债务。基于以上原因,我们认为有必要撰写第2版,以适应当今架构决策中需要考虑的诸多新背景。在新版本中,我们针对以下内容增加了新的章节:通过以 API 为中心的设计支持业务敏捷性、可部署性、基于云的解决方案,以及解决设计中的技术债务问题。在本次修订中,我们还新增了两个全新背景下的研究案例,以此来深入探讨当前背景下的架构挑战。在第8章中的“酒店定价系统”研究案例中,通过采用部署在云基础设施上的微服务架构,实现了该系统的大部分功能,旨在实现服务的跨环境迁移和高可用性。在第9章中介绍的“数字孪生平台” 研究案例中,我们则进一步探讨了更多的架构挑战:物联网、云计算、大数据分析、人工智能/机器学习、扩展现实(XR)、仿真、高级自动化以及机器人技术,它们构成了一个庞大而复杂的系统。因此,单个架构师是远远不够的,该系统需要一个汇聚了各个领域专业知识的大型架构团队来协同支持。在每个案例中,我们将展示ADD方法如何以规范的方式将设计挑战转变为现实。我们衷心希望本书能够让你自信、从容地应对各种项目规模下的架构设计挑战!
|
|