本文大纲

《我的敏捷软件项目管理实践》

探索自建模型

第三章 自建项目研发流程

在国内的软件研发环境要更复杂,没有哪种单一软件开发生命周期模型能应对。我们不争论那种模型好那种不好,国人都是实用主义者,哪个神仙有用我就拜哪个,哪个模型在某方面有长处我就用哪个。无论是哪种模型,最终的目标都是为了更好地服务用户,创造出有价值的产品。不要拘泥于使用的是不是完全的敏捷模型,只要能把项目做好,我并不在意是不是纯敏捷模型,是不是纯瀑布模型。

虽然本书的名称叫《我的敏捷软件项目管理实践》,是我以敏捷思维为主体,同时也结合了传统模型的一些方法。制定出的适合我的团队的定制模型,暂且叫“混合模型”吧。把传统模型(增量模型)揉入到敏捷的单个迭代中,例如在管理流程上依然采用传统模型的严谨步骤:需求→设计→编码→测试→发布,又实践敏捷方法,根据用户反馈不断调整,小步快跑快速迭代拥抱变化;不追求一开始就尽善尽美,而是把最核心的东西先交付;采用用户故事来描述需求,并排定优先级,维护需求池,业务人员和开发人员密切合作,面对面交流,结合了DevOps,每日站立会议,践行测试驱动开发,定期重构和优化。这样一来,既保持了传统模型对细节的关注,又享受到了敏捷模型带来的灵活性和快速响应能力。

如果你说这不是真正的敏捷方法,那不对起了,我的目标不是做真正的敏捷。而是探索快速、高质量、低成本交付软件产品的可行方法。不管什么模型,能做好项目的才是好模型。

混合型软件开发生命周期模型的定义

混合模型将线性型、迭代型和敏捷型方法结合起来使用,以适应不同阶段的需求。这种方式特别适合那些需求复杂多变的项目,既保留了传统方法的严谨性,又引入了敏捷方法的灵活性。

混合模型——在战略层用瀑布筑牢地基,战术层用敏捷快速突进。其运作逻辑为:

【三级分层治理架构】

层级 方法论组合 典型产出
战略规划层 瀑布 系统架构图/需求分析/良好的设计
战术执行层 Scrum+极限编程 迭代交付物/测试驱动开发JUnit单元测试/定期重构
质量监控层 V模型+DevOps 自动化测试报告/Jenkins自动化流水线持续集成

典型实践场景:金融核心系统开发

  1. 需求锚定阶段:用瀑布模型完成央行合规性文档审查与架构评审(2周)
  2. 核心功能冲刺:拆分支付清算模块为3个Sprint迭代,TDD确保代码质量(6周)
  3. 灰度发布阶段:结合DevOps自动化流水线实现区域性渐进式上线(持续2周)

敏捷模型与线性模型的融合

一个典型的例子是将敏捷方法和传统模型结合起来,这种组合非常适合正在逐步向敏捷转型的团队。具体来说:

  • 前期评估:使用瀑布模型进行详细的规划和风险评估,引入需求分析、概要设计、详细设计,把握好设计的力度是关键。
  • 开发过程:采用敏捷方法,通过短迭代快速交付功能模块,并根据用户反馈不断调整。
  • 测试过程:采用V模型,引入单元测试、集成测试、系统测试。(如大型ERP系统的系统集成)

通过这种方式,团队可以在保持结构化和计划性的同时,引入敏捷的灵活性。例如:

  • 需求明确且稳定的阶段:可以采用瀑布模型进行详细的需求分析和设计,确保基础架构的稳固。
  • 需求变化频繁的阶段:则转向敏捷开发,通过快速迭代和持续交付,及时响应市场和技术的变化。
  • 质量控制和风险管理:利用螺旋模型的风险评估机制,确保每个迭代周期都能有效降低潜在风险。

采用混合型软件开发生命周期模型的好处在于:

  • 高效与灵活并存:既能享受敏捷带来的高效和灵活性,又能保持传统方法的严谨性和可预测性。
  • 过渡期支持:为团队提供了一个平稳的过渡期,帮助他们逐渐适应并最终完全转向敏捷模式。
  • 提高成功率:通过灵活选择最合适的工具和技术,团队能够更好地应对复杂多变的项目环境,从而提高项目的成功率。

风险防控 - 混合模型的5大熔断机制

实施混合模型必须建立熔断清单:

  1. 架构偏离度超过15% → 触发专项迭代修正
  2. 持续集成失败次数>3次/天 → 冻结代码提交权限
  3. 技术债指数突破黄线 → 强制启动重构周
  4. 用户故事验收通过率<80% → 回退需求拆分流程
  5. 迭代延期频次达2次/季度 → 启动敏捷教练介入