系统架构设计整洁之道.pdf
系统架构设计整洁之道
1
目 录
一、架构设计的目标 3
二、软件系统的价值 3
三、编程范式 4
四、设计原则 5
五、组件 7
六、封装方式 1 0
七、软件架构 1 0
2
一、架构设计的目标
1. 用最少的人力成本满足构建和维护该系统的需求
2. 衡量指标
a. 工程师团队规模
b. 代码总行数
c. 代码变更行数
二、软件系统的价值
1. 行为价值
3
a. 按需求文档编写代码
b. 可用性
i. 功能性 bug
ii. 性能
iii. 稳定性
c. 紧急,但是并不总是重要
2. 架构价值
a. 当需求变更时,所需的软件变更必须简单方便
b. 变更实施的难度应该和变更的范畴 (scope )成等比, 而与变更的具体形状 (shape )
无关
c. 不紧急
三、编程范式
1. 目的:设置限制,告诉我们不可以做什么
2. 现有范式
a. 结构化编程
i. 目的:对控制权的直接转移进行了限制和规范
ii. 内容:可以用顺序结构、 分支结构、 循环结构这三种结构构造出任何结构;
限制 goto 的使用。
iii. 意义:用代码把一些已证明的结构串联起来,就可以推导出整个程序的正
确性。实际上没有办法证明每个程序段是正确的,只能证伪,如果所有的
基本单元都无法证伪,那么整个就是无法证伪的,那目前就是正确的。
4
iv. 延伸:物理学与数学的区别,物理学的基本公式都是没有办法证明的,只
能证伪,所以物理学是实验科学,没有一个公式是完全靠得住的,只是目
前靠得住。数学的基本公式都是可以证明的。
b. 面向对象编程
i. 目的:对程序控制权的间接转移进行了限制和规范
ii. 定义
A. 封装:只暴露部分函数,数据则完全不暴露
B. 继承
C. 多态:其实只是函数指针的一种应用,通过接口和实现,抽象类和
继承,替代了函数指针的使用
iii. 意义:函数指针,是跨越组件边界的方法,是组件独立部署的基础,依赖
反转的基础。依赖反转指的是让依赖与控制流向相反。
c. 函数式编程
i. 目的:对赋值进行了限制和规范
ii. 趋势: 如果有足够大的存储量和计算量, 应用