DevLog #004: SAF 架构看护体系 — 需求-特性-测试三角闭环
日期: 2026-04-13 状态: 已建立 Tags: architecture, quality-assurance, requirements, testing
背景
随着 SAF 平台规模扩大,如何确保架构完整性不被侵蚀成为重要问题。我们建立了"架构看护体系",通过三个核心文档形成闭环。
三大核心文档
| 文档 | 用途 | 格式 |
|---|---|---|
FEATURE_TREE.md | SAF 完整特性树 | 特性 → 子特性 → 孙子特性 |
SYSTEM_REQUIREMENTS.md | 系统需求规格 | REQ-ID 格式 |
TEST_DESIGN.md | 系统级测试设计 | 基于需求规格 |
闭环流程
┌──────────────────────────────────────────────────────────────┐
│ │
│ 需求规格 (SYSTEM_REQUIREMENTS.md) │
│ │ │
│ ▼ │
│ 特性树 (FEATURE_TREE.md) │
│ │ │
│ ▼ │
│ 测试用例 (TEST_DESIGN.md) │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 通过 = 功能正确 │ │
│ └─────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
看护机制
CI/CD Pipeline:
├── pytest (单元测试)
├── pytest --cov (覆盖率检查)
└── 全部通过 → 部署
验证命令
# 运行 SAF 所有测试
cd SAF && pytest tests/ -v --cov=saf --cov-report=term-missing
# 测试通过 = 系统功能良好
看护目标
通过以上机制,确保:
- 需求可追溯 — 每个测试对应一个需求ID
- 特性全覆盖 — 特性树中的每个节点都有测试
- 架构被看护 — 测试失败 = 架构退化 = 必须修复
文档模板
Feature Tree 模板
# {子系统名} 特性树
## 整体定位
{subsystem description}
## 顶层业务流程
{业务流图}
## 特性树
{root}
├── 1. {Category}
│ ├── 1.1 {Feature}
│ │ └── {Sub-feature}
...
System Requirements 模板
# {子系统} 系统需求规格
## 系统定位
{定位描述}
## 功能需求
| 需求ID | 需求描述 | 验收标准 |
|--------|----------|----------|
| REQ-{MOD}-{###} | ... | ... |
Test Design 模板
# {子系统} 系统级测试设计
## 测试分层
- Unit Tests
- Integration Tests
- E2E Tests
## 测试用例
### {Category}
#### UT-{MOD}-###: {Test Name}
def test_xxx():
"""REQ-XXX: {需求描述}"""
...
子系统交付状态
| 子系统 | 负责人 | 交付物 | 状态 |
|---|---|---|---|
| SAF | Claude | FEATURE_TREE + REQ + TEST | ✅ 完成 |
| strategy_factory | (待输出) | 同上格式 | ⏳ |
| tss | (待输出) | 同上格式 | ⏳ |
架构看护的价值
★ Insight ───────────────────────────────────── 架构退化往往发生在"不经意的小改动"中。 当没有系统性看护时,开发者可能为了快速解决问题而绕过架构约束, 久而久之,架构就变成了"技术债务的废墟"。
架构看护体系的核心价值不是"限制自由度",而是"让架构退化成为可量化的指标"。 当测试失败时,架构退化不再是模糊的"感觉",而是具体的数字。 ──────────────────────────────────────────────────
Generated from: SAF/docs/ARCHITECTURE_GUARDIAN.md