创建人员:Codex
文件职责:定义通用需求文档写法、需求审核流程、需求进入编码阶段的条件。
管理规范/模板:../../全局规范.md;需求规范.md;需求审核规范.md;需求文档范本.md。
引用文件:需求规范.md;需求审核规范.md;需求文档范本.md;../dev-doc/编码规范.md。
记录方式:全局需求写作规范;需求写法、需求审核流程或进入编码阶段的条件变化时更新。
统一依赖:本规范必须同时遵守 ../../全局规范.md 和 ../project-doc/项目规范.md;项目本地需求规范可补充流程,但不得违反全局规范、全局项目规范和本体系硬约束。
本规范用于约束管理体系下多个项目的需求文档写法。
需求文档的核心目标:
需求文档不是用来堆细节、堆 gate、堆校验项的。它要服务实现和验收,不能为了“看起来严谨”把模块设计得过重。
适用于:
不适用于纯方法论文章、研究笔记、讨论记录。研究笔记如果要进入代码实现,必须整理成需求文档。
需求必须明确:
不允许用“自行判断”“大概”“尽量”“后续再说”作为正式需求口径。
如果需求还不确定,必须写成:
不得把未确认内容写成实现必须遵守的正式规则。
一般按一个模块、一类工具、一个流程或一个明确事项写一份需求。
不得在一份需求里混写多个互相独立的系统,导致实现者无法判断主位。
需求文档必须避免以下问题:
校验只服务核心正确性。复杂校验应优先放到只读 helper、审计报告或后续专项验收,不应默认卡住主流程。
需求文档写完不等于完成。
需求必须经审核员审核通过,才算完成;审核不通过时必须修改需求文档,直到审核员确认目标、边界、接口、验收都清楚。
需求按规模分两类处理,不要把所有需求都套进重流程。
需求文档进入审核前,必须先判断上游需求流程:
如果对应上游文档不存在,需求文档必须说明“不适用”和原因,不能假装已经参考。
适用范围:
这类需求可以写得轻,但必须清楚。
流程:
小需求最低内容:
小需求不强制包含:
除非这些内容确实是该工具正确运行的必要条件。
适用范围:
流程:
common/dev-doc/编码规范.md 先写代码编写方案,并再次经审核员审核通过后才能编码。正式需求最低内容:
需求文档建议按以下结构书写。
不是所有正式需求都必须写满每个章节。如果某章节不适用,可以写“不适用,原因是……”。不要为了形式填充无价值内容。
复杂需求应包含 Design Intent。
Design Intent 只解释:
Design Intent 不得用来:
输入合同至少说明:
小工具可以简化,但不能省略输入来源和输入格式。
输出合同至少说明:
如果输出只是诊断报告,必须明确写清:该输出不得反向改写主流程结果。
处理流程要写清:
流程不要求写成代码级伪代码,但必须足够让实现者不会走两条不同路线。
每份需求必须写清不做事项。
典型不做事项:
不做事项能防止实现者把轻需求做成重系统。
验收标准要能判断需求是否完成。
验收可以包括:
验收不应无限扩张。
只有影响核心正确性的检查,才应写成主流程必过项。
例如:
以下内容一般应作为外围诊断项,不应默认阻断小样本、工具需求或主流程:
如果确实要作为硬 gate,必须说明为什么它直接影响核心正确性。
数据校验要轻重分层。
主需求里只写核心校验:
复杂校验优先写成只读 helper:
不要把数据校验设计成一堆层层叠加的 gate,导致需求本身变成验证系统。
正式需求进入编码前,应让审核员判断代码实现者是否只能得出一个合理实现。
重点检查:
如果实现者可能按两种方式理解,就还不是合格需求。
无论新写需求还是修改需求,都必须做需求上游一致性检查。
检查对象:
检查结论必须能回答:
推荐在需求文档中增加“需求上游一致性检查”小节。轻量需求也要写,但可以很短。
简单阈值可以直接写在需求里。
复杂公式、跨模块共用公式、会进入多个模块的规则,应单独沉淀到公共方法、公共规则或公式文档中,并在需求里引用。
不要在多个需求文档里重复写同一公式,避免后续版本漂移。
多个模块共用的数据结构应进入公共文档。
需求文档中可以引用公共字段或公共表,但不得平行发明另一套冲突结构。
如果必须保留旧字段:
审核员审核需求时,重点看真问题。
必须审:
不应把以下内容当成阻断问题:
审核结论必须明确:
需求完成必须同时满足:
需求完成后,才能进入对应编码流程。
如果是重型实现,还必须按 common/dev-doc/编码规范.md 先写代码编写方案并通过审核,再进入代码编写。
禁止:
需求文档要做到:目标清楚、输入输出清楚、流程边界清楚、验收够用但不过重;小需求走轻流程,正式需求走完整流程;所有需求都必须审核通过后才算结束,重型实现还要再经过编码方案审核后才能写代码。