SuperAPI AI 工具集

coupling-analysis

编程与开发

查看项目

更新于 10-16 05:39

技能介绍

用途

耦合分析技能面向软件架构工作,依据 Vlad Khononov《Balancing Coupling in Software Design》中的三维耦合模型(集成强度、距离、波动性)分析代码库中的模块耦合关系,帮助理解模块之间共享了什么、耦合在物理上位于何处,以及组件变更的频率。

其核心平衡公式为:

BALANCE = (STRENGTH XOR DISTANCE) OR NOT VOLATILITY

均衡的设计满足以下条件:紧耦合的组件彼此靠近(高强度 + 低距离 = 内聚);远距离组件之间为松耦合(低强度 + 高距离 = 松耦合);稳定组件(低波动性)可以容忍更强的耦合。

主要能力

  • 结构映射:清点模块(名称、位置、职责、声明依赖),构建有向依赖图(节点为模块,边为依赖,注意知识流向与依赖箭头方向相反),并依据封装层级(同方法、同类、同命名空间、同库、不同服务、不同系统/组织)计算距离;若模块由不同团队维护,距离估算上调一级(康威定律)。
  • 集成强度分析:将每条依赖划分为四个等级(从强到弱):侵入式耦合(Intrusive,如下游通过反射访问私有成员、服务直接读取另一服务的数据库、依赖内部文件/配置结构、猴子补丁);功能耦合(Functional,分为顺序、事务、对称三种程度,对称耦合即使代码上互不引用也可能存在);模型耦合(Model,上游将内部领域模型暴露为公共接口,涉及名称、类型、含义、算法、位置等静态共生性);契约耦合(Contract,上游暴露专用于集成的契约模型,是理想形态)。
  • 波动性评估:结合子域类型(核心子域高波动、支撑子域低波动、通用子域极低波动)、Git 历史分析(如近六个月文件提交频次与共同变更统计)、代码信号(大量 TODO/FIXME、多版本 API、易碎测试、业务规则注释)进行推断。
  • 平衡度评分:按简化刻度(0 低 / 1 高)为强度、距离、波动性打分,使用维护成本公式 MAINTENANCE_EFFORT = STRENGTH × DISTANCE × VOLATILITY,并给出诊断分类(如高强度+高距离+高波动=严重问题;高强度+低距离+高波动=良好内聚等)。
  • 分析报告:输出执行摘要、依赖图(带耦合类型标注)、按严重程度排列的问题清单、发现的正面模式,以及按优先级排列的建议。

使用方式

当用户要求“分析耦合”“评估架构”“检查依赖”,想了解模块或服务间的集成强度、识别问题耦合或架构坏味、判断某模块应被抽取还是合并、引用共生性或内聚等概念,或询问为何某模块的变更会意外级联时,可应用此技能。

分析流程分为六个阶段:上下文收集(范围、抽象层级、Git 历史可用性、业务上下文与子域分类)→ 结构映射(模块清点、依赖图、距离计算)→ 集成强度分析 → 波动性评估 → 平衡度评分 → 分析报告。技能还提供快速参考表(模式 → 集成强度 → 行动)和启发式问题(针对强度、距离、波动性、平衡各维度)。

适用场景

  • 评估既有代码库的架构健康状况
  • 检查模块或服务之间的依赖关系
  • 定位需要重构的紧耦合、远距离、高波动问题
  • 判断模块应抽取还是合并
  • 排查业务逻辑重复导致的联动变更

限制

  • 波动性最好用真实 Git 数据估计,仅靠静态分析不足
  • 对称功能耦合需要语义阅读代码,静态分析工具通常无法检测
  • 组织距离(不同团队)需要用户输入
  • 动态共生性(时序、值、身份)难以在无运行时观察的情况下检测
  • 分析只是起点,业务上下文始终用于修正结论

参考

相关概念出自 Vlad Khononov 所著《Balancing Coupling in Software Design》(Addison-Wesley)。

产品页面:https://www.skills.sh/marcioaltoe/skills/coupling-analysis