在AI编程模式日益普及的当下,需求分析与描述的方式发生了根本性变革。传统编程中,需求描述可保留一定模糊性,依赖人与人之间的沟通追问完善细节;而AI编程的核心痛点的是,AI无法像人类一样主动追问模糊需求,只能严格按照给定的指令执行。因此,如何将模糊的业务需求转化为精确、完备的规格说明,成为AI编程时代需求分析与描述的核心课题。本文将从传统模式与AI模式的差异入手,明确需求与规格的核心区别,提供AI可读的规格检查标准,并结合具体案例拆解从需求到规格的细化过程,最终梳理出完整的需求到设计链路,为AI编程中的需求处理提供清晰指引。
1 传统模式的需求描述与AI模式的需求描述
需求描述是连接业务需求与技术实现的关键环节,传统编程与AI编程在这一环节的流程、特点及产出物存在显著差异,具体对比如下:
|----|------------------------------------|-------------------------------------------------------------------------------------|
| | 传统模式 | AI模式 |
| 输入 | 用户说"我想要一个购物车" | 用户说"我想要一个购物车" |
| 过程 | 产品经理写用户故事:作为用户,我想把商品加入购物车 以便后续统一结算 | 产品经理写需求 + 开发人员转化为需求规格:购物车规格: - 添加商品:同商品合并数量 - 数量上限:999 - 库存不足时提示并禁止添加 - 购物车最多50个商品" |
| 特点 | 允许模糊,人类可追问 | 必须精确,AI追问能力弱 |
| 产出 | 用户故事、需求文档 | 需求文档 + 规则规格(草稿) |
从上述对比中,我们能清晰看到两者的关键转变:需求的初始输入都是模糊的自然语言,这是因为自然语言更适合人类之间的沟通,便于产品经理、业务方与开发人员达成初步共识。但进入AI编程环节后,开发人员的核心工作发生了本质变化------需要在进入设计阶段前,将模糊的需求转化为精确、无歧义的规格说明,这份规格将作为AI生成代码的直接依据。简单来说,开发人员在AI编程中扮演着"翻译官"的角色,核心任务就是把"业务需求"精准翻译成"AI能读懂的规格",这也是避免AI生成代码偏离业务意图的关键前提。
2 需求与规格的区别
在AI编程的需求处理流程中,需求与规格是两个不可或缺但定位完全不同的概念,二者相辅相成、缺一不可。需求是产品经理、业务方与开发人员之间的沟通介质,核心作用是传递业务价值、达成认知共识;而规格是开发人员与AI之间的沟通介质,核心作用是精确描述业务行为,为AI生成代码提供明确依据。
需要特别强调的是,规格是业务规则的结构化、形式化描述,其核心要求是"无歧义、无遗漏"。由于AI不具备人类一样的思考和追问能力,无法主动理解模糊的表述,一旦规格存在模糊或遗漏,AI就会自行解读、随意补充,最终导致生成的代码偏离业务实际需求。此外,业务方必须对规格进行确认,这是确保规格符合业务意图的关键环节;同时,当需求发生变更时,规格也必须同步更新,否则AI将基于旧规格生成代码,引发后续一系列的返工问题。
为了更清晰地界定两者的差异,我们从多个核心维度进行详细对比:
|-------|---------------|-------------------------------------|
| 维度 | 需求 | 规格 |
| 语言 | 自然语言(中文、英文) | 结构化语言(YAML、表格、DSL) |
| 允许模糊? | 允许,人类可以追问 | 不允许,AI追问能力很弱 |
| 受众 | 产品经理、业务方、开发人员 | AI、测试用例、形式化验证工具 |
| 目的 | 沟通业务价值、达成共识 | 精确描述行为、作为生成依据 |
| 完整性 | 可以有遗漏(后续补充) | 必须完备(遗漏=AI瞎猜) |
| 变更成本 | 低(改几个字) | 中(需要重新生成代码) |
| 示例 | "VIP用户享受包邮" | "如果user.level='VIP'则shipping_fee=0" |
3 AI可读的检查单
在AI编程中,规格的质量直接决定了AI生成代码的质量,为了确保规格能够被AI准确理解、无歧义且无遗漏,开发人员在将规格交给AI前,可通过以下5个核心问题进行自我检查,确保规格达到AI可读标准:
- 这个需求有没有歧义?如果有,我追问清楚了吗?------ 歧义是AI生成错误代码的主要诱因,必须在规格编写前彻底澄清所有模糊点,确保每一条描述都只有唯一解读。
- 我是否已经把澄清后的内容写成了结构化规格?------ 结构化的描述能减少AI解读偏差,无论是表格、YAML还是DSL,都需确保格式规范、逻辑清晰。
- 规格中的每个分支、边界、异常都明确了吗?------ AI无法自主判断边界条件和异常场景,必须将所有可能的情况逐一列明,避免AI自行补充导致偏差。
- 业务方是否确认了这份规格?------ 业务方的确认是规格符合业务意图的最终保障,避免因开发人员理解偏差,导致规格与实际业务需求脱节。
- 这份规格可以直接给AI生成代码吗?------ 最终校验环节,确保规格无遗漏、无歧义、结构化,能够直接作为AI的输入,无需额外补充说明。
只有当上述5项检查全部满足时,这份规格才具备交给AI的条件,才能最大程度避免AI生成代码偏离业务意图,减少后续返工成本。
4 案例:从需求到规格的细化过程
为了更直观地理解从模糊需求到精确规格的转化过程,我们以一个常见的业务需求为例,详细拆解每一步的操作要点,清晰呈现开发人员如何完成"需求到规格"的翻译工作。
原始需求(产品经理给的)
"VIP用户享受包邮。"
这份原始需求属于典型的模糊自然语言,仅明确了"VIP用户包邮"这一核心诉求,但存在诸多歧义点,无法直接交给AI生成代码。因此,开发人员需要先通过追问澄清歧义,再转化为精确规格。
步骤1:开发人员追问,识别歧义,澄清需求
开发人员需结合业务场景,针对原始需求中的模糊点,向产品经理或业务方逐一追问,明确所有细节,确保对需求的理解与业务方完全一致。具体追问内容及反馈如下:
|--------------|------------------|
| 问题 | 答案 |
| VIP怎么定义? | 会员等级字段 = "VIP" |
| 非VIP呢? | 普通用户满99包邮,否则收10元 |
| 满99是折前还是折后? | 折后 |
| 99元本身包邮吗? | 包邮(≥99) |
| 用户等级查询失败怎么办? | 按普通用户处理 |
步骤2:产出给AI的规格
在澄清所有歧义点后,开发人员需要将这些细节转化为结构化、无歧义的规格,明确触发条件、输入参数、分支逻辑、边界条件及异常处理,确保AI能够精准理解并生成符合需求的代码。具体规格如下:
规则名: 运费计算
触发: 用户提交订单后
输入:
-
user_level: 字符串,可选值: VIP, NORMAL, null
-
order_amount: 数字,折后金额
分支:
-
如果 user_level = "VIP" → 运费 = 0
-
如果 user_level ≠ "VIP" 且 order_amount ≥ 99 → 运费 = 0
-
如果 user_level ≠ "VIP" 且 order_amount < 99 → 运费 = 10
-
如果 user_level = null 或 "" → 按 "NORMAL" 处理
边界:
-
order_amount = 99: 运费 = 0
-
order_amount = 0: 运费 = 10
异常:
- user_level 查询超时: 按 "NORMAL" 处理,记录日志
这份规格涵盖了所有业务细节,无歧义、无遗漏,能够直接作为AI生成运费计算相关代码的输入,有效避免了AI自行解读导致的偏差。
规格不是单纯的提示词润色,而是对业务行为的结构化定义。提示词可以帮助AI理解任务,但不能替代规格对输入、分支、边界、异常和约束的明确描述。
反例:
如果仅给AI输入"VIP用户享受包邮",AI可能会产生如下不一致实现:
"把VIP之外所有用户都收运费,不处理满99包邮"
"把99元理解为"严格大于99""
"遇到userlevel为空时报错,而不是按普通用户处理"
"忽略查询超时的兜底逻辑"
5 从需求到设计的链路
在AI编程中,从模糊需求到最终的代码生成,并非一步到位,而是需要遵循一套完整的链路,逐步将需求转化为AI可识别的结构化指令。这套链路的核心逻辑是:需求文档 → 识别业务事件 → 定义响应的业务能力 → 补充约束的业务规则 → 结构化描述 → 工作流编排 → AI生成代码。其中,业务事件、业务能力与业务规则共同构成了工作流编排的核心输入,也是确保AI生成代码符合业务逻辑的关键。
需要特别说明的是,一个业务能力本质上是一个动宾结构:宾语是业务数据(名词),动词是业务功能(动词),一个业务功能有时会分解为多个系统功能。在实际操作中,可通过两种方式识别业务能力:一是先识别动词,再识别其作用的对象(名词);二是先识别名词,再识别与之相关的动词,无论哪种方式,最终都需形成清晰的动宾结构,明确业务能力的核心内容。
为了更清晰地呈现这套链路的具体操作流程,我们结合一个实际业务场景,拆解每一步的具体内容:
|----------------|-------------------------------------------------------------------------------------------------------------------|
| 步骤 | 具体内容 |
| 1 编写需求文档 | "用户提交订单后,系统检查库存。如果库存充足,创建订单并锁定库存; 如果库存不足,提示用户。VIP用户自动包邮。" |
| 2 识别业务事件 | 用户提交订单(事件E01) • 库存充足(事件E02) • 库存不足(事件E03) • 订单已创建(事件E04) • 库存已锁定(事件E05) • 用户已通知(事件E06) |
| 3 定义业务能力(响应事件) | • 订单管理能力:响应E01,产出E04 • 库存管理能力:响应E01,产出E02或E03 • 通知能力:响应E03或E06,产出E06 |
| 4 补充业务规则(约束能力) | • 库存检查规则:if stock >= quantity → 充足,else → 不足 • 运费计算规则:if user.level = VIP → 0 • 订单创建规则:生成订单号、设置初始状态、计算应还日期 |
| 5 结构化描述(YAML) | events: [...] capabilities: [...] rules: [...] workflow: [...] |
| 6 工作流编排(AI生成) | E01 → 订单管理.创建订单() → E04 E01 → 库存管理.检查库存() → [充足]E02 / [不足]E03 E02 → 库存管理.锁定库存() → E05 E03 → 通知能力.通知用户() → E06 |
通过这套完整的链路,模糊的业务需求被逐步转化为结构化、无歧义的指令,既确保了AI生成代码的准确性,也实现了需求、设计与代码的一致性,为AI编程的高效落地提供了有力支撑。