动机
软件开发的根本困难在于软件的本质复杂性。前面说到,复杂性主要体现在三个方面
- 多样性:需要理解的事物的种类和数量太多
- 耦合:事物往往不是孤立存在,而是相互耦合。要理解A,就要先理解B、C、D;修改了A,就要同时修改B、C、D。
- 变化:变化总是会主动或被动发生。变化造成的影响通过耦合的传导可以传播得很深很远很广,甚至动摇根基。
因此,架构的动机主要有:
- 减轻概念重量,防止认知过载:使得一个人在同一个时间段需要理解或处理的事物的数量足够少。
- 局部化影响:将每一个变化所造成的影响限制在一个尽可能小的范围内。
本章后面介绍的原则和策略,其立足点都是出于上面的这些动机。
先解耦,再分解。