AI编程05:需求澄清

从口头需求拆成边界、验收和风险点,理解如何使用AI帮助澄清和细化需求。

字数 803 阅读时长 ≈ 3 分钟 2026-7-17 2026-7-27
AI编程05:需求澄清

需求澄清是开发过程中最关键的一步。AI 可以帮助将模糊的口头需求拆解成清晰的边界、验收标准和风险点,减少后续的返工和误解。

需求澄清的重要性

模糊需求的问题

大多数需求最初都是模糊的:

口头需求

"我们需要一个用户登录功能。"

缺少的信息

  • 支持哪些登录方式?(手机号、邮箱、第三方)
  • 需要什么安全措施?(密码加密、验证码、锁定机制)
  • 登录成功后做什么?(返回 Token、跳转到首页)
  • 失败时如何处理?(错误提示、重试次数)
  • 与其他系统的交互?(单点登录、OAuth)

清晰需求的价值

阶段需求状态开发效率
模糊需求不完整、不确定低,频繁返工
部分澄清基本明确中,少量调整
完全澄清完整、可执行高,一次性通过

需求澄清的维度

六个核心维度

维度澄清内容示例问题
目标要达成什么结果”这个功能的业务目标是什么?“
范围包含哪些内容”需要支持哪些登录方式?“
边界不包含什么”是否需要支持单点登录?“
验收如何判断完成”登录成功的标准是什么?“
约束有什么限制”技术栈和时间有什么限制?“
风险有什么风险”可能遇到什么技术难题?“

需求澄清流程

口头需求

目标澄清

范围澄清

边界澄清

验收标准定义

约束条件确认

风险评估

清晰需求文档

如何使用 AI 澄清需求

目标澄清

用户:我们需要一个用户登录功能

AI:为了更好地理解这个需求,我想确认几个问题:

1. 业务目标:
   - 这个功能是为了解决什么问题?
   - 预期提升什么指标?(转化率、安全性、用户体验)

2. 用户场景:
   - 哪些用户会使用这个功能?(新用户、老用户)
   - 使用频率是多少?

3. 业务价值:
   - 这个功能对业务的重要性如何?
   - 不做这个功能会有什么影响?

范围澄清

用户:支持手机号和邮箱登录

AI:好的,我理解需要支持两种登录方式。让我确认一下范围:

1. 手机号登录:
   - 是否需要验证码?
   - 验证码有效期是多久?
   - 是否支持语音验证码?

2. 邮箱登录:
   - 是否需要密码?
   - 是否支持忘记密码功能?
   - 是否需要邮箱验证?

3. 通用功能:
   - 是否需要记住登录状态?
   - 是否需要登录日志?
   - 是否需要多端登录管理?

边界澄清

用户:不需要第三方登录

AI:好的,第三方登录不在范围内。让我确认一下其他边界:

1. 不在范围内的功能:
   - 第三方登录(微信、支付宝等)
   - 单点登录(SSO)
   - 社交登录

2. 后续可能扩展的功能:
   - 是否预留第三方登录接口?
   - 是否考虑未来集成 SSO?

验收标准定义

用户:登录成功后返回 Token

AI:好的,让我定义验收标准:

1. 功能验收:
   - 手机号登录:输入正确手机号和验证码,登录成功
   - 邮箱登录:输入正确邮箱和密码,登录成功
   - 错误处理:输入错误信息,显示正确的错误提示

2. 性能验收:
   - 登录响应时间:< 500ms
   - 并发登录:支持 1000 QPS

3. 安全验收:
   - 密码使用 BCrypt 加密存储
   - 登录失败 5 次后锁定账号 15 分钟
   - Token 使用 HTTPS 传输

4. 兼容性验收:
   - 支持 Chrome、Firefox、Safari、Edge
   - 支持 iOS 和 Android

约束条件确认

用户:使用 Java 和 Spring Boot

AI:好的,技术栈确定。让我确认其他约束:

1. 技术约束:
   - 语言:Java 21
   - 框架:Spring Boot 3.2
   - 数据库:MySQL
   - 缓存:Redis

2. 时间约束:
   - 开发周期:2 周
   - 测试周期:1 周

3. 资源约束:
   - 开发人员:1 人
   - 测试人员:1 人

4. 合规约束:
   - 符合 GDPR 数据隐私要求
   - 符合行业安全标准

风险评估

AI:根据需求,我识别出以下风险:

1. 技术风险:
   - 风险:短信验证码可能延迟或失败
   - 影响:用户无法登录
   - 缓解:使用多个短信服务商,添加重试机制

2. 安全风险:
   - 风险:暴力破解攻击
   - 影响:用户账号被盗
   - 缓解:添加登录锁定和限流

3. 性能风险:
   - 风险:大量用户同时登录导致系统崩溃
   - 影响:服务不可用
   - 缓解:添加缓存和限流

4. 业务风险:
   - 风险:用户忘记密码无法找回
   - 影响:用户流失
   - 缓解:提供多种找回密码方式

AI 辅助需求澄清的技巧

开放式提问

AI:为了更好地理解这个需求,我想了解:
1. 这个功能的背景是什么?
2. 用户使用这个功能的典型流程是什么?
3. 有没有参考的产品或设计?

封闭式提问

AI:让我确认几个具体问题:
1. 是否需要支持微信登录?(是/否)
2. 是否需要记住我功能?(是/否)
3. 登录失败后是否需要验证码?(是/否)

假设式提问

AI:根据我的理解,这个需求包括:
1. 手机号验证码登录
2. 邮箱密码登录
3. 登录失败锁定机制

我的理解对吗?有没有遗漏或错误?

示例驱动

AI:让我举几个例子,看看是否符合你的预期:

示例1:新用户登录
- 用户打开登录页面
- 输入手机号
- 获取验证码
- 输入验证码
- 登录成功,跳转到首页

示例2:老用户登录
- 用户打开登录页面
- 输入邮箱和密码
- 登录成功,保持登录状态

这些流程符合你的预期吗?

需求澄清的输出

需求文档模板

# 用户登录功能需求文档

## 1. 目标
- 业务目标:提升用户登录体验,保障账号安全
- 用户目标:快速、安全地登录系统

## 2. 范围
- 手机号验证码登录
- 邮箱密码登录
- 忘记密码功能
- 登录状态管理

## 3. 边界
- 不包含第三方登录
- 不包含单点登录
- 不包含社交登录

## 4. 验收标准
- 功能:登录成功率 > 99%
- 性能:响应时间 < 500ms
- 安全:密码加密存储,登录锁定机制
- 兼容:支持主流浏览器和移动端

## 5. 约束条件
- 技术栈:Java 21 + Spring Boot 3.2 + MySQL + Redis
- 时间:3 周
- 人员:开发 1 人,测试 1 人

## 6. 风险评估
- 短信验证码延迟:使用多个服务商
- 暴力破解:添加锁定和限流
- 性能问题:添加缓存

用户故事

作为 用户,
我想要 通过手机号验证码登录,
以便 快速访问系统。

验收标准:
- 输入正确手机号和验证码,登录成功
- 输入错误验证码,显示错误提示
- 验证码有效期为 5 分钟

用例图

登录用例:
1. 用户打开登录页面
2. 用户选择登录方式(手机号/邮箱)
3. 用户输入登录信息
4. 系统验证登录信息
5. 验证成功,生成 Token
6. 返回 Token 和用户信息
7. 验证失败,显示错误信息

需求澄清的常见问题

问题1:需求变更频繁

表现:需求不断变化,导致开发返工

解决方案

  • 在需求澄清阶段充分讨论
  • 建立变更控制流程
  • 记录需求变更历史

问题2:需求不完整

表现:缺少关键信息,开发过程中需要反复确认

解决方案

  • 使用结构化的需求澄清模板
  • 确保覆盖所有核心维度
  • 在开发前进行需求评审

问题3:需求理解不一致

表现:开发人员和产品人员对需求的理解不同

解决方案

  • 使用示例和用例明确需求
  • 定期进行需求确认
  • 建立需求文档版本管理

问题4:需求过于模糊

表现:需求描述不清晰,无法开始开发

解决方案

  • 使用 AI 辅助拆解需求
  • 逐步细化需求
  • 从简单到复杂

项目判断清单

  • 需求模糊不清 → 使用 AI 辅助拆解
  • 需求变更频繁 → 建立变更控制流程
  • 需求不完整 → 使用结构化模板
  • 理解不一致 → 使用示例和用例确认
  • 需要快速澄清 → 使用封闭式提问
  • 需要深入理解 → 使用开放式提问
  • 需要验证理解 → 使用假设式提问
  • 需要长期维护 → 建立需求文档管理