敏捷开发

敏捷开发主要适用于需求不确定,经常变更,持续迭代的产品。本文根据个人的产品管理经验,以产品开发各个环节的运行为主线,阐述敏捷开发的实际运用。

产品开发主要环节

需求: 调用分析用户需求。
交互: 根据用户需求,设计产品交互细节。
视觉: 根据交互方案,设计详细的产品视觉实现。
软件: 根据交互方案、视觉方案,实现产品。
测试: 根据软件交付的产品,进行相关的功能测试、集成测试等等。
发布: 通过测试的产品,进行对内灰度发布,或者对外的用户发布。
运营: 持续关注用户使用情况,分析用户数据,反馈到需求端,并举办各类线上活动,促进产品活跃度等等。

1.敏捷开发常用方式方法

迭代总结与计划会: 回顾上一个迭代周期的执行情况,总结做得好的,分析做得差的,制定下一个迭代周期的迭代计划,迭代周期一般和产品特性相关,一般为一周(重点:迭代周期需在较长时间内保持不变,保障整个团队运行具有较好的节奏感)。
交互评审会: 评审即将进行开发的需求,促使各领域人员了解即将开发的功能,并完善对应的交互功能,开发人员根据交互评审,了解开发细节,测试人员根据交互评审进行测试用例设计。(备注:在交互评审前,交互和规划确认好需求。
测试用例评审会: 团队全体成员参与,由测试人员主导讲解,其他人员关注测试用例是否完善,并给出补充。
技术评审会: 针对比较复杂的功能,由开发人员编写相关的技术设计文档,并主导讲解,团队其他人员关注技术方案的兼容性,完整性等等。
晨会:回顾昨天做了什么,情况如何,今天将要做什么,控制在15分钟以内,通过这种方式,周期性的让团队信息得到同步透明。
自测与验收:为了保证产品的可靠性,在软件第一阶段开发完成后,需要自测(通过P0级测试用例),并有交互人员验收对应的开发功能,验收通过后,允许提交测试。
单功能测试:功能开发完成之后,首先进入单功能测试,在这个环节,不保证该功能之外的其他功能代码使用最新代码(其他功能随着开发的进行,当前单功能开发分支的代码会落后)。
集成测试:单功能测试通过的功能,合并到主干,与其他稳定的功能一起进入集成测试,集成测试包括各个功能之间的混合使用,升级,兼容性等等一个软件产品的各个环节的测试。
众测:由于一个企业的测试人员有限,测试环境有限,很难将测试覆盖到市面上的各种机型、使用场景、使用环境等,因此需要通过众测的机制,来进一步发现产品的问题,进一步提高软件的稳定性。
灰度发布:考虑到产品发布风险,发布需要逐步进行,先进行其中一部分用户的发布,并观察市场反馈情况,无影响发布的异常时,再进一步进行发布。
全量发布:根据前几步的发布情况,并且当前版本确认为全量发布版本时,进行全量发布,使所有用户都检测到版本升级。

2.节奏

节奏是敏捷开发的核心,保持合理固定的节奏,能有效的促使各个环节协调统一,高效运行。针对产品的不同周期,方案有所不同。

2.1产品初期

产品从无到有的过程,我们称之为迭代0,在这个过程中,我们有一个初始版本计划,包含了一系列的开发功能,以及产品的最终下单日期。因此在这个环节的开发模式有点类似于瀑布模式,根据功能需求逐步的进行开发,但与瀑布模式不同的是,由于产品具有多个领域配合的特点,需要大量有效的沟通(重点),在该过程借鉴了敏捷开发部分的方式方法。虽然使用了敏捷的部分方式方法,但它却有如下因素导致一些效率问题:

  • 空窗期
    由于需要一个初始版本计划,在该版本计划未出来之前,后端配合人员无对应的工作。
  • 功能等待
    由于版本计划在同一时刻发出,随着不同功能的开发进行,先后进入测试环节,先后稳定,并且需要所有功能稳定后才能发布,拉长了产品发布的周期和测试的稳定测试周期。
  • 超载期
    在产品开发后期,所有功能集中进行开发和测试,需要大量的开发和测试人员投入,并且伴随着bug的修复,以及功能的变更,导致后端负荷超载,最终导致项目下单延期。
    目前,对于这几个问题没有较好的解决方案,迭代0使用版本计划的方式,必然会有这些问题存在,当公司有几款产品在运行时,这类问题能得到缓解,几个产品线交错进行,能缓解上述问题。

2.2产品迭代期

当产品正式上线后,产品会根据市场反馈,或者需求调研,进一步改善优化,进行对应的功能开发。在这个环节,不需要制定对应的版本计划(版本计划会导致产品初期那三个问题),而采用敏捷的方式。

  • 需求池
    由规划人员维护需求池,并给需求池中的功能需求排优先级。
  • 迭代计划
    由项目经理组织迭代计划会,团队成员一起从需求池中取出需求,进行对应的迭代开发。(迭代周期根据产品特性来定,一般为一周)
  • 等等
    包含之前说到的敏捷的各个开发环节。

注意;这里是周迭代,意味着在产品迭代期,各个环节在每一周都会有自己的事情,在每一周各个环节上的人员都有自己的输出,从最后环节上来看,每周都会有一个集成测试通过的版本,意味着产品可以每周做发布,有效的缩短产品的发布周期。如果我们每月对外发布一次,那么我们的迭代版本可以有三周的时间进行众测和灰度测试,能有效提高对外发布的产品质量。因此,针对这样的一个流程控制方式,我们称之为版本火车集成测试火车,重点就是节奏,周期性的做某一件事。

3.总结

一款全新的产品,包括产品初期和迭代期,因此还需要两个方案的结合,没有最好的方法,只有最合适的方案。我个人认为,敏捷的核心是透明、节奏。