系统架构设计整洁之道 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. 趋势: 如果有足够大的存储量和计算量, 应用