17 Boundaries: Drawing Lines

软件架构本质上是一门划分界限的艺术,我将这些界限称为边界。
这些边界将软件元素彼此分开,并限制一侧的元素知晓另一侧的内容。其中有些边界在项目初期-甚至在编写任何代码之前-就已划定;另一些则要晚的多才会确定。

早期划定边界的目的,是尽可能推迟决策,并防止这些决策污染核心业务逻辑。

要记住架构师的目标是最小化构建和维护目标系统所需的人力成本。那究竟是什么在消耗这种人力?是耦合-尤其是过早决策之间的耦合。

哪些决策属于过早决策?是那些与系统业务需求,即业务用例无关的决策。

这包括对框架、数据库、Web服务器、工具库、依赖注入等技术选型的决定。

优秀的系统架构,会让这类决策变得次要且可推迟,他不依赖这些决策,能够将这些决策拖到尽可能晚的时机再确定,且不会造成重大影响。

Conclusion

要在软件架构中划定边界,首先需将系统拆分为多个组件:其中一部分组件承载核心业务规则,另一部分则是包含必要功能、但与核心业务无直接关联的插件。随后,你需要对这些组件中的代码进行组织,让组件间的依赖箭头单向指向核心业务。
你应当能意识到,这正是依赖倒置原则(Dependency Inversion Principle)。

核心思想就是:软件架构的本质是画边界,通过边界隔离核心和细节,推迟非必要决策,最小化开发维护成本。

posted @ 2026-03-20 14:14  cyusouyiku  阅读(1)  评论(0)    收藏  举报