1、 软件架构设计(第 2版 ): 程序员向架构师转型必备 温昱著 昱培咨询审校 北京 BEIJING Publishing House of Electronics Industry 内 容 简 介 本书围绕“软件架构设计”主题,从“程序员”成长的视角,深入浅出地讲述了架构师的修炼 之道。从“基础篇” 、到“设计过程篇” 、到“模块划分专题” ,本书覆盖了架构设计的关键技能项, 并且对于架构设计过程中可能出现的各种问题给与了解答。 本书对于有志于成为架构师的程序员们具有非常有效的指导意义,对于已经成为架构师的同行 们系统化规范架构设计也是一本很好的教材。 未经许可,不得以任何方式复制或抄袭本书之
2、部分或全部内容。 版权所有,侵权必究。 图书在版编目(CIP )数据 软件架构设计:程序员向架构师转型必备温昱著. 2 版. 北京:电 子工业出版社,2012.7 ISBN 978-7-121-17087-4 . 软 . 温 . 软件设计教材 . TP311.5 中国版本图书馆 CIP 数据核 字(2012)第 101071 号 责任编辑:孙学瑛 印 刷:北京天宇星印刷厂 装 订:三河市皇庄路通装订厂 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:7871092 1/16 印张:16 字数:341 千字 印 次:2012 年 7 月第 1 次 印刷 印
3、 数:4000 册 定价:59.80 元(含 DVD 光盘 1 张) 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联 系,联系及邮购电话: (010)88254888。 质量投诉请发邮件至 ,盗 版侵权举报请发邮件至 。 服务热线: (010)88258888。 Experts Recommend 专家推荐 (以姓氏 笔 划为序) 与温昱先生初识于一次部门内训,金融机构应用信息技术日久,但业务发展之快仍需信息技术 部门 不断思索如何 提供有力的技 术支持,当时 系统设计人员 思路难成一致 ,故邀请先生 来讲述 所 得,先生讲座生动有趣,案例均为实践中心得
4、,有助于一线设计人员在低头干事之余,能够抬头看 路,从架构高度理解和看待日常工作, 软件架构设计(第 2 版) 同样着眼于研发实践,不作黄钟 大吕之音,而以一觞一咏畅叙分享一线设计师的感悟体会。此书值得一看,作者亦值得一晤! 朱晓光 中国建设 银行 北京开发 中 心 处长 在厦门, 曾和 温老师有过 4 天晚上的 坐而 论道,从 技术 到业界、 从数 据模型到 软件 重构、从 职 业观到 心理学 ,彼此 颇多启 发。第 一时间 收到本 书的电 子版, 读来流 畅易懂 ,胜似 面晤对 谈 。 本书内容 务实 、技能梳 理清 晰,实乃 软件 开发者职 业生 涯发展的 重要 参考。 朱志 中 国建设
5、银 行 厦门开发 中心 总工办 基 于软件 架构的 开发模 式,作 为软件 开发的 最佳实 践之一 ,越来 越得到 各行各 业的重 视和 关 注 ,但遗 憾的是 理解其 精髓和 内涵的 人太少 。温老 师作为 软件架 构思想 的传播 者和推 动者, 在 这 本 书中, 对程序 员如何 成长为 优秀的 架构师 给出了 非常具 体的指 导原则 和实现 方法, 是国内 不 可 多 得的真 正将软 件架构 思想阐 述如此 精准的 实践指 导书。 作为一 名软件 行业的 从业者 ,我强 烈 推 荐给大家 。 李哲洙 博士 东软集 团 电信事业 部 网管产品 与系统部 部长 这本书以架构设计人员实际工作流
6、程为线索,详细阐述了逻辑架构和物理架构视图的重要性及 其在架构设计中的应用方法。此外,本书从实践的角度,给出了架构设计的三个原则和 6 大步骤, 并以具体实践过程为指导,给出了架构设计从需求分析到最后的架构设计、架构验证的完整的架构 设计生命周期的实践方法,对软件研发项目团队和架构师的研发实践工作具有很好的指导意义。 IV 杨勇 中兴通讯 业 务 研究院 平台 总工 从事软件工作近十年,由软件功能模块的程序员开始,到独立负责几个软件项目的设计开 发,一直对软件架构设计比较关注,有幸听了温昱老师的“软件架构设计”讲座,顿感茅塞顿 开,再次阅读温老师的软件架构设计 ,对架构设计有了更深的感悟。如果
7、你对软件架构 设计 感觉朦朦 胧胧 ,温先生 的 软件架构 设计 (第 2 版) 定能让你 拨开 云雾见青 天。 杨为禄 南京国睿 安泰 信科技股 份有 限公司 一 线 软件工程 师 近年来,阅读了诸多系统、需求、架构类的书籍资料,温老师的几本书简明扼要,见解独 到 ,颇多 启发。 “横 看成岭侧 成峰 ,远近高 低各 不同” , 大系 统架构( 体系 结构)包 括系 统组分、 组 分间的 关系, 以及演 化等三 要素; 温老师 在本书 中给出 了典型 视角、 典型模 式、典 型过程 等 实 践指南。 有志 创造系统 ,赋 予软件灵 魂的 架构师, 当读 此书。 张雪松 中国电子 科学 研究院
8、 复 杂 大系统研 究与 仿真 架 构是很 玄的东 西,成 为优秀 的架构 师也是 大部分 程序员 的理想 。温昱 先生这 本书的 特点 就 是 从程序 员角度 ,深入 浅出地讲述了 架构师 的修炼 之道。 程序员 与架构 师区别 的最重 要一点 是 看 待 事物的 角度和 处理方 法,优 秀的程 序员按 照本书 的方法,在日 常工作 中一步 步实践 ,有 助于培 养 出架构 师的能 力,从 而逐步 成长成 为架构 师。架 构的目 标是为 了沟通 和交流 ,温先 生也深 刻 地 领 悟到这 一架构 设计的 根本目 标,并 将这一 目标转 化为方 法论。 架构设 计不是 给自己 看的, 而 是
9、为了 与 客户 、 领导 和 团 队沟通 ,本书 的重点 在于架 构设计 实践, 从用例 、 需求 分析、概念模 型 、 细 化模型 等一步 步地 指 导如何 完成架 构设计 ,并且 对于架 构设计 过程中 可能出 现的各 种问题 给 予 了 解答。 本书对 于有志 于成为 架构师 的程序 员们具 有非常 有效的 指导意 义,对 于已经 成为架 构 师 的同行们 系统 化规范架 构设 计也是一 本很 好的教材 。 钱煜明 中兴通讯 业 务研究院 移 动互联网 总工 程师 早 在 2009 年的时候就读过温老师的软件架构设计第一版,2011 年有幸请到温老师来公司 主讲 “软件架构设 计” ,幸
10、有当面 请教的机会, 温老师对软件 架构独特的授 课方法和深厚 的功底让 我如沐春风、豁然开朗,颇有几分“顿悟”之感。 五 年磨一剑,如今有幸抢先拜读温老师的软件架构设计第二版,更是被书中内容所折服。 书中融合了作者多年来在一线的实践和培训经验,深入浅出地阐释了什么是软件架构,手把手教你 从客户需求入手顺畅地设计出高可用的软件架构,让你读完本书后情不自禁地感叹: “原来软件架构 设计并没有那么高深莫测! ”该书理论和实践并重,是一本不可多得的软件架构设计的指导书籍。 崔朝辉 东软集团 技 术战略与 发展 部 资深顾 问 站得足够高, 才能看得足够 远。当今 IT 的架构设计思 想理念已经是 经
11、过数次洗礼 之后的 结 晶 ,而温 昱先生 抓住了 这一结 晶生命 体的真 正骨架 ,并深 入浅出 地汇集 成这本 书。有 了这本 书 , V 你就可以 依据 自己的 Project 来高效地 添加 血肉,构 建出 独特的有 机生 命体。 谌晏生 广州从兴 电 力事业部 一 线软件设 计师 Experts Recommend 作者介绍 温昱 资深咨询顾问,软件架构专家。软件架构思想的传播 者和积极推动者,中国软件技术大会杰出贡献专家。十五年系统 规划、架构设计和研发管理经验,在金融、航空、多媒体、电 信、中间件平台等领域负责和参与多个大型系统的规划、设计、 开发与管 理。 昱培咨询 专注
12、于如下三 个领 域的咨询 与培 训: 架构设计 详细设计 设计重构 几年来, 我们 为近百家 软企 提供了卓 有成 效的服务 。 长期一线经验的积累,更促成了 ADMEMS 架构实践体系、 ARCT 设计重构方法论的形成 和成熟,并已成为了我们服务 品质的重 要保 证之一。 CONTENTS 目 录 第 1 章 从程序员到架构师. 1 1.1 软 件业 人才结构. 1 1.1.1 金 字塔 型,还是 橄榄 型?. 1 1.1.2 从 程序 员向架构 师转 型. 2 1.2 本书 价值. 3 1.2.1 阅读 路径 1 :架构 设 计入门. 3 1.2.2 阅读 路径 2 :领会 大 系统架构
13、设计. 4 1.2.3 阅读 路径 3 :从需 求 到架构的 全过 程. 5 1.2.4 阅读 路径 4 :结合 工 作,解决 实际 问题. 6 第 1 部分 基本概念篇 第 2 章 解析软件架构概念. 10 2.1 软 件架 构概念的 分类. 10 2.1.1 组成 派. 11 2.1.2 决策 派. 11 2.1.3 软 件架 构概念大 观. 12 2.2 概 念思 想的解析. 13 2.2.1 软 件架 构关注分 割与 交互. 13 2.2.2 软 件架 构是一系 列有 层次的决 策. 14 2.2.3 系 统、 子系统、 框架 都可以有 架构. 17 2.3 实际 应用 (1 ) 团队
14、对架 构看 法不一怎 么办. 18 VIII 2.3.1 结 合手 上的实际 工作 来理解架 构的 含义. 18 2.3.2 这样 理解 “ 架构 ” 对吗. 19 2.3.3 工 作中 找答案: 先看 部分设计. 19 2.3.4 工 作中 找答案: 反观 架构概念 的体现. 22 第 3 章 理解架构设计视图. 24 3.1 软 件架 构为谁而 设计. 24 3.1.1 为 用户 而设计. 25 3.1.2 为 客户 而设计. 26 3.1.3 为 开发 人员而设 计. 26 3.1.4 为 管理 人员而设 计. 26 3.1.5 总结. 27 3.2 理 解架 构设计视 图. 28 3.
15、2.1 架构 视图. 28 3.2.2 一 个直 观的例子. 28 3.2.3 多 组涉 众,多个 视图. 29 3.3 运 用“ 逻 辑视图+ 物 理 视图” 设计架 构. 30 3.3.1 逻辑 架构. 31 3.3.2 物理 架构. 32 3.3.3 从“ 逻辑 架 构+ 物 理 架构” 到设计 实现. 32 3.4 实际 应用 (2 ) 开发人员 如何 快速成长. 33 3.4.1 开 发人 员应该多 尝试 设计. 33 3.4.2 实 验项 目:案例 背景 、训练目 标. 34 3.4.3 逻辑 架构 设 计 (迭代 1 ). 35 3.4.4 物理 架构 设 计 (迭代 1 ).
16、35 3.4.5 逻辑 架构 设 计 (迭代 2 ). 36 3.4.6 物理 架构 设 计 (迭代 2 ). 37 第 2 部分 实践过程篇 第 4 章 架构设计过程. 40 4.1 架 构设 计的实践 脉络. 41 4.1.1 洞察 节奏 :3 个 原则. 41 4.1.2 掌握 过程 :6 个 步骤. 43 IX 4.2 架 构设 计的速查 手册. 45 4.2.1 需求 分析. 45 4.2.2 领域 建模. 46 4.2.3 确 定关 键需求. 47 4.2.4 概 念架 构设计. 49 4.2.5 细 化架 构设计. 50 4.2.6 架构 验证. 51 第 5 章 需求分析 .
17、53 5.1 需 求开 发(上) 愿景分析 . 53 5.1.1 从 概念 化阶段说 起. 54 5.1.2 愿景. 54 5.1.3 上下 文图. 56 5.1.4 愿 景分 析实践要 领. 60 5.2 需 求开 发(下) 需求分析 . 60 5.2.1 需求 捕获 vs. 需求 分析 vs. 系统 分析. 61 5.2.2 需 求捕 获及成果. 63 5.2.3 需 求分 析及成果. 64 5.2.4 系 统分 析及成果. 65 5.3 掌 握的 需求全不 全. 65 5.3.1 二 维需 求观与 ADMEMS 矩阵. 65 5.3.2 功能. 66 5.3.3 质量. 68 5.3.4
18、 约束. 71 5.4 从 需求 向设计转 化的 “ 密码 ”. 72 5.4.1 “ 理性 设计 ” 还是 “ 拍脑袋 ”. 72 5.4.2 功 能: 职责协作 链. 73 5.4.3 质 量: 完善驱动 力. 74 5.4.4 约束 :设 计 并不 自由. 74 5.5 实际应用(3 )PM Suite 贯穿 案 例之需求 分析 . 75 5.5.1 PM Suite 案例背景 介 绍. 76 5.5.2 第 1 步 :明确系 统目 标. 77 5.5.3 第 2 步 :范围 + Feature + 上下文 图. 77 X 5.5.4 第 3 步 :画用例 图. 82 5.5.5 第 4
19、 步 :写用例 规约. 85 5.5.6 插 曲: 需求启发 与需 求验证. 86 5.5.7 插 曲: 非功能需 求. 88 5.5.8 需 求规 格 与基于 ADMEMS 矩阵的需 求评 审. 88 第 6 章 用例与需求. 89 6.1 用例 技术 族. 89 6.1.1 用例 图. 90 6.1.2 用 例简 述、用户 故事. 90 6.1.3 用例 规约. 91 6.1.4 用 例实 现、鲁棒 图. 92 6.1.5 4 种 技 术的关系. 93 6.2 用 例技 术族的应 用场 景. 94 6.2.1 用 例与 需求分析. 94 6.2.2 用 例与 需求文档. 95 6.2.3 用 例与 需求变更. 97 6.3 实际 应用 (4 ) 用例建模 够不 够?流程 建模 要不要. 99