知识卡片

七种分解策略总览

结构图卡 · 1958.k.3

内容

把系统拆成模块或组件有七种常见策略:功能(把相关功能聚在一起,最直观,多数场景不冲突质量属性)、典型类型(识别领域中独立存在、很少主动关联别的类型的核心概念,如联系人、广告)、架构风格(组件即风格定义的元素,如管道-过滤器的过滤器和管道,与质量属性直接绑定)、质量属性驱动设计ADD(先定架构驱动元素,再用”质量属性→策略”匹配表选设计)、端口(每个端口配一个对应组件,适合按访问权限或服务级别切分)、正交抽象(把问题转换到另一个更成熟的领域,借用那里现成的抽象和算法)、智力拼图(手头已有若干可复用部件,设计就是把它们拼起来、缺的地方补新代码)。多数系统无论选哪种都可行,但选一个和质量属性要求对齐的策略会让工作省力得多。

结构图:

flowchart TD
    A[七种分解策略] --> B[功能:相关功能聚合]
    A --> C[典型类型:领域核心独立概念]
    A --> D[架构风格:风格定义的元素]
    A --> E[质量属性ADD:属性→策略匹配表]
    A --> F[端口:按端口配对应组件]
    A --> G[正交抽象:借用其他领域的成熟抽象]
    A --> H[智力拼图:拼装已有可复用部件]

参考来源

- 位置:《恰如其分的软件架构》第11章《封装和分割》11.3节《分解策略》11.3.1-11.3.8小节(源文件:_epub-src/OEBPS/text00108.html) - 结论依据:原文逐一介绍功能、典型类型、架构风格、质量属性驱动设计(ADD)、端口、正交抽象、智力拼图七种分解策略,并说明选择与质量属性要求对齐的策略能让工作更容易。 - 原始内容:分解策略总结在表11.1中……有一种模式正在浮出水面。其中,一些方法选择了一个架构元素作为主关切:质量属性、功能、架构风格及端口……选择问题域的正交抽象可能是最好的;而另一些时候,人们很想重用现有的COTS组件。