更新和修改需求
场景:需求变化了,你需要更新 SRS 文档 所需时间:每次变更 5-10 分钟
问题背景
需求永远不会一成不变。你需要:
- 添加新功能
- 修改现有需求
- 删除废弃功能
- 澄清模糊需求
- 更新优先级
但是:手动更新容易出错且耗时。
解决方案:告诉 SRS Writer 变更内容
SRS Writer 能理解自然语言的变更请求,并通过 SID 语义编辑器安全更新 SRS.md 与 requirements.yaml(保持实体 ID 和追踪关系一致)。
进行变更
类型 1:添加新功能
打开聊天面板(Cmd+Shift+I / Ctrl+Shift+I),在聊天中输入:
简单添加:
@srs-writer 添加一个功能:用户可以将任务列表导出为 Excel 文件
详细添加:
@srs-writer 添加一个批量操作的新功能:
用户应该能够:
- 选择多个任务(复选框)
- 批量操作:删除、标记完成、分配给用户、更改优先级
- 每次操作最多 100 个任务
- 破坏性操作前显示确认对话框
- 长时间操作显示进度指示器
SRS Writer 会做什么:
- 创建新的功能需求(如 FR-015)
- 添加到 SRS.md 的适当章节
- 用结构化数据更新 requirements.yaml
- 链接到相关需求
- 运行质量检查
类型 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 会做什么:
- 从主需求中删除
- 可选择移到"未来"章节
- 更新追溯性(删除孤立链接)
- 更新概述中的需求数量
类型 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 中维护版本历史:
YAMLfunctionalRequirements: - 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个人仓库:
Bashgit 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 会:
- 解析你的变更
- 更新 requirements.yaml
- 验证结构
- 修复损坏的链接
常见更新场景
场景 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。
最佳实践
✅ 应该做
-
解释为什么需要变更
@srs-writer 删除社交登录——利益相关者担心隐私问题 -
按逻辑批次更新
- 将相关变更分组
- 每批后提交到 Git
-
重大变更后审查
- 阅读更新后的 SRS.md
- 检查质量报告
- 与团队验证
-
记录决策
- 在 requirements.yaml 中添加注释
- 如果范围变化,更新项目概述
❌ 不应该做
-
不要一次做太多变更
- 分成小的更新
- 更容易审查和回滚
-
不要忘记依赖
@srs-writer 更新 FR-008 时,检查是否有其他需求 依赖它,如果有也要更新。 -
不要悄悄删除需求
- 记录删除原因
- 考虑移到"未来"而不是删除
-
不要跳过质量检查
- 重大更新后始终验证
下一步
你已掌握更新需求!