阶段二:进阶篇 ⭐⭐ 进阶

第 4 章:AI 驱动的需求分析与架构设计

让 AI 成为你的架构顾问 — 从模糊想法到可执行的蓝图

🎯 本章学习目标

  1. 掌握用 AI 进行需求拆解:从一句话到完整规格说明书的流程
  2. 学会用 AI 进行技术选型:构建对比矩阵和决策分析
  3. 能够使用 Mermaid/PlantUML 配合 AI 生成架构图和设计文档
  4. 理解架构评审的 AI 辅助方法
  5. 掌握非功能需求的系统化分析方法(性能、安全、可用性)

4.1 需求分析的三板斧

🟢 功能需求(Functional)

系统必须做什么

  • 用户故事(User Story)
  • 用例描述(Use Case)
  • 界面原型与交互流程
示例:"系统允许管理员创建 SMB 共享目录,指定路径、共享名、访问用户列表"

🟡 非功能需求(Non-Functional)

系统必须做到什么程度

  • 性能指标(QPS、延迟、吞吐)
  • 安全要求(认证、加密、审计)
  • 可用性(SLA、恢复时间)
  • 可维护性(日志、监控、文档)
示例:"文件列表 API P99 延迟 < 200ms,支持 100 并发请求,认证令牌 24h 过期"

🔵 约束条件(Constraints)

什么是不可妥协的限制

  • 技术栈限制
  • 法规与合规要求
  • 资源限制(内存、CPU、预算)
  • 时间限制
示例:"目标设备为 ARM 单板(2GB RAM),基础系统基于 Debian 12,必须支持中文"

4.2 用 AI 进行技术选型

技术选型是架构设计中最关键的决策之一。AI 可以从多个维度帮你构建决策矩阵:

技术选型决策框架

评估维度权重候选 A候选 B候选 C
功能完整性30%9/107/108/10
学习曲线15%6/109/107/10
社区生态20%9/108/106/10
性能20%8/106/109/10
运维成本15%7/108/105/10
加权总分100%8.27.57.1

4.3 架构图生成技巧

使用 Mermaid 语法描述架构,AI 可以轻松生成和修改:

系统架构图示例

```mermaid
graph TB
    subgraph "前端层"
        A[Web 管理面板]
    end
    subgraph "API 网关层"
        B[Nginx 反向代理]
    end
    subgraph "应用层"
        C[FastAPI 后端]
        D[WebSocket 服务]
    end
    subgraph "服务层"
        E[存储管理服务]
        F[共享管理服务]
        G[用户管理服务]
    end
    subgraph "数据层"
        H[(SQLite)]
        I[Redis 缓存]
        J[文件系统]
    end
    subgraph "系统层"
        K[Samba 服务]
        L[NFS 服务]
        M[systemd]
    end
    A --> B --> C
    A --> B --> D
    C --> E & F & G
    E & F & G --> H & I
    E --> J
    F --> K & L
    G --> M
```

4.4 数据流设计

每个功能模块都应设计清晰的数据流。以"文件上传"为例:

客户端 API 网关
(认证+限流)
文件服务
(验证+存储)
磁盘写入
上传请求
+ Token
验证身份
检查配额
病毒扫描
写入元数据
落盘
返回状态

📋 本章提示词模板

模板 4.1:需求规格说明书生成器

📋
你是一位资深系统架构师。请基于以下初始需求,生成完整的功能规格说明书。

## 初始需求
[一句话或一段话描述]

## 规格说明书结构
### 1. 概述
- 项目背景与目标
- 目标用户画像
- 核心价值主张

### 2. 功能需求
对每个功能,描述:
- 用户故事(As a [角色], I want [功能], so that [价值])
- 验收标准(Given-When-Then 格式)
- 优先级(P0-必须 / P1-重要 / P2-可选)

### 3. 非功能需求
- 性能指标(具体数字,不写"快"而写"< 200ms")
- 安全要求
- 可用性与可靠性
- 可维护性要求

### 4. 边界与约束
- 技术约束
- 资源约束
- 兼容性要求
- 明确的 Out of Scope(本期不做)

### 5. 数据模型概要
- 核心实体
- 实体关系

### 6. 接口契约(初版)
- 主要 API 端点列表
- 请求/响应格式

模板 4.2:技术选型决策报告

📋
请为以下场景进行技术选型分析:

## 场景描述
[描述你的项目场景、规模、约束]

## 候选方案
- 方案 A:[名称]
- 方案 B:[名称]
- 方案 C:[名称]

## 评估维度(请对每个维度打分 1-10 并说明理由)
1. 功能匹配度
2. 性能表现
3. 学习曲线
4. 社区活跃度
5. 文档质量
6. 运维复杂度
7. 许可与合规
8. 长期演进前景

## 输出格式
1. 对比矩阵表格
2. 每个候选方案的 SWOT 分析
3. 加权评分和最终推荐
4. 备选方案(当首选不可行时的退路)
5. 迁移路径(如果需要从现有技术迁移)

模板 4.3:架构评审清单

📋
请对以下架构设计进行系统性评审:

## 架构描述
[粘贴架构图描述、模块说明、技术选型]

## 评审维度
### 安全性
- 攻击面分析
- 认证与授权机制是否充分
- 数据保护(传输中、存储中)
- 是否存在单点安全漏洞

### 可扩展性
- 水平扩展能力
- 瓶颈点识别
- 容量规划是否合理

### 可靠性
- 单点故障分析
- 故障恢复策略
- 数据备份与恢复

### 可维护性
- 模块耦合度
- 接口清晰度
- 部署与运维复杂度

### 性能
- 关键路径分析
- 缓存策略
- 数据库查询效率

请按风险等级输出问题清单,每个问题附改进建议。

🛠️ 实战演练:NAS 系统技术选型分析

场景:为 NAS 项目选择 Web 后端框架

输入:场景描述

目标:为自研 NAS 操作系统选择 Web 管理后端的 Python 框架。
约束:
- 运行在 ARM 设备(2-4GB RAM),需要轻量化
- 需要 WebSocket 支持(实时系统监控)
- 需要自动生成 API 文档
- 需要异步 IO(处理文件传输)
- 团队熟悉 Python

候选方案:
A. FastAPI
B. Flask + extensions
C. Django + DRF

AI 输出:SWOT 分析(以 FastAPI 为例)

Strengths(优势)Weaknesses(劣势)
✅ 原生异步支持,性能出色
✅ 自动 OpenAPI 文档生成
✅ Pydantic 类型验证,安全性高
✅ 轻量,ARM 兼容好
✅ 学习曲线平缓
❌ 生态不如 Django 成熟
❌ 没有内置 ORM
❌ 社区插件较少
❌ 大型项目组织方式不统一
Opportunities(机会)Threats(威胁)
🚀 与 ASGI 生态结合(uvicorn)
🚀 适合微服务拆分
🚀 Starlette 底层可复用
⚠️ 升级频繁,API 可能变动
⚠️ 团队成员可能不熟悉
⚠️ 不适合传统 SSR 页面

最终决策

选择 FastAPI,理由:异步原生支持满足实时监控需求;Pydantic 模型同时提供类型安全和自动文档;轻量化适配 ARM 设备的内存限制;与前端 Vue 3 分离架构完美契合。

⚠️ 常见坑点

🕳️ 坑 1:需求分析时忽略非功能需求

很多开发者只关注"做什么",忽略"做到什么程度"。结果系统功能齐全但性能差、不安全、难维护。每次需求分析都要用模板 4.1 中的非功能需求清单。

🕳️ 坑 2:技术选型陷入"炫技"

AI 可能推荐最流行/最前沿的技术,但不一定适合你的场景。始终用约束条件收窄 AI 的建议范围——明确你的资源限制和团队能力。

🕳️ 坑 3:架构图过早就位

不要在第一版需求时就敲定最终架构。先让 AI 生成 2-3 个备选架构,分别评审后再综合。利用 AI 的低成本探索多个架构方案。

📝 本章小结

  • 需求分析三板斧:功能需求(做什么)+ 非功能需求(做到什么程度)+ 约束条件(什么不可妥协)
  • 用 AI 构建加权评分矩阵进行客观的技术选型
  • Mermaid 语法 + AI 可以快速生成和迭代架构图
  • 架构评审应覆盖安全、可扩展、可靠、可维护、性能五个维度
  • 技术选型的最终决策权永远在手里——AI 提供分析,你做出判断

🤔 思考练习

  1. 选一个你熟悉的 App,用模板 4.1 为其写一份完整的需求规格说明书,然后对比官方文档,找出差异。
  2. 为同一个场景做两次技术选型:第一次不设约束条件,第二次加上"ARM/2GB RAM/2人团队"的约束。观察 AI 推荐的差异。
  3. 用 Mermaid 画你当前项目的架构图,然后用模板 4.3 让 AI 做一次架构评审。