正交软件架构

正交软件架构

正交软件架构(Orthogonal Software Architecture)笔记

一、什么是正交软件架构

将系统划分为职责完全独立、互不依赖的模块(正交维度),
各模块通过统一控制总线 / 中介协作,
一个维度的变化不影响其他维度

核心理念:
“变与不变分离,变化之间互不影响”


二、主要特点

1. 正交性(核心)

  • 模块之间:
    • 无循环依赖
    • 不互相感知具体实现
  • 修改一个模块 → 不影响其他模块行为

2. 统一协作中介

  • 控制总线(Control Bus)
  • 事件总线(Event Bus)
  • 插件容器 / 微内核

┌────────────┐
│ 控制总线 │
└─────┬──────┘
┌────────┼────────┐
┌──▼──┐ ┌──▼──┐ ┌──▼──┐
│模块A│ │模块B│ │模块C│
└─────┘ └─────┘ └─────┘

3. 高复用 & 可组合

  • 模块可在多个系统复用
  • 新功能 = 新组合(非修改旧代码)

4. 易测试、易替换

  • 可单独单元测试
  • 可热插拔替换实现(如存储、算法)

三、优点 ✅

优点 说明
低耦合 模块独立演化
高内聚 单一职责清晰
易扩展 新增模块不改动旧系统
易维护 Bug 定位、替换成本低
高复用 通用模块跨项目使用

四、缺点 ❌

缺点 说明
设计成本高 需要提前识别正交维度
初期复杂 小项目显得过度设计
中介性能损耗 总线/事件机制带来开销
易误用 强依赖伪装成正交

五、适用场景 ✅

  • 大型复杂业务系统(ERP、金融核心、政务系统)
  • 插件化系统(IDE、规则引擎、工作流引擎)
  • 多渠道接入系统(Web / App / API / 第三方)
  • 需求频繁变更、长期演进的系统
  • 对测试性、替换性要求高的系统

六、不适用场景 ❌

  • 小型 CRUD 项目
  • 极致性能、低延迟系统
  • 团队缺乏架构设计经验

七、与其他架构对比

架构 核心思想 对比正交架构
分层架构 上层依赖下层 层间强依赖,不够正交
微内核 核心 + 插件 正交架构常借鉴其思想
微服务 进程级解耦 正交是逻辑级,微服务是部署级
模块化单体 模块拆分 若无真正解耦,仍非正交

八、设计要点(实践建议)

  1. 先识别变化维度
    • 业务规则
    • 技术实现
    • 外部系统
  2. 严禁模块间直接调用
  3. 通过接口 / 事件通信
  4. 保持模块可独立部署或可测试
  5. 定期重构,消除隐性依赖

九、一句话总结

正交软件架构的本质是:
用“完全解耦的可组合模块”,换取系统的长期演进能力。