敏捷模式强调快速响应变化,短迭代内接纳需求调整,快速反馈快速修改。而 ASPICE SUP.10 变更管理过程域,强调变更需要识别影响、经过评审、受控更新相关工作产物、完整记录变更历史。很多项目在落地时会把两者对立起来,要么照搬传统重型变更流程,拖慢敏捷迭代速度;要么为了迭代速度直接跳过变更评审,造成过程不符合项。
敏捷迭代项目变更管理容易出现的几类问题。迭代内部需求改动直接口头确认,不记录变更请求,不做影响分析。迭代内修改需求之后,对应的设计、测试用例不会同步更新。多个变更混杂在同一个 Sprint 当中,无法区分每一处改动的来源与理由。基线版本管理松散,迭代交付版本没有明确基线,分不清哪些修改属于哪一次变更。
敏捷并不等于不受约束的随意修改,敏捷欢迎变化,但变化本身依旧需要受控。SUP.10 并不要求所有变更都走完全同等厚重的审批流程,允许基于风险对变更做分级处理,这一点恰好可以适配迭代开发场景。
项目前期需要组织团队定义变更分级规则。依据变更影响范围、安全风险等级划分变更等级。高风险,涉及安全需求、架构改动的变更,执行完整变更流程:变更请求提交,开展完整影响分析,跨角色评审,同步更新需求、设计、测试,完成回归验证再合入基线。低风险的细节优化、界面文案、非安全相关参数微调,可以使用简化变更流程,但依旧要留下变更记录,写明改动内容、改动理由,不能完全口头操作。
迭代规划和迭代执行两个阶段做好区分。Sprint 规划阶段批量调整 Backlog 条目,属于迭代计划调整,做好条目更新与评审;已经进入迭代执行过程中的改动,不允许随意插入任务。确有紧急改动需要加入当前迭代,需要评估对迭代目标、工作量的影响,经过团队评审确认之后再纳入,而不是直接新增任务修改代码。
每一个迭代交付的输出物,都要形成明确版本基线。基线锁定该迭代对应的需求版本、设计文件、代码版本、测试报告。迭代内部发生的所有简化变更,变更记录全部和迭代基线绑定归档,做到后续可以回溯每一处改动的由来。
日常项目开展内审的时候,重点抽查迭代基线内的改动,核对改动是否留有记录,相关的需求、测试是否同步更新,识别跳过管控的隐形变更。
敏捷追求响应变化,ASPICE 追求变化可控,二者不存在本质矛盾。核心不是用重型流程去限制迭代,而是建立风险导向的分级变更机制,高风险严格管控,低风险适度简化,所有改动留痕可追溯,在迭代效率和 SUP.10 变更管理要求之间找到平衡点。
