# 架构设计成熟度模型（ADMM）

```maturity
 - 架构设计成熟度模型
   - API 设计: 1
     - API 规范：一致化和标准化（如 OpenAPI）
     - 异常情况和错误处理
     - 向后兼容
   - 分层架构设计
     - 0.有一定的分包结构
     - 1.通过技术维度划分
     - 2.依据业务/领域划分包结构
     - 3.持续优化包结构（如通过引用-修改函数优化）
   - 模型设计
     - 适当的预先设计
     - 充血模型模型中包含行为
   - 领域设计
     - 模型能匹配真实世界
     - 统一业务语言和技术语言
   - 组件化设计
     - 包聚合设计
     - 稳定抽象原则
   - 文档化
     - 代码化的文档
     - 文档代码化
   - 构建小
     - 微架构作为支撑：微服务、微前端、APP 插件化等
     - 持续交付策略
   - 依赖耦合度
     - 封装三方 API
     - 无依赖环
   - 演进策略
     - 技术债管理策略
     - 依赖更新策略
     - 架构适应度函数
```

## API 设计

### REST API 设计

```
 - REST API 设计
   - 0.仅使用 HTTP 作为传输方式
   - 1.引入了资源的概念：每个资源有对应的标识符和表达
   - 2.不同的 HTTP 方法进行不同的操作，并使用 HTTP 状态码来表示不同的结果
   - 3.HATEOAS
```

- 统一接口
- 无状态
- 缓存
- 幂等设计
- 资源语义与命名
- 资源与表述

## 模型设计

## 分层设计

### 分层演进模型

```quadrant
 - 分层演进模型
     - 稳定区
       - ……
     - 不稳定区
       - ……
     - 暂时不管
       - ……
       - ……
     - 待提升
       - ……

config: {"left": "低频修改", "right": "高频修改", "bottom": "低引用", "top": "高引用"}
```

### 领域设计

- 统一语言
- 区分不同领域
- 提炼核心领域
- 显式概念建模
- 知识表达

## 组件化设计

### 衡量抽象化

《架构整洁之道》

假设 A 指标是对组件抽象化程度的一个衡量，它的值是组件中抽象类与接口所占的比例。那么：

- Nc：组件中类的数量。
- Na：组件中抽象类和接口的数量。
- A：抽象程度，A = Na / Nc。

A 指标的取值范围是从 0 到 1，值为 0 代表组件中没有任何抽象类，值为 1 就意味着组件中只有抽象类。

### 前端组件化设计

- 组织结构合理
- 页面组件化
- 模块划分
- 可维护的代码

## 耦合度

-

## 文档化
