1 /8 1
软件架构概述 1
1 什么是软件架构 ◎ 软件架构的概念很混乱
如果你问五个不同的人,可能会得到五种不同的答案
◎ 软件架构概念主要分为两大流派: 组成派:软件架构 = 组件 + 交互
决策派:软件架构 = 重要决策集
◎ 组成派和决策派的概念相辅相成
2 软件架构和子系统、框架之间的关系 ◎ 复杂性是层次化的
◎ 好的架构设计必须把变化点错落有致地封装到软件系统的不同部分(即关注点分离)
通过关注点分离,达到“系统中的一部分发生了变化,不会影响其他部分”的目标
◎ 软件单元的粒度: * 粒度最小的单元通常是“类”
* 几个类紧密协作形成“模块”
* 完成相对独立的功能的多个模块构成了“子系统”
* 多个子系统相互配合才能满足一个完整应用的需求,从而构成了软件“系统”
* 一个大型企业往往使用多套系统,多套系统通过互操作形成“集成系统”
◎ 软件单元的粒度是相对的
同一个软件单元,在不同场景下我们会以不同的粒度看待它
◎ 架构(Architecture)不等于框架(Framework)
框架只是一种特殊的软件,框架也有架构
◎ 可以通过架构框架化达到“架构重用”的目的,如很多人都在用 Spring 框架提供 的 控 制 反 转 和依 赖 注入 来 构建 自 己 的架构
3 软件架构的作用 ◎ 如果一个项 目的系统架构(包 括 理 论 基 础 )尚 未 确 定 ,就 不应该 进 行 此 系统的全 面 开 发
-- Barry Boehm,《 Engineering Context》 ◎ 一个缺 陷 充 斥 的系统,将 始 终 是一个缺 陷 充 斥 的系统
-- Timothy C
Lethbridge, 《 面 向 对象 软件工 程 》 ◎ 软件架构设计为什么这 么难
因 为它是跨 越 现 实 世 界 与 计算