17 Boundaries: Drawing Lines
软件架构本质上是一门划分界限的艺术,我将这些界限称为边界。
这些边界将软件元素彼此分开,并限制一侧的元素知晓另一侧的内容。其中有些边界在项目初期-甚至在编写任何代码之前-就已划定;另一些则要晚的多才会确定。
早期划定边界的目的,是尽可能推迟决策,并防止这些决策污染核心业务逻辑。
要记住架构师的目标是最小化构建和维护目标系统所需的人力成本。那究竟是什么在消耗这种人力?是耦合-尤其是过早决策之间的耦合。
哪些决策属于过早决策?是那些与系统业务需求,即业务用例无关的决策。
这包括对框架、数据库、Web服务器、工具库、依赖注入等技术选型的决定。
优秀的系统架构,会让这类决策变得次要且可推迟,他不依赖这些决策,能够将这些决策拖到尽可能晚的时机再确定,且不会造成重大影响。
Conclusion
要在软件架构中划定边界,首先需将系统拆分为多个组件:其中一部分组件承载核心业务规则,另一部分则是包含必要功能、但与核心业务无直接关联的插件。随后,你需要对这些组件中的代码进行组织,让组件间的依赖箭头单向指向核心业务。
你应当能意识到,这正是依赖倒置原则(Dependency Inversion Principle)。
核心思想就是:软件架构的本质是画边界,通过边界隔离核心和细节,推迟非必要决策,最小化开发维护成本。

浙公网安备 33010602011771号