第 1 章 什么是架构

第 1 章 什么是架构

在不同的人眼里“架构”一词的意思大相径庭,互联网上对架构的定义也多如牛毛。过去几年里我问过上百人同一个问题,在他们看来“架构”意味着什么。得到的答案概括如下(排名不分先后):

  • 模块、连接、依赖和接口;
  • 大局观;
  • 改变成本很高的事情;
  • 难以改变的事情;
  • 更加兼顾全局的设计;
  • 接口而非实现;
  • 审美(比如:艺术般的整洁代码);
  • 概念模型;
  • 满足非功能需求/质量属性;
  • 每件事都有“架构”;
  • 沟通能力(抽象、语言、词汇);
  • 计划;
  • 一定程度的严格和可靠性;
  • 蓝图;
  • 系统、子系统、交互和接口;
  • 管理;
  • 战略决策的产出;
  • 必要的约束;
  • 结构(组件和交互);
  • 技术方向;
  • 战略和愿景;
  • 结构单元;
  • 实现目标的过程;
  • 标准和准则;
  • 整个系统;
  • 工具和方法;
  • 从需求到最终产品的道路;
  • 指导原则;
  • 技术领导力;
  • 构成产品的元素之间的关系;
  • 对环境约束和限制的意识;
  • 基础;
  • 抽象的观点;
  • 把问题化整为零的过程;
  • 产品的骨架、支柱。

难怪找不到一个合适的定义!好在还可以分为名词和动词两大类。无论我们谈论的是建造一个物理建筑或一个软件系统,都适用。

作为名词

架构作为名词来解释时,概括起来都与结构有关:将产品分解为一系列组件、模块和交互。这需要考虑整个产品,包括处理(建筑物的)供电、供水、空调,或处理(软件的)安全、配置、错误处理等横切关注点的基础设施服务。

作为动词

架构作为动词来解释时,包括了理解你需要构建什么、设定愿景以便于进行构建和做出恰当的设计决策。所有这些都要以需求为基础,因为需求驱动架构。关键在于,架构是关于交流愿景以及引入技术领导力的,这样参与构建产品的每个人都能理解这个愿景,并为产品的成功做出积极贡献。

目录

  • 版权声明
  • 献词
  • 推荐序一:架构师真正要学会的事情
  • 推荐序二
  • 译者序2.0
  • 关于本书
  • 软件架构培训
  • Part Ⅰ 什么是软件架构
  • 第 1 章 什么是架构
  • 第 2 章 架构的种类
  • 第 3 章 软件架构是什么
  • 第 4 章 敏捷软件架构是什么
  • 第 5 章 架构对上设计
  • 第 6 章 软件架构重要吗
  • 第 7 章 问题
  • Part Ⅱ 软件架构的角色
  • 第 8 章 软件架构的角色
  • 第 9 章 软件架构师应该编码吗
  • 第 10 章 软件架构师应该是建造大师
  • 第 11 章 从开发者到架构师
  • 第 12 章 拓展T
  • 第 13 章 软技能
  • 第 14 章 软件架构不是接力运动
  • 第 15 章 软件架构要引入控制吗
  • 第 16 章 小心鸿沟
  • 第 17 章 未来的软件架构师在哪里
  • 第 18 章 每个人都是架构师,除非他们有其他身份
  • 第 19 章 软件架构咨询师
  • 第 20 章 问题
  • Part Ⅲ 设计软件
  • 第 21 章 架构驱动力
  • 第 22 章 质量属性(非功能需求)
  • 第 23 章 处理非功能需求
  • 第 24 章 约束
  • 第 25 章 原则
  • 第 26 章 技术不是实现细节
  • 第 27 章 更多分层等于更高复杂度
  • 第 28 章 协同设计是一把双刃剑
  • 第 29 章 软件架构是对话的平台
  • 第 30 章 SharePoint项目也需要软件架构
  • 第 31 章 问题
  • Part Ⅳ 可视化软件
  • 第 32 章 沟通障碍
  • 第 33 章 对草图的需要
  • 第 34 章 无效的草图
  • 第 35 章 C4:语境、容器、组件和类
  • 第 36 章 语境图
  • 第 37 章 容器图
  • 第 38 章 组件图
  • 第 39 章 是否包含技术选择
  • 第 40 章 你会那样编码吗
  • 第 41 章 软件架构和编码
  • 第 42 章 你不需要UML工具
  • 第 43 章 有效的草图
  • 第 44 章 C4的常见问题
  • 第 45 章 问题
  • Part Ⅴ 为软件生成文档
  • 第 46 章 代码不会讲述完整的故事
  • 第 47 章 软件文档即指南
  • 第 48 章 语境
  • 第 49 章 功能性概览
  • 第 50 章 质量属性
  • 第 51 章 约束
  • 第 52 章 原则
  • 第 53 章 软件架构
  • 第 54 章 外部接口
  • 第 55 章 代码
  • 第 56 章 数据
  • 第 57 章 基础设施架构
  • 第 58 章 部署
  • 第 59 章 运营和支持
  • 第 60 章 决策日志
  • 第 61 章 问题
  • Part Ⅵ 开发生命周期中的软件架构
  • 第 62 章 敏捷和架构的冲突——神话还是现实
  • 第 63 章 量化风险
  • 第 64 章 风险风暴
  • 第 65 章 恰如其分的预先设计
  • 第 66 章 初识软件架构
  • 第 67 章 问题
  • Part Ⅶ 附录金融风险系统
  • 第 68 章 金融风险系统
  • Part Ⅷ 附录:“技术部落”的软件指南