更新和修改需求

场景:需求变化了,你需要更新 SRS 文档 所需时间:每次变更 5-10 分钟


问题背景

需求永远不会一成不变。你需要:

  • 添加新功能
  • 修改现有需求
  • 删除废弃功能
  • 澄清模糊需求
  • 更新优先级

但是:手动更新容易出错且耗时。


解决方案:告诉 SRS Writer 变更内容

SRS Writer 能理解自然语言的变更请求,并通过 SID 语义编辑器安全更新 SRS.mdrequirements.yaml(保持实体 ID 和追踪关系一致)。


进行变更

类型 1:添加新功能

打开聊天面板(Cmd+Shift+I / Ctrl+Shift+I),在聊天中输入: srs命令行 简单添加

@srs-writer 添加一个功能:用户可以将任务列表导出为 Excel 文件

详细添加

@srs-writer 添加一个批量操作的新功能:

用户应该能够:
- 选择多个任务(复选框)
- 批量操作:删除、标记完成、分配给用户、更改优先级
- 每次操作最多 100 个任务
- 破坏性操作前显示确认对话框
- 长时间操作显示进度指示器

SRS Writer 会做什么

  1. 创建新的功能需求(如 FR-015)
  2. 添加到 SRS.md 的适当章节
  3. 用结构化数据更新 requirements.yaml
  4. 链接到相关需求
  5. 运行质量检查

类型 2:修改现有需求

小改动

@srs-writer 将登录需求从仅邮箱改为同时支持邮箱和用户名

具体改动

@srs-writer 更新需求 FR-003(用户资料):
添加这些字段:时区、语言偏好、通知设置

完全重写

@srs-writer 用以下内容替换整个"搜索"功能(FR-008):

搜索应支持:
- 对任务标题和描述进行全文搜索
- 筛选:负责人、状态、优先级、标签、日期范围
- 拼写错误的模糊匹配
- 即时搜索(边输入边出结果)
- 将搜索保存为自定义视图
- 搜索历史(最近 10 次)

性能:95% 的搜索 < 100ms

更新内容

  • SRS.md 中的需求描述
  • 相关章节(如有依赖)
  • requirements.yaml 字段
  • 版本历史记录

类型 3:删除功能

简单删除

@srs-writer 删除"社交分享"功能——我们 v1 不做了

带说明的删除

@srs-writer 删除所有与第三方集成相关的需求。
我们决定先专注于核心功能。把这些移到
"未来增强"章节,而不是完全删除。

SRS Writer 会做什么

  1. 从主需求中删除
  2. 可选择移到"未来"章节
  3. 更新追溯性(删除孤立链接)
  4. 更新概述中的需求数量

类型 4:澄清模糊需求

使之具体

@srs-writer 需求 FR-005 写的是"系统应该快"。
这太模糊了。替换为具体指标:
- 页面加载时间:< 2 秒
- API 响应时间:< 200ms(95 百分位)
- 搜索结果:< 100ms
- 文件上传:支持最大 10MB,5 秒内完成

添加细节

@srs-writer "用户资料"需求需要更多细节。
指定这些资料字段:
- 名、姓(必填)
- 邮箱(必填,唯一)
- 头像(可选,最大 2MB,JPG/PNG)
- 简介(可选,最多 500 字符)
- 部门(下拉:工程、销售、市场、支持)
- 角色(由管理员自动分配)

类型 5:更改优先级

单个需求

@srs-writer 将 FR-012(邮件通知)的优先级从低改为高。
我们 v1 毕竟需要这个功能。

批量更新

@srs-writer 更新 v1 范围的优先级:

高优先级(v1 必须有):
- FR-001:用户认证
- FR-003:任务创建
- FR-007:任务分配
- FR-012:邮件通知

中优先级(v1 最好有):
- FR-005:文件附件
- FR-010:评论

低优先级(推迟到 v2):
- FR-009:社交分享
- FR-014:高级分析

高级更新模式

模式 1:条件逻辑

给现有需求添加条件

@srs-writer 更新"文件上传"需求(FR-008):

添加条件逻辑:
- 免费用户:每个文件最大 5MB,总存储 100MB
- 专业用户:每个文件最大 50MB,总存储 10GB
- 企业用户:每个文件最大 500MB,无限存储

同时添加:所有上传文件自动病毒扫描

模式 2:拆分需求

分解复杂需求

@srs-writer 需求 FR-006"用户管理"太宽泛了。
拆分为独立需求:

FR-006-A:用户注册
- 邮箱验证
- 密码强度要求

FR-006-B:用户资料管理
- 更新资料字段
- 修改密码
- 上传头像

FR-006-C:用户角色和权限
- 角色分配(管理员、用户、访客)
- 权限矩阵
- 基于角色的访问控制

模式 3:合并需求

合并相关需求

@srs-writer 将 FR-009(邮件通知)和 FR-011(推送通知)
合并为单一的"通知系统"需求。

合并后的需求应支持:
- 邮件通知(必选)
- 推送通知(可选)
- 短信通知(可选,高级功能)
- 用户偏好:每种通知类型单独控制
- 频率:即时、每日摘要、每周总结

模式 4:基于反馈更新

利益相关者审查后

@srs-writer 审查的利益相关者反馈:

1. FR-003(任务创建):添加重复任务支持
   - 每日、每周、每月、自定义模式
   - 结束条件:N 次后或到指定日期

2. FR-007(任务分配):允许多个负责人
   - 不只是一个所有者
   - 跟踪个人完成状态

3. FR-010(报表):添加 PDF 导出,不只是 Excel

4. 删除 FR-015(游戏化)——利益相关者不想要这个

处理大规模变更

场景:重大功能转向

问题:业务决定大幅改变方向

解决方案:系统性更新

@srs-writer 我们从 B2C 转向 B2B。这影响以下需求:

需要的变更:
1. 删除:个人用户注册(原 FR-002)
   替换为:基于公司的注册,由管理员配置

2. 删除:公共市场功能(FR-020 到 FR-025)
   替换为:私有公司工作区

3. 添加:多租户支持
   - 每个公司数据隔离
   - 公司级设置和品牌
   - 公司管理员的管理后台

4. 更新:定价需求(FR-030)
   从:按用户订阅
   到:按公司订阅,分用户层级

请更新所有受影响的需求并重新生成概述章节。

场景:新增合规需求

问题:出现了法律/合规要求

解决方案:添加新章节

@srs-writer 添加新章节"5. 合规需求",包含:

GDPR 合规:
- 用户数据导出(机器可读格式)
- 用户数据删除(被遗忘权)
- 同意管理
- 数据处理协议

HIPAA 合规(针对医疗客户):
- 静态数据加密(AES-256)
- 传输数据加密(TLS 1.3)
- 审计日志(所有 PHI 访问)
- 业务伙伴协议支持
- 访问控制(基于角色、时间限制)

SOC 2 Type II:
- 安全控制文档
- 定期渗透测试
- 事件响应计划
- 变更管理流程

跟踪变更

查看变更历史

SRS Writer 在 requirements.yaml 中维护版本历史:

YAML
functionalRequirements:
  - id: FR-003
    title: "任务创建"
    version: 2.1
    lastModified: "2025-11-06"
    changeLog:
      - version: 2.1
        date: "2025-11-06"
        author: "产品团队"
        change: "添加重复任务支持"
      - version: 2.0
        date: "2025-11-05"
        change: "添加多负责人支持"
      - version: 1.0
        date: "2025-11-01"
        change: "初始需求"

查看变更

@srs-writer 显示 FR-003 从 1.0 版本以来的变更

提交到 Git

更新需求后,可以手工同步到Git个人仓库:

Bash
git add TaskManagement/
git commit -m "更新:添加重复任务(FR-003)和多负责人支持(FR-007)"
git push

最佳实践:每完成一组逻辑变更就提交,而不是每次单独编辑都提交。


直接编辑 SRS.md

你也可以在 VSCode 中直接编辑 SRS.md。

何时直接编辑

  • ✅ 快速修改错别字
  • ✅ 改进格式
  • ✅ 添加说明
  • ✅ 插入图表或示例

何时使用聊天

  • ✅ 添加新需求
  • ✅ 重组章节
  • ✅ 影响多个需求的重大变更
  • ✅ 需要自动同步到 requirements.yaml

直接编辑后

告诉 SRS Writer 同步:

@srs-writer 我手动编辑了 SRS.md。请同步到 requirements.yaml
并检查任何一致性问题。

SRS Writer 会:

  1. 解析你的变更
  2. 更新 requirements.yaml
  3. 验证结构
  4. 修复损坏的链接

常见更新场景

场景 1:敏捷迭代规划

用例:规划下一个迭代的内容

@srs-writer 更新迭代范围:

迭代 5(11 月 6-20 日):
- FR-015:导出到 Excel(移到进行中)
- FR-016:从 CSV 导入(移到进行中)
- FR-012:邮件通知(从待办移到迭代)

不在迭代 5:
- FR-018:高级分析(保留在待办)

场景 2:Bug 修复需要更新需求

用例:Bug 揭示了缺失的需求

@srs-writer 我们发现一个 bug:用户可以提交无效数据的表单。
这说明缺少一个需求。

添加 FR-024:输入验证
- 所有表单字段必须在客户端和服务端都验证
- 邮箱字段:RFC 5322 格式
- 电话号码:E.164 格式
- 日期:ISO 8601 格式
- 自定义业务规则:邮编匹配国家、信用卡 Luhn 校验
- 错误消息:具体且可操作

场景 3:性能优化

用例:应用太慢,需要收紧需求

@srs-writer 更新性能需求(NFR-001):

使这些更严格:
- 页面加载:< 2 秒 → < 1 秒
- API 响应:< 500ms → < 200ms
- 数据库查询:< 200ms → < 100ms

添加新的性能需求:
- 懒加载:图片仅在可视区域内加载
- 缓存:API 响应缓存 5 分钟
- 分页:每页最多 50 条
- 无限滚动:滚动到 80% 时预加载下一页

场景 4:安全加固

用例:安全审计发现漏洞

@srs-writer 根据审计发现添加安全需求:

认证:
- FR-002A:添加双因素认证(TOTP)
- FR-002B:30 分钟不活动后会话超时
- FR-002C:密码 90 天过期

授权:
- FR-003A:实施最小权限访问
- FR-003B:所有敏感操作添加审计日志

数据保护:
- NFR-007A:敏感字段列级加密
- NFR-007B:每 90 天密钥轮换
- NFR-007C:日志中数据脱敏

更新后的质量检查

变更后,始终验证质量:

@srs-writer 针对更新的需求运行质量检查

检查内容

  • 一致性:变更是否与其他需求冲突?
  • 追溯性:链接是否仍然有效?
  • 完整性:所有方面都覆盖了吗?

修复问题

@srs-writer 质量检查显示 FR-015 现在与 NFR-003 冲突。
FR-015 要求存储 10MB 文件,但 NFR-003 限制上传为 5MB。
请解决这个冲突——将 NFR-003 限制增加到 10MB。

最佳实践

✅ 应该做

  1. 解释为什么需要变更

    @srs-writer 删除社交登录——利益相关者担心隐私问题
    
  2. 按逻辑批次更新

    • 将相关变更分组
    • 每批后提交到 Git
  3. 重大变更后审查

    • 阅读更新后的 SRS.md
    • 检查质量报告
    • 与团队验证
  4. 记录决策

    • 在 requirements.yaml 中添加注释
    • 如果范围变化,更新项目概述

❌ 不应该做

  1. 不要一次做太多变更

    • 分成小的更新
    • 更容易审查和回滚
  2. 不要忘记依赖

    @srs-writer 更新 FR-008 时,检查是否有其他需求
    依赖它,如果有也要更新。
    
  3. 不要悄悄删除需求

    • 记录删除原因
    • 考虑移到"未来"而不是删除
  4. 不要跳过质量检查

    • 重大更新后始终验证

下一步

你已掌握更新需求!

探索相关场景: 👉 多项目管理 👉 提升质量


有问题? 查看常见问题社区讨论