Skip to content

上位机需求发现与拆解表(V10)

内容类型:方法说明 + 模板难度:基础适合:新项目、新子系统、模糊业务需求或关键规则尚未决定的场景阅读时间:约 10 分钟前置:知道当前想解决的大致问题即可

这张表不是所有任务的前置流程。V10 的第一步不是“开始需求分析”,而是先判断当前任务是否真的存在需要用户决定的业务未知。

0. 先判断:这次到底需不需要需求拆解

当前情况推荐路径是否使用本页
只想知道当前代码怎么工作Read-Only Trace
改文字、颜色、列宽、已有样式Fast / MicroPatch
阈值、连续次数、报警后果已经说清Execution / BehaviorPatch通常否,用 Behavior Contract 即可
“以前正常,最近改坏了”RegressionFix否,先看 known-good 与 Git Diff
临时放开限制做边界测试ExperimentalChange否,先设计可恢复 override
新项目、新设备主流程、用户也不确定应该怎样工作Discovery
现有系统新增功能,但关键业务规则仍未决定Discovery是,只拆本次 Requirement Delta

一个已有项目的小改,不应该因为“工程规范”又重新走一遍完整需求、总体设计、详细设计。

1. 先分清事实和决策

需求沟通效率低,很多时候不是问题太复杂,而是把“AI 能自己查的事实”也问给用户。

事实:优先由 AI 自己确认

例如:

  • 当前按钮绑定哪个命令;
  • 配置从哪个文件读取;
  • 现有协议字段怎么解析;
  • 最近哪些文件发生过修改;
  • 当前报警是否会触发停机;
  • 数据目前写到哪里;
  • 项目有没有现成 Fake、Replay 或测试入口。

这些应优先从代码、配置、Git、日志、协议和已有文档确认。

决策:由用户决定

例如:

  • 越限后应该停机还是只报警;
  • 连续几次才算故障;
  • 操作员能否跳过某一步;
  • 本版本必须交付哪些功能;
  • 设备离线后流程是否允许继续;
  • 某个实验条件是临时测试还是正式规格。

判断标准很简单:不同答案会不会改变最终产品行为? 会,就属于真正的业务决策。

2. Discovery 不按“固定五轮”走,而是维护 Decision Tree

建议使用四个区:

yaml
Resolved:
  - 已经确认的业务决定

Frontier:
  - 当前前置条件已经满足、现在就能决定的问题

Blocked:
  - 依赖 Frontier 结果,暂时不要问

Deferred:
  - 对当前实现不阻塞,可以以后再决定

Frontier 是核心

每一轮只问当前 Frontier 中真正阻塞实现的问题,通常 2–5 个就够。

每个问题最好带四项:

text
问题:设备掉线后测试流程应该怎样处理?
为什么现在必须决定:它会改变状态机和恢复逻辑。
推荐默认:进入 AlarmOnly,当前步骤暂停,连接恢复后由用户确认继续。
其他选择:立即终止测试 / 自动恢复继续 / 只记录日志。

用户回答后,重新计算 Frontier。阻塞当前开发的问题清零,就停止 Discovery;不要为了“需求完整”继续追问未来可能用不到的分支。

3. 最小需求输入

如果用户只有一个模糊想法,不需要先填几十个字段。第一轮只要这些:

yaml
Goal: 这次想解决什么问题
User: 谁实际使用
Scenario: 现场怎么操作
KnownConstraints: 已知硬约束
Materials: 已有代码 / 协议 / 截图 / 日志 / 文档
NonGoals: 明确不做什么
Acceptance: 用户怎样判断第一版可用
Unknowns: 目前自己也拿不准的地方

示例:

yaml
Goal: 做一个实验室电源控制模块
User: 测试人员
Scenario: 选择设备 → 连接 → 设置电压 → 启动测试 → 看状态和报警
KnownConstraints:
  - C# WPF
  - 同一时间只允许控制一台同型号电源
  - 真实高压动作必须人工确认
Materials:
  - 通信协议
  - 旧控制软件截图
NonGoals:
  - 第一版不做历史趋势
Acceptance:
  - 能稳定连接、设置、读取状态、显示故障
Unknowns:
  - 掉线后的流程后果
  - 自检失败后是否允许继续

这已经足够让 AI 开始查事实并建立第一版 Decision Tree。

4. 已有项目优先写 Requirement Delta,而不是重做 PRD

已有系统新增或修改功能时,只记录“这次变化了什么”。

yaml
CurrentBehavior:
RequestedBehavior:
Trigger:
Condition:
Action:
Reset:
Record:
NonGoals:
Compatibility:
OpenDecisions:
VerificationExpectation:

例如:

yaml
CurrentBehavior: 单次过流即报警并终止测试
RequestedBehavior: 连续 5 次过流才报警,但测试继续
Trigger: 停机窗口残余电流监测
Condition: 连续 5 帧 >= 阈值
Action: AlarmOnly
Reset: 任意正常帧清零;下一窗口重新计数
Record: 保存连续样本和工程单位
NonGoals: 不修改高压控制和采集模式
Compatibility: 历史配置继续兼容
OpenDecisions: 
VerificationExpectation: 连续 4 次不报警,第 5 次报警;正常帧后重新计数

OpenDecisions 为空时,就应该进入 Execution,而不是继续需求访谈。

5. 新项目的最小业务骨架

只有新项目或新主流程,才建议补下面这些维度:

维度先确认什么
用户操作员、测试人员、调试人员、维护人员分别做什么
场景一次完整操作从哪里开始、在哪里结束
设备连接哪些设备,哪些只能读,哪些能写,哪些动作危险
状态离线、连接中、在线、运行、报警、故障、恢复
流程哪些步骤自动,哪些需要人工确认
数据什么必须保存,什么只展示,单位和时间戳是什么
异常超时、掉线、设备拒绝、数据非法时的后果
验收第一版什么情况下可以认为“可用”

注意:这里描述的是业务行为,不是提前决定具体类名、方法名或目录结构。

6. 需求候选状态

AI 整理需求时建议保留来源强度:

状态含义
SourceConfirmed用户原话、正式文档或现有系统直接支持
Inferred从已知事实合理推导,需要检查
SuggestedAI 建议,不应自动变成需求
OpenDecision会改变行为,等待用户决定
Deferred当前版本不阻塞,暂缓
OutOfScope明确不做

不要因为“行业一般都这样”就把 Suggested 写成客户需求。

7. Definition of Ready:什么时候停止问问题

Discovery 的结束条件不是“所有问题都问完”,而是当前开发已经具备足够确定性。

可以开始设计或实现时,至少满足:

  • 当前版本目标清楚;
  • 关键业务行为没有阻塞未知;
  • 危险设备动作和人工确认边界明确;
  • 输入、输出、异常后果基本明确;
  • NonGoals 明确;
  • 验收方式可描述;
  • 剩余问题都可以放进 Deferred。

如果这些都满足,就停止需求发现。

8. 重要需求再做追踪,不要求所有小改编号

正式项目、新子系统或需要验收的高风险功能,可以建立追踪关系:

text
Requirement
→ Behavior / Design
→ Implementation
→ Verification
→ Evidence

示例:

需求行为/设计实现范围验证证据
C-001 正确解析设备上报帧边界 + CRC + 工程量换算协议解析链Replay + 异常帧RX/PARSE 日志
S-001 高压写入需人工确认危险写操作前确认高压写入口HITL操作记录

纯 UI 文案、颜色、列宽这类 MicroPatch 不需要为了追踪而新建需求编号。

9. 三个可直接复制的 Prompt

9.1 模糊新需求:进入 Discovery

text
$host-computer-dev
这是一个新的/仍然模糊的上位机需求,请进入 Discovery。

目标:
【填写】

使用场景:
【填写】

已有材料:
【代码 / 协议 / 截图 / 日志 / 文档】

已知约束:
【填写】

请先区分 Facts 和 Decisions:
- 能从材料、代码、配置、Git 查到的事实由你自己确认;
- 只把会改变最终业务行为的决策放进 Decision Tree。

每轮只问当前 Frontier 中 2–5 个阻塞问题,并给出你的推荐默认方案、原因和主要替代方案。
当前实现所需的 Blocking Frontier 清零后就停止,不要为了完整继续追问 Deferred 项。

9.2 需求已经明确:不要重新访谈

text
$host-computer-dev
下面是已经确认的功能变化,请走 Execution,不要重新做需求访谈或输出长 Plan。

CurrentBehavior:
RequestedBehavior:
Trigger:
Condition:
Action:
Reset:
Record:
NonGoals:
VerificationExpectation:

先核对必要代码事实;如果没有真正阻塞的业务决策,直接沿最小修改路径实施。

9.3 已有客户文档:先做“事实抽取 + 缺口”

text
请根据我提供的需求说明书/技术协议整理可执行需求。

要求:
1. 保留原文能直接支持的要求,并标记 SourceConfirmed。
2. AI 推导内容单独标记 Inferred 或 Suggested。
3. 找出真正会阻塞开发的 OpenDecision。
4. 不要把常见行业做法自动写成客户要求。
5. 只针对当前第一阶段建立 Frontier;未来问题放 Deferred。
6. 输出第一阶段 NonGoals 和验收方式。

10. 常见反模式

反模式 A:小改也重新做完整需求

“按钮文字改一下”不需要重新定义用户、场景、模块和验收体系。

反模式 B:固定问五轮、十轮

轮数不重要,阻塞决策是否清零才重要。

反模式 C:让用户回答代码事实

“这个值现在在哪个类里算?”通常应该由 Agent 查代码,而不是问用户。

反模式 D:把需求、设计、实现混在一起

业务需求先说“系统应该怎样表现”;类名、线程模型、目录结构属于设计和实现层。

反模式 E:把 AI 建议直接写成正式需求

所有 Suggested 都需要证据或用户确认后才能升级。

下一步

别来无恙 · C# 上位机 AI 实战站 · 从零到交付 · QQ 群:1016188499