不讲分解技巧,分而治之就不大有用。无经验者对问题分解不当,反而会增加困难。— 戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz)

为了正确的进行架构分解,需要遵循一些分解原则:

  • 低耦合、高内聚在弱耦合处下手,切断联系。莱布尼兹指出:“ 分解的主要难点在于怎么分。分解策略之一是按容易求解的方式来分,之二是在弱耦合处下手,切断联系 ”。高内聚、低耦合也是软件设计的基本原则,软件设计中的很多设计原则其实都可以认为它的派生或具体化,如单一职责原则依赖倒置原则模块化封装原则,这些原则在架构分解中也是适用的。
  • 层次性先业务后技术,先逻辑后物理,从上到下,循序渐进,逐级进行分解展开:系统->子系统->模块->组件->类。
  • 正交原则:和物理学中的正交分解类似,架构分解出的架构元素应是相互独立的,在职责上没有重叠
  • 抽象原则:架构元素识别,在较大程度上是架构师抽象思维的结果,架构师应该具备在抽象概念层面进行架构构思和架构分解的能力。
  • 稳定性原则将稳定部分和易变部分分解为不同的架构元素,稳定部分不应依赖易变部分。根据稳定性原则,将通用部分和专用部分分解为不同的元素;将动态部分静态部分分解为不同的元素;将机制和策略分离为不同的元素;将应用和服务分离。
  • 复用性原则对知识的重用。重用类似系统已有的架构设计、设计经验、成熟的架构模式参考模型设计模式领域模型架构思想等,因为它们已经在不同的层次上分解识别出了许多架构元素,或者指出了一些分解方向,对我们的架构分解具有借鉴和指导作用。例如:IBM SOA 解决方案参考模型对 SOA 服务化具有重要的指导意义,我们可以参照它对系统进行初步的架构分解。

原文链接(文中内容更加详尽):developerWorks 中国