<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>技术债务 on 文艺技术笔记</title>
        <link>https://wenyiblog.top/tags/%E6%8A%80%E6%9C%AF%E5%80%BA%E5%8A%A1/</link>
        <description>Recent content in 技术债务 on 文艺技术笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>文艺技术笔记 | 软件工程师文艺</copyright>
        <lastBuildDate>Fri, 10 Jul 2026 14:00:00 +0800</lastBuildDate><atom:link href="https://wenyiblog.top/tags/%E6%8A%80%E6%9C%AF%E5%80%BA%E5%8A%A1/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>企业架构中的&#34;技术债务量化&#34;：用架构 Fitness Function 给遗留系统打分</title>
        <link>https://wenyiblog.top/2026/07/tech-debt-fitness-function/</link>
        <pubDate>Fri, 10 Jul 2026 14:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/07/tech-debt-fitness-function/</guid>
        <description>&lt;h2 id=&#34;为什么技术债务总是一笔糊涂账&#34;&gt;&lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e6%8a%80%e6%9c%af%e5%80%ba%e5%8a%a1%e6%80%bb%e6%98%af%e4%b8%80%e7%ac%94%e7%b3%8a%e6%b6%82%e8%b4%a6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;为什么&amp;quot;技术债务&amp;quot;总是一笔糊涂账
&lt;/h2&gt;&lt;p&gt;几乎每一家拥有十年以上历史的企业，都面临同一个困境：系统越来越臃肿，但没人能准确说出&amp;quot;到底欠了多少债&amp;quot;。&lt;/p&gt;
&lt;p&gt;技术债务不像金融债务那样有清晰的本金和利率。它隐藏在耦合过紧的模块里、藏在没有文档的接口背后、潜伏于早已停止维护的依赖库中。架构评审会上，各方都在抱怨&amp;quot;系统太烂&amp;quot;，但当下一个季度的预算摆在桌面上时，&amp;ldquo;还债&amp;quot;的需求总是被&amp;quot;新业务&amp;quot;挤掉。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有句话说：你无法管理的，正是你无法度量的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;问题的根源不在于企业不重视技术债务，而在于缺乏一套&lt;strong&gt;可量化、可追踪、可纳入治理流程&lt;/strong&gt;的度量体系。传统的架构评审依赖专家经验打分，主观性强、覆盖面窄、难以持续执行。而纯粹靠自动化扫描工具产出的&amp;quot;代码质量报告&amp;rdquo;，又往往脱离业务语境，无法回答&amp;quot;这笔债务到底值不值得还&amp;quot;这个关键问题。&lt;/p&gt;
&lt;p&gt;本文试图提供一条中间路径：将 TOGAF（The Open Group Architecture Framework）的架构治理框架与演进式架构（Evolutionary Architecture）中的 &lt;strong&gt;Fitness Function&lt;/strong&gt; 概念融合，构建一套面向遗留系统的技术债务量化评分方案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;两个世界的交汇togaf-治理与-fitness-function&#34;&gt;&lt;a href=&#34;#%e4%b8%a4%e4%b8%aa%e4%b8%96%e7%95%8c%e7%9a%84%e4%ba%a4%e6%b1%87togaf-%e6%b2%bb%e7%90%86%e4%b8%8e-fitness-function&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;两个世界的交汇：TOGAF 治理与 Fitness Function
&lt;/h2&gt;&lt;h3 id=&#34;togaf-的架构治理结构化但缺乏自动化&#34;&gt;&lt;a href=&#34;#togaf-%e7%9a%84%e6%9e%b6%e6%9e%84%e6%b2%bb%e7%90%86%e7%bb%93%e6%9e%84%e5%8c%96%e4%bd%86%e7%bc%ba%e4%b9%8f%e8%87%aa%e5%8a%a8%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;TOGAF 的架构治理：结构化但缺乏自动化
&lt;/h3&gt;&lt;p&gt;TOGAF 的架构开发方法（ADM）提供了从愿景到迁移规划的完整生命周期。在 Phase H（架构变更管理）中，明确要求对已部署架构进行&lt;strong&gt;合规性审查&lt;/strong&gt;和&lt;strong&gt;持续监控&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;TOGAF 的架构治理框架通常包含以下要素：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;治理维度&lt;/th&gt;
					&lt;th&gt;核心关注点&lt;/th&gt;
					&lt;th&gt;典型产出&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;架构合规性&lt;/td&gt;
					&lt;td&gt;实现是否符合目标架构&lt;/td&gt;
					&lt;td&gt;合规评估矩阵&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构变更管理&lt;/td&gt;
					&lt;td&gt;变更是否经过评审和批准&lt;/td&gt;
					&lt;td&gt;变更请求与审批记录&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构度量&lt;/td&gt;
					&lt;td&gt;架构质量的可观测指标&lt;/td&gt;
					&lt;td&gt;KPI 仪表盘&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构成熟度&lt;/td&gt;
					&lt;td&gt;架构能力的演进水平&lt;/td&gt;
					&lt;td&gt;成熟度等级评估&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;问题在于，这些治理活动大多依赖&lt;strong&gt;周期性的人工评审&lt;/strong&gt;——每季度一次架构评审会、每年一次架构成熟度评估。在系统变更日益频繁的今天，这种节奏远远不够。&lt;/p&gt;
&lt;h3 id=&#34;fitness-function演进式架构的健康指标&#34;&gt;&lt;a href=&#34;#fitness-function%e6%bc%94%e8%bf%9b%e5%bc%8f%e6%9e%b6%e6%9e%84%e7%9a%84%e5%81%a5%e5%ba%b7%e6%8c%87%e6%a0%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Fitness Function：演进式架构的&amp;quot;健康指标&amp;quot;
&lt;/h3&gt;&lt;p&gt;Fitness Function 这个概念借自进化生物学。在演进式架构的理论体系中，Fitness Function 被定义为&lt;strong&gt;对架构某一特征的自动化评估机制&lt;/strong&gt;，用于确保系统在持续演进过程中不偏离预期的质量属性。&lt;/p&gt;
&lt;p&gt;一个典型的 Fitness Function 具备以下特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;可自动化执行&lt;/strong&gt;：不依赖人工判断，由工具链自动触发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;有明确的阈值&lt;/strong&gt;：通过/不通过的判定标准是预设的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续运行&lt;/strong&gt;：集成在 CI/CD 流水线中，每次变更都触发评估&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多维度覆盖&lt;/strong&gt;：从性能、安全、可维护性等多个视角评估&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;有句话说：好的架构不是一次性设计出来的，而是通过持续的约束和反馈&amp;quot;长&amp;quot;出来的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;融合的逻辑用-fitness-function-驱动架构治理&#34;&gt;&lt;a href=&#34;#%e8%9e%8d%e5%90%88%e7%9a%84%e9%80%bb%e8%be%91%e7%94%a8-fitness-function-%e9%a9%b1%e5%8a%a8%e6%9e%b6%e6%9e%84%e6%b2%bb%e7%90%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;融合的逻辑：用 Fitness Function 驱动架构治理
&lt;/h3&gt;&lt;p&gt;将两者结合的核心思路是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;用 TOGAF 的治理框架定义&amp;quot;该度量什么&amp;quot;&lt;/strong&gt;——从架构原则、目标架构、架构路线图出发，明确度量的维度和标准&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用 Fitness Function 定义&amp;quot;怎么度量&amp;quot;&lt;/strong&gt;——将治理要求转化为可自动执行的评估函数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用量化评分连接两者&lt;/strong&gt;——把离散的 Fitness Function 结果聚合为一个可比较、可追踪的技术债务评分&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;技术债务的四个维度与度量指标&#34;&gt;&lt;a href=&#34;#%e6%8a%80%e6%9c%af%e5%80%ba%e5%8a%a1%e7%9a%84%e5%9b%9b%e4%b8%aa%e7%bb%b4%e5%ba%a6%e4%b8%8e%e5%ba%a6%e9%87%8f%e6%8c%87%e6%a0%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;技术债务的四个维度与度量指标
&lt;/h2&gt;&lt;p&gt;在构建 Fitness Function 之前，需要先明确技术债务的分类。借鉴业界广泛使用的分类方法，结合企业架构的实际场景，我们将技术债务划分为四个维度：&lt;/p&gt;
&lt;h3 id=&#34;维度一代码与依赖债务&#34;&gt;&lt;a href=&#34;#%e7%bb%b4%e5%ba%a6%e4%b8%80%e4%bb%a3%e7%a0%81%e4%b8%8e%e4%be%9d%e8%b5%96%e5%80%ba%e5%8a%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;维度一：代码与依赖债务
&lt;/h3&gt;&lt;p&gt;这是最表层、也最容易自动化的债务类型。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关注点&lt;/strong&gt;：代码复杂度、过时依赖、重复代码、测试覆盖率不足&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;典型 Fitness Function&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标名称&lt;/th&gt;
					&lt;th&gt;计算方式&lt;/th&gt;
					&lt;th&gt;阈值示例&lt;/th&gt;
					&lt;th&gt;检测频率&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;循环依赖检测&lt;/td&gt;
					&lt;td&gt;模块间依赖图的环路数量&lt;/td&gt;
					&lt;td&gt;0（零容忍）&lt;/td&gt;
					&lt;td&gt;每次构建&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;依赖库版本老化度&lt;/td&gt;
					&lt;td&gt;当前版本与最新稳定版的主版本差之和&lt;/td&gt;
					&lt;td&gt;≤ 3&lt;/td&gt;
					&lt;td&gt;每周&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;圈复杂度超标率&lt;/td&gt;
					&lt;td&gt;圈复杂度 &amp;gt; 15 的方法占比&lt;/td&gt;
					&lt;td&gt;&amp;lt; 5%&lt;/td&gt;
					&lt;td&gt;每次构建&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;测试覆盖率&lt;/td&gt;
					&lt;td&gt;行覆盖率&lt;/td&gt;
					&lt;td&gt;≥ 70%&lt;/td&gt;
					&lt;td&gt;每次构建&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;废弃 API 调用数&lt;/td&gt;
					&lt;td&gt;调用已标记 @Deprecated 的接口数量&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;每次构建&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;维度二架构耦合债务&#34;&gt;&lt;a href=&#34;#%e7%bb%b4%e5%ba%a6%e4%ba%8c%e6%9e%b6%e6%9e%84%e8%80%a6%e5%90%88%e5%80%ba%e5%8a%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;维度二：架构耦合债务
&lt;/h3&gt;&lt;p&gt;这一层债务更隐蔽，对系统演进能力的阻碍也更大。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关注点&lt;/strong&gt;：模块边界侵蚀、接口契约违反、跨层调用、共享数据库&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;典型 Fitness Function&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标名称&lt;/th&gt;
					&lt;th&gt;计算方式&lt;/th&gt;
					&lt;th&gt;阈值示例&lt;/th&gt;
					&lt;th&gt;检测频率&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;跨域调用比例&lt;/td&gt;
					&lt;td&gt;跨限界上下文直接调用的接口占比&lt;/td&gt;
					&lt;td&gt;&amp;lt; 10%&lt;/td&gt;
					&lt;td&gt;每日&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;接口契约违规数&lt;/td&gt;
					&lt;td&gt;实际请求/响应与 OpenAPI 定义的偏差&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;每次部署&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;共享数据库表数&lt;/td&gt;
					&lt;td&gt;被多个服务直接读写的数据表数量&lt;/td&gt;
					&lt;td&gt;0（目标值）&lt;/td&gt;
					&lt;td&gt;每周&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;扇出异常度&lt;/td&gt;
					&lt;td&gt;单个服务调用下游服务数量的 P95&lt;/td&gt;
					&lt;td&gt;≤ 8&lt;/td&gt;
					&lt;td&gt;每日&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;维度三基础设施与运维债务&#34;&gt;&lt;a href=&#34;#%e7%bb%b4%e5%ba%a6%e4%b8%89%e5%9f%ba%e7%a1%80%e8%ae%be%e6%96%bd%e4%b8%8e%e8%bf%90%e7%bb%b4%e5%80%ba%e5%8a%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;维度三：基础设施与运维债务
&lt;/h3&gt;&lt;p&gt;很多技术债务并不在代码里，而在基础设施的配置和运维方式中。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关注点&lt;/strong&gt;：手工部署、缺乏监控、配置漂移、容灾缺失&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;典型 Fitness Function&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标名称&lt;/th&gt;
					&lt;th&gt;计算方式&lt;/th&gt;
					&lt;th&gt;阈值示例&lt;/th&gt;
					&lt;th&gt;检测频率&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;基础设施即代码覆盖率&lt;/td&gt;
					&lt;td&gt;IaC 管理的资源 / 总资源数&lt;/td&gt;
					&lt;td&gt;≥ 90%&lt;/td&gt;
					&lt;td&gt;每日&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;监控盲区比例&lt;/td&gt;
					&lt;td&gt;无告警覆盖的核心服务占比&lt;/td&gt;
					&lt;td&gt;&amp;lt; 5%&lt;/td&gt;
					&lt;td&gt;每周&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;配置漂移指数&lt;/td&gt;
					&lt;td&gt;生产环境与声明式配置的差异项数&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;每小时&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;灾备演练间隔&lt;/td&gt;
					&lt;td&gt;距上次灾备演练的天数&lt;/td&gt;
					&lt;td&gt;≤ 90 天&lt;/td&gt;
					&lt;td&gt;每月&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;维度四文档与知识债务&#34;&gt;&lt;a href=&#34;#%e7%bb%b4%e5%ba%a6%e5%9b%9b%e6%96%87%e6%a1%a3%e4%b8%8e%e7%9f%a5%e8%af%86%e5%80%ba%e5%8a%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;维度四：文档与知识债务
&lt;/h3&gt;&lt;p&gt;这是最容易被忽视、却在关键时刻&amp;quot;要命&amp;quot;的债务类型。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关注点&lt;/strong&gt;：架构决策缺失、接口文档过期、人员知识孤岛&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;典型 Fitness Function&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标名称&lt;/th&gt;
					&lt;th&gt;计算方式&lt;/th&gt;
					&lt;th&gt;阈值示例&lt;/th&gt;
					&lt;th&gt;检测频率&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;ADR 覆盖率&lt;/td&gt;
					&lt;td&gt;重大架构变更有对应 ADR 的比例&lt;/td&gt;
					&lt;td&gt;≥ 80%&lt;/td&gt;
					&lt;td&gt;每月&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;文档新鲜度&lt;/td&gt;
					&lt;td&gt;架构文档最后更新距今的平均天数&lt;/td&gt;
					&lt;td&gt;≤ 60 天&lt;/td&gt;
					&lt;td&gt;每月&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Bus Factor 风险&lt;/td&gt;
					&lt;td&gt;关键模块仅一人掌握的比例&lt;/td&gt;
					&lt;td&gt;&amp;lt; 20%&lt;/td&gt;
					&lt;td&gt;每季度&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;从指标到评分构建技术债务综合评分模型&#34;&gt;&lt;a href=&#34;#%e4%bb%8e%e6%8c%87%e6%a0%87%e5%88%b0%e8%af%84%e5%88%86%e6%9e%84%e5%bb%ba%e6%8a%80%e6%9c%af%e5%80%ba%e5%8a%a1%e7%bb%bc%e5%90%88%e8%af%84%e5%88%86%e6%a8%a1%e5%9e%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;从指标到评分：构建技术债务综合评分模型
&lt;/h2&gt;&lt;p&gt;单个 Fitness Function 只能告诉我们&amp;quot;某个维度是否达标&amp;quot;。要形成对遗留系统的整体判断，需要一套&lt;strong&gt;评分聚合机制&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;步骤一指标标准化&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4%e4%b8%80%e6%8c%87%e6%a0%87%e6%a0%87%e5%87%86%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤一：指标标准化
&lt;/h3&gt;&lt;p&gt;不同指标的量纲不同——有的是百分比，有的是绝对数量，有的是时间间隔。首先将它们统一归一化到 0-100 的分值区间。&lt;/p&gt;
&lt;p&gt;标准化公式的一般形式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;得分 = max(0, 100 - (实际值 - 目标值) / (最差可接受值 - 目标值) × 100)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;当实际值优于目标值时，得分为 100。当实际值达到最差可接受阈值时，得分为 0。超出最差阈值的仍记 0 分，但触发告警。&lt;/p&gt;
&lt;h3 id=&#34;步骤二维度权重分配&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4%e4%ba%8c%e7%bb%b4%e5%ba%a6%e6%9d%83%e9%87%8d%e5%88%86%e9%85%8d&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤二：维度权重分配
&lt;/h3&gt;&lt;p&gt;不同企业、不同业务阶段的权重应有所差异。以下是一个典型的权重参考：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;建议权重&lt;/th&gt;
					&lt;th&gt;适用场景说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;代码与依赖债务&lt;/td&gt;
					&lt;td&gt;20%&lt;/td&gt;
					&lt;td&gt;基础层，易于改善&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构耦合债务&lt;/td&gt;
					&lt;td&gt;35%&lt;/td&gt;
					&lt;td&gt;对演进能力影响最大&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;基础设施与运维债务&lt;/td&gt;
					&lt;td&gt;25%&lt;/td&gt;
					&lt;td&gt;直接影响稳定性和恢复速度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;文档与知识债务&lt;/td&gt;
					&lt;td&gt;20%&lt;/td&gt;
					&lt;td&gt;影响团队效率和人员风险&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;权重的设定本身就是一个架构治理决策，应在架构评审委员会中讨论确定，并随业务阶段动态调整。&lt;/p&gt;
&lt;h3 id=&#34;步骤三系统级聚合与分级&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4%e4%b8%89%e7%b3%bb%e7%bb%9f%e7%ba%a7%e8%81%9a%e5%90%88%e4%b8%8e%e5%88%86%e7%ba%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤三：系统级聚合与分级
&lt;/h3&gt;&lt;p&gt;将各维度加权求和，得到系统的综合技术债务评分（Tech Debt Score, TDS），范围 0-100。分数越高，代表债务越轻、架构越健康。&lt;/p&gt;
&lt;p&gt;根据评分划分等级：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;等级&lt;/th&gt;
					&lt;th&gt;分数区间&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
					&lt;th&gt;治理动作建议&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;A&lt;/td&gt;
					&lt;td&gt;85-100&lt;/td&gt;
					&lt;td&gt;架构健康&lt;/td&gt;
					&lt;td&gt;维持现状，预防性监控&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;B&lt;/td&gt;
					&lt;td&gt;70-84&lt;/td&gt;
					&lt;td&gt;轻度债务&lt;/td&gt;
					&lt;td&gt;纳入迭代计划逐步改善&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;C&lt;/td&gt;
					&lt;td&gt;50-69&lt;/td&gt;
					&lt;td&gt;中度债务&lt;/td&gt;
					&lt;td&gt;设立专项还债预算&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;D&lt;/td&gt;
					&lt;td&gt;30-49&lt;/td&gt;
					&lt;td&gt;重度债务&lt;/td&gt;
					&lt;td&gt;架构重构立项&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;E&lt;/td&gt;
					&lt;td&gt;0-29&lt;/td&gt;
					&lt;td&gt;危机状态&lt;/td&gt;
					&lt;td&gt;考虑系统替换&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;步骤四趋势追踪&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4%e5%9b%9b%e8%b6%8b%e5%8a%bf%e8%bf%bd%e8%b8%aa&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤四：趋势追踪
&lt;/h3&gt;&lt;p&gt;单次评分的意义有限，真正的价值在于&lt;strong&gt;趋势&lt;/strong&gt;。建议以双周或月度为周期绘制 TDS 趋势图，关注以下信号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;持续下降&lt;/strong&gt;：说明新引入的债务超过了偿还速度，需要干预&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平台期&lt;/strong&gt;：改善措施停滞，需要检查执行力度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;波动剧烈&lt;/strong&gt;：可能存在&amp;quot;突击还债后放松&amp;quot;的周期性问题&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;落地实施将-fitness-function-嵌入治理流程&#34;&gt;&lt;a href=&#34;#%e8%90%bd%e5%9c%b0%e5%ae%9e%e6%96%bd%e5%b0%86-fitness-function-%e5%b5%8c%e5%85%a5%e6%b2%bb%e7%90%86%e6%b5%81%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;落地实施：将 Fitness Function 嵌入治理流程
&lt;/h2&gt;&lt;h3 id=&#34;与-togaf-adm-的对齐&#34;&gt;&lt;a href=&#34;#%e4%b8%8e-togaf-adm-%e7%9a%84%e5%af%b9%e9%bd%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;与 TOGAF ADM 的对齐
&lt;/h3&gt;&lt;p&gt;将 Fitness Function 集成到 TOGAF 的架构开发方法中，可以在以下阶段发挥作用：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phase E（机会与解决方案）&lt;/strong&gt;：利用 TDS 评分识别最需要改造的遗留系统，作为迁移规划的输入依据。不再依赖&amp;quot;谁嗓门大谁优先&amp;quot;的资源争夺模式，而是用数据说话。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phase G（实施治理）&lt;/strong&gt;：在开发实施阶段，Fitness Function 作为持续集成流水线的一部分自动运行。每次代码提交、每次部署，都触发相关评估。这弥补了传统架构合规性审查&amp;quot;事后追溯&amp;quot;的不足。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phase H（架构变更管理）&lt;/strong&gt;：TDS 趋势作为架构变更管理的核心输入指标。当某个系统的评分持续走低，自动触发架构评审流程。&lt;/p&gt;
&lt;h3 id=&#34;工具链选型建议&#34;&gt;&lt;a href=&#34;#%e5%b7%a5%e5%85%b7%e9%93%be%e9%80%89%e5%9e%8b%e5%bb%ba%e8%ae%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;工具链选型建议
&lt;/h3&gt;&lt;p&gt;构建 Fitness Function 工具链不需要从零开始，很多开源工具可以组合使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代码与依赖分析&lt;/strong&gt;：SonarQube、Dependabot、ArchUnit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构耦合检测&lt;/strong&gt;：ArchUnit、Structure101、自研依赖图分析工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基础设施合规&lt;/strong&gt;：InSpec、OPA（Open Policy Agent）、Terrascan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文档与知识&lt;/strong&gt;：ADR 管理工具（adr-tools）、文档过期告警脚本、代码贡献者分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键不在于工具本身，而在于&lt;strong&gt;将工具的输出聚合到统一的评分平台&lt;/strong&gt;。可以是一个简单的仪表盘，也可以是集成到企业架构管理平台（如 Mega、LeanIX 或自研系统）的模块。&lt;/p&gt;
&lt;h3 id=&#34;实施路径从小处开始&#34;&gt;&lt;a href=&#34;#%e5%ae%9e%e6%96%bd%e8%b7%af%e5%be%84%e4%bb%8e%e5%b0%8f%e5%a4%84%e5%bc%80%e5%a7%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;实施路径：从小处开始
&lt;/h3&gt;&lt;p&gt;不要试图一次性覆盖所有维度。建议的推进节奏：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;第 1-2 个月&lt;/strong&gt;：选择 1-2 个最痛的系统，仅实现&amp;quot;代码与依赖债务&amp;quot;维度的 Fitness Function，跑通自动化采集和评分流程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第 3-4 个月&lt;/strong&gt;：扩展到&amp;quot;架构耦合债务&amp;quot;维度，引入 ArchUnit 等工具定义架构规则&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第 5-6 个月&lt;/strong&gt;：覆盖基础设施和文档维度，完善评分模型，开始在全组织范围内推广&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续迭代&lt;/strong&gt;：根据实践反馈调整指标、阈值和权重&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;治理中的常见陷阱与应对&#34;&gt;&lt;a href=&#34;#%e6%b2%bb%e7%90%86%e4%b8%ad%e7%9a%84%e5%b8%b8%e8%a7%81%e9%99%b7%e9%98%b1%e4%b8%8e%e5%ba%94%e5%af%b9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;治理中的常见陷阱与应对
&lt;/h2&gt;&lt;h3 id=&#34;陷阱一指标博弈&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e4%b8%80%e6%8c%87%e6%a0%87%e5%8d%9a%e5%bc%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱一：指标博弈
&lt;/h3&gt;&lt;p&gt;当评分与绩效考核挂钩时，团队可能会&amp;quot;优化指标&amp;quot;而非&amp;quot;改善架构&amp;quot;——比如为了提升测试覆盖率而编写大量无意义的测试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应对&lt;/strong&gt;：设置&amp;quot;对抗性指标&amp;quot;。例如，在追踪测试覆盖率的同时，追踪变异测试（Mutation Testing）得分，确保测试真正在检测行为而非仅仅覆盖代码行。&lt;/p&gt;
&lt;h3 id=&#34;陷阱二阈值僵化&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e4%ba%8c%e9%98%88%e5%80%bc%e5%83%b5%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱二：阈值僵化
&lt;/h3&gt;&lt;p&gt;随着技术栈演进，半年前设定的阈值可能已经不合时宜。一个曾经合理的&amp;quot;依赖版本老化度 ≤ 3&amp;quot;在新框架发布后可能过于宽松。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应对&lt;/strong&gt;：建立阈值的定期回顾机制，将其纳入架构评审委员会的固定议程。Fitness Function 的参数本身也需要&amp;quot;治理&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;陷阱三忽视业务语境&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e4%b8%89%e5%bf%bd%e8%a7%86%e4%b8%9a%e5%8a%a1%e8%af%ad%e5%a2%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱三：忽视业务语境
&lt;/h3&gt;&lt;p&gt;一个面向内部员工的报表系统，和一个日活千万的面向消费者系统，对架构健康度的要求不应相同。用同一套标准评估所有系统，会导致资源错配。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应对&lt;/strong&gt;：根据系统的业务重要性分级（Business Criticality Tier），为不同级别设定差异化的 Fitness Function 阈值和权重。核心系统的架构耦合债务权重可以提高到 45%，而辅助系统可以降低到 25%。&lt;/p&gt;
&lt;h3 id=&#34;陷阱四评分沦为报告&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e5%9b%9b%e8%af%84%e5%88%86%e6%b2%a6%e4%b8%ba%e6%8a%a5%e5%91%8a&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱四：评分沦为报告
&lt;/h3&gt;&lt;p&gt;如果 TDS 评分只出现在季度报告中，从未影响过实际的技术决策，那么整套体系就只是一个&amp;quot;昂贵的摆设&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应对&lt;/strong&gt;：建立&lt;strong&gt;硬性关联规则&lt;/strong&gt;。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TDS 低于 C 级的系统，新功能开发必须包含 20% 的还债工作量&lt;/li&gt;
&lt;li&gt;TDS 持续两个季度下降的系统，自动触发架构重构评审&lt;/li&gt;
&lt;li&gt;TDS 低于 D 级的系统，限制新增功能范围，仅允许修复类需求&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一个实际的评分示例&#34;&gt;&lt;a href=&#34;#%e4%b8%80%e4%b8%aa%e5%ae%9e%e9%99%85%e7%9a%84%e8%af%84%e5%88%86%e7%a4%ba%e4%be%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;一个实际的评分示例
&lt;/h2&gt;&lt;p&gt;为了更直观地展示这套方案的效果，以下是一个假设的遗留系统评分案例。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;系统背景&lt;/strong&gt;：某企业的订单管理系统，运行 8 年，经历了多次业务变更，当前由三个团队共同维护。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;各维度评分&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;关键发现&lt;/th&gt;
					&lt;th&gt;得分&lt;/th&gt;
					&lt;th&gt;权重&lt;/th&gt;
					&lt;th&gt;加权得分&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;代码与依赖&lt;/td&gt;
					&lt;td&gt;3 个核心依赖已停止维护，圈复杂度超标方法占 12%&lt;/td&gt;
					&lt;td&gt;45&lt;/td&gt;
					&lt;td&gt;20%&lt;/td&gt;
					&lt;td&gt;9.0&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构耦合&lt;/td&gt;
					&lt;td&gt;订单模块与库存模块共享 17 张数据库表，跨域调用占 35%&lt;/td&gt;
					&lt;td&gt;28&lt;/td&gt;
					&lt;td&gt;35%&lt;/td&gt;
					&lt;td&gt;9.8&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;基础设施&lt;/td&gt;
					&lt;td&gt;70% 资源由 IaC 管理，核心链路有完整监控&lt;/td&gt;
					&lt;td&gt;65&lt;/td&gt;
					&lt;td&gt;25%&lt;/td&gt;
					&lt;td&gt;16.25&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;文档与知识&lt;/td&gt;
					&lt;td&gt;最近一次 ADR 是 14 个月前，核心模块仅 1 人掌握&lt;/td&gt;
					&lt;td&gt;35&lt;/td&gt;
					&lt;td&gt;20%&lt;/td&gt;
					&lt;td&gt;7.0&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;综合评分：42.05（D 级）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;治理建议&lt;/strong&gt;：该系统已进入&amp;quot;重度债务&amp;quot;区间。建议立项架构重构，优先拆分订单与库存的共享数据库，同时将基础设施 IaC 覆盖率提升到 90% 以上。在重构完成前，限制新功能的范围，每个迭代至少投入 30% 的工程量用于还债。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;技术债务量化与架构演进的长期关系&#34;&gt;&lt;a href=&#34;#%e6%8a%80%e6%9c%af%e5%80%ba%e5%8a%a1%e9%87%8f%e5%8c%96%e4%b8%8e%e6%9e%b6%e6%9e%84%e6%bc%94%e8%bf%9b%e7%9a%84%e9%95%bf%e6%9c%9f%e5%85%b3%e7%b3%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;技术债务量化与架构演进的长期关系
&lt;/h2&gt;&lt;p&gt;技术债务的量化不是一个孤立活动，它应该成为企业架构演进能力的底层基础设施。&lt;/p&gt;
&lt;p&gt;当 Fitness Function 的评分数据积累到一定量级，就可以支撑更高层次的决策。比如：哪些技术栈的债务增长速度最快？哪些架构模式在长期运营中表现出更好的可维护性？团队的工程实践成熟度是否与系统健康度正相关？&lt;/p&gt;
&lt;p&gt;这些洞察反过来又能指导架构原则的修订、技术选型的决策、以及组织能力建设的优先级。形成从度量到治理、从治理到演进的闭环。&lt;/p&gt;
&lt;p&gt;架构治理的本质不是&amp;quot;控制&amp;quot;，而是建立一套让系统持续保持健康状态的反馈机制。Fitness Function 是这套机制的执行层，TOGAF 框架是决策层，而技术债务评分则是连接两者的共同语言。&lt;/p&gt;
&lt;p&gt;当技术债务不再是一个模糊的形容词，而是一个可以追踪、可以比较、可以设定改进目标的数字时，架构治理才真正从&amp;quot;开会讨论&amp;quot;走向了&amp;quot;数据驱动&amp;quot;。遗留系统的改造优先级不再取决于谁的声音更大，而是取决于数据告诉我们的事实。这才是企业架构治理应有的样子。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
