十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

10-变更控制流程:需求变更、代码变更、固件变更审批与追溯

10-变更控制流程:需求变更、代码变更、固件变更审批与追溯 10-变更控制流程需求变更、代码变更、固件变更审批与追溯这是CMMI3系列的第六篇聊一个让所有开发又爱又恨的话题——变更控制。需求变更、代码改着改着跑偏了、固件偷偷换了一版结果设备集体抽风……这些故事每天都在上演。CMMI3里变更控制不是不让你改而是改可以但得说清楚为什么改、改了什么、影响了谁。一、为什么需要变更控制1.1 没有变更控制的世界先看几个真实场景场景一客户口头说加个优惠券功能开发直接动手改了没记录。两周后客户问我上次说的会员积分功能呢——开发一脸懵那是另一个需求还是同一个场景二测试测出bug开发修了顺手把旁边的逻辑也优化了一下。结果bug没了新bug来了而且没人知道改了哪里。场景三硬件同事从同事U盘里拷了个固件刷上去设备跑起来了但行为不对。一查刷的是三个月前的固件缺了最新的协议适配。这三个场景的共同点变更没有记录、没有审批、没有追溯。1.2 CMMI3对变更控制的要求CMMI3配置管理CM过程域的SG2就是跟踪并控制变更要求所有配置项的变更请求都要被记录和跟踪变更要经过审批才能执行变更结果要被验证和通知同时CMMI3的要求管理REQM过程域也要求需求变更必须经过影响分析和审批受影响的工作产品要同步更新。1.3 变更控制的核心目标目标说明可控每个变更有记录、有审批、有人负责可追溯任何时候都能查到谁、什么时候、为什么、改了什么可评估变更前做影响分析避免改一处崩三处可验证变更后有验证环节确认改对了防遗漏变更通知所有干系人避免信息差二、变更控制委员会CCB2.1 CCB是什么CCBChange Control Board变更控制委员会是变更审批的决策机构。不是所有变更都要上CCB但A级变更必须经过CCB评审。2.2 小微企业的CCB组成大公司的CCB可能七八个人小微企业3人就够了角色人选职责CCB主任项目经理主持会议最终决策技术代表技术负责人评估技术影响和工期业务代表产品负责人/客户代表评估业务价值和优先级旋转角色不固定根据变更内容动态调整。比如固件变更CCB就加上硬件负责人涉及AI模型变更加上算法工程师。2.3 CCB运作机制会议频率A级变更收到申请后24小时内召开CCB会议B级变更每周一次CCB例会集中审批C级变更不需要CCB模块负责人自行审批周报同步决策机制简单多数通过CCB主任有一票否决权。会议产出变更决策记录批准/驳回/需补充信息变更执行计划执行人、工期、验证方式变更影响范围确认三、变更控制全流程3.1 变更全生命周期┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 1.变更申请 │ → │ 2.影响分析 │ → │ 3.审批决策 │ → │ 4.执行变更 │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ ↓ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 7.归档追溯 │ ← │ 6.关闭通知 │ ← │ 5.验证确认 │ └─────────┘ └─────────┘ └─────────┘3.2 各阶段详解第一步变更申请任何人都可以提出变更申请开发、测试、客户、PM都可以。申请必须包含字段说明示例变更编号唯一标识CR-2026-015申请人谁提的张三变更类型需求/代码/固件需求变更变更内容改什么商品识别增加称重辅助校验变更原因为什么改纯视觉识别在遮挡场景误差大紧急程度高/中/低中期望完成时间什么时候要2026-08-20第二步影响分析这是最关键的一步。影响分析做不好变更就是拆东墙补西墙。影响分析清单□ 影响哪些模块列出所有受影响的代码模块 □ 影响哪些端后端/安卓/固件/小程序/AI模型 □ 影响哪些文档需求文档/设计文档/接口文档/测试用例 □ 影响哪些基线开发基线/测试基线/发布基线/量产基线 □ 工期影响多少增加/减少多少天 □ 风险评估可能引入什么新风险 □ 回退方案是什么变更失败怎么回退 □ 是否影响合同/进度里程碑第三步审批决策根据变更级别走不同审批流程见第3.3节分级审批。第四步执行变更在独立分支上执行变更不直接在develop/release/main上改变更代码必须通过代码审查变更涉及文档的文档同步更新变更涉及基线的建立新基线第五步验证确认功能验证变更内容是否实现预期效果回归验证变更是否影响原有功能接口验证变更是否影响接口兼容性固件变更需在设备上实测第六步关闭通知变更验证通过正式关闭变更申请通知所有干系人更新基线清单如涉及基线变更第七步归档追溯变更申请单、影响分析报告、审批记录、验证报告全部归档变更代码关联变更编号commit message中写入CR编号3.3 变更分级审批级别判定标准审批流程响应时间A级重大影响基线/影响进度5天/影响合同/影响已量产固件CCB评审3人全票通过24小时内B级中等影响多模块/影响进度1-5天/不影响基线PM技术负责人审批3个工作日内C级轻微单模块内修改/不影响进度/不影响接口模块负责人审批当天处理分级审批的核心价值把CCB从日常琐事中解放出来只处理真正需要集体决策的重大变更。小团队最怕的就是什么都要开会效率直接归零。四、三类变更的差异化处理4.1 需求变更特点影响面最大可能波及所有端和所有文档。处理流程1. 客户/产品提出需求变更 ↓ 2. 需求分析师评估需求合理性 ↓ 3. 技术负责人做技术影响分析架构/接口/工期 ↓ 4. CCB评审决策A级需求变更必须上CCB ↓ 5. 更新需求文档PRD/需求规格说明书版本号递增 ↓ 6. 更新受影响的设计文档、测试用例 ↓ 7. 分配开发任务纳入迭代计划 ↓ 8. 开发→测试→发布 ↓ 9. 通知客户变更已完成需求变更的三问原则一问真的要改吗有时候客户提的不是需求变更是操作问题二问现在就要改吗能否放到下个迭代避免打断当前迭代三问只改这一处吗关联需求是否也需要同步调整4.2 代码变更特点频率最高需要区分变更和缺陷修复。处理规则变更原因审批级别流程实现新需求跟随需求变更审批需求变更→代码变更修复缺陷BugC级Bug流程并行处理缺陷报告→修复→验证技术优化重构/性能B级优化申请→评审→执行紧急修复线上故障紧急变更流程见4.4先修后补审批代码变更的规范1. 所有代码变更必须在feature/hotfix分支上进行 2. commit message必须关联变更编号或Bug编号 git commit -m [CR-2026-015] 增加称重辅助校验逻辑 git commit -m [BUG-2026-042] 修复商品识别接口空指针异常 3. 合并前必须通过代码审查至少1人Review 4. 合并后关联的变更申请状态更新为已合并4.3 固件变更特点风险最高变更后影响物理设备回退成本大。固件变更额外要求1. 固件变更必须提供变更影响设备清单 - 哪些设备型号受影响 - 已部署设备数量 - 升级方式OTA/返厂/产线重烧 2. 固件变更必须提供回退方案 - 能不能回退到旧版本 - 回退操作步骤 - 回退风险配置数据是否兼容 3. 固件变更必须在测试设备上全量验证 - 至少3台设备实测 - 包含7×24小时稳定性测试 4. 量产固件变更必须重新建立量产基线 - 旧量产基线标记为已替代 - 新量产基线需品控签字确认 - 产线烧录工具同步更新 5. 固件OTA升级必须分批次灰度 - 第一批10%设备 - 第二批50%设备 - 第三批剩余设备 - 每批之间观察24小时4.4 紧急变更流程线上故障等不及正常审批流程时启用紧急变更Fast-Track1. 发现紧急问题线上故障/设备批量异常 ↓ 2. 电话/即时通讯通知PM和技术负责人口头授权 ↓ 3. 立即执行修复hotfix分支 ↓ 4. 修复验证最小验证集核心功能变更点 ↓ 5. 紧急发布 ↓ 6. 24小时内补提交变更申请单补走审批流程 ↓ 7. 事后复盘为什么需要紧急变更如何预防紧急变更是先斩后奏但必须奏。24小时内必须补全手续否则就是隐形变更下次出问题查无此据。五、变更日志与追溯5.1 变更日志每次变更必须记录在变更日志中变更日志是追溯的核心依据。变更日志模板编号类型内容摘要申请人审批人执行人状态创建日期关闭日期CR-2026-015需求变更增加称重辅助校验张三CCB李四已关闭08-0108-10CR-2026-016代码变更优化商品识别接口性能李四PM王五已关闭08-0308-05CR-2026-017固件变更修复STM32串口通信丢包王五CCB赵六执行中08-05—CR-2026-018紧急变更线上支付接口超时修复赵六PM(口头)李四已关闭08-0608-065.2 代码层面的追溯通过commit message中的编号可以从变更申请一路追溯到代码行变更申请单 CR-2026-015 ↓ 关联 Git commit: [CR-2026-015] 增加称重辅助校验逻辑 ↓ 关联 Merge Request #42: Feature/weight-verify ↓ 关联 Git Tag: REL-1.1.0 (包含此变更) ↓ 关联 基线清单: REL-1.1.0 行11实操命令查看某次变更的代码改动# 查看CR-2026-015相关的所有commitgitlog--all--grepCR-2026-015# 查看具体改了什么gitlog--all--grepCR-2026-015--patch六、拒绝隐形变更的方法6.1 什么是隐形变更隐形变更 改了代码/固件/需求但没有走变更流程没有记录。这是项目管理的头号敌人。常见表现开发顺手改了接口返回值没告诉任何人安卓端解析报错开发在本地改了配置文件直接部署没有提交到代码仓库硬件同事试了一下新固件直接刷到测试设备上客户随口提了个需求开发直接做了没有记录6.2 防范措施措施一CI/CD强制门禁release/main分支的合并必须关联变更编号MR标题中包含CR编号没有关联编号的MRCI流水线直接拒绝合并制品库只接收CI/CD流水线上传的制品禁止手动上传措施二定期配置审计每周对比Git仓库和生产环境部署版本每周对比制品库版本和设备实际运行固件版本发现不一致立即追查原因措施三固件烧录管控产线烧录工具只从制品库拉取量产基线固件禁止手动指定文件测试设备烧录固件需登记记录固件版本和烧录人措施四需求变更口头确认制任何口头需求变更24小时内必须补提交变更申请单PM每周与客户核对需求清单确认无遗漏七、实战案例无人售货柜紧急变更7.1 事件背景2026年8月5日某城市50台无人售货柜升级到固件v0.3.1后出现开门后商品识别偶发性超时10秒的问题严重影响用户体验客诉激增。7.2 变更处理过程08-05 14:00 客服接到客诉测试组复现确认问题 08-05 14:30 PM发起紧急变更申请CR-2026-018 08-05 14:35 PM与技术负责人电话沟通口头授权紧急修复 08-05 15:00 开发定位原因固件v0.3.1中摄像头初始化逻辑修改 导致YOLO模型加载延迟增加 08-05 16:30 开发在hotfix分支修复本地测试通过 08-05 17:00 3台测试设备验证识别超时问题消除 08-05 17:30 固件v0.3.2构建完成上传制品库 08-05 18:00 OTA灰度升级第一批5台设备 08-05 18:00~22:00 观察4小时5台设备运行正常 08-05 22:00 OTA升级第二批20台 08-06 08:00 20台设备运行正常升级剩余25台 08-06 12:00 全部50台设备升级完成 08-06 14:00 补提交变更申请单正式审批 08-06 16:00 CCB确认变更关闭 08-07 10:00 复盘会议7.3 变更追溯记录追溯项内容变更编号CR-2026-018变更类型固件变更紧急变更原因固件v0.3.1摄像头初始化逻辑导致YOLO模型加载延迟影响范围50台无人售货柜修复版本固件v0.3.2代码commit[CR-2026-018] 优化摄像头初始化时序回退方案可通过OTA回退到v0.3.0v0.3.0无此问题验证结果50台设备运行48小时无异常复盘结论固件变更前需在真实设备上做YOLO加载时序测试加入回归测试用例7.4 复盘改进这次紧急变更暴露了一个问题固件v0.3.1的变更CR-2026-016在测试设备上验证通过但测试设备只有1台且测试场景没有覆盖设备冷启动后立即开门识别的场景。改进措施固件变更测试设备从1台增加到3台回归测试用例增加冷启动→开门→识别全链路场景固件OTA灰度策略从5台→20台→25台改为3台→10台→37台首批更小固件变更的影响分析增加AI模型加载时序检查项小结变更控制不是阻碍开发而是让每一次改动都有据可查、有迹可循。核心要点CCB运作小团队3人CCB够用A级变更上会B级周会集中审C级日常处理全流程闭环申请→影响分析→审批→执行→验证→关闭→归档七步缺一不可分级处理需求变更影响面最大需全链路同步代码变更最高频需关联编号固件变更风险最高需设备实测灰度发布紧急变更先修后补24小时内必须补全手续事后必须复盘拒绝隐形变更CI/CD门禁 定期审计 固件烧录管控 口头需求确认制追溯链路变更编号贯穿申请单→commit→MR→Tag→基线清单任何环节都能反向追溯
返回列表