DevOps 敏捷开发该怎么落地,你真的了解吗?

原文出处:嘉为蓝鲸服务号

敏捷开发是相对于瀑布开发来说,一种轻量级的软件开发方式。敏捷开发是为了快速响应需求变化、通过组建跨职能团队实现持续不断的交付高质量的产品的方法的集合。​所有符合敏捷宣言和敏捷开发十二项原则的方法都可以是敏捷开发的一种实践。

​​点击查看运维层面该如何理解敏捷​​ (附资料下载)​​

敏捷软件开发宣言强调的四个核心价值:

  • 个体和互动​高于流程和工具
  • 工作的软件​高于详尽的文档
  • 客户合作​高于合同谈判
  • 响应变化​高于遵循计划

在大多数的敏捷开发实践过程中,团队会组合应用多种敏捷开发的实践,常见的方式是Scrum模型和看板的方式,并结合DevOps实现持续集成与持续部署等实践来推进敏捷开发。在具体展开说明敏捷开发过程之前,我们先看一下这三种敏捷分类。

  • 极速敏捷​:单周迭代、多次发布,以需求为粒度极速交付。典型场景有运营类、初创型产品。
  • 迭代敏捷​:是主流的研发模式,融合Scrum、Kanban、XP等。典型场景有独立应用、算法、系统以及预研等。
  • 规模化敏捷​:大象模型、>100人团队,跨部门、跨地域协作,交付周期 >2个月。典型场景有涉及多团队合作的大型项目以及集成项目。

▲ 详情可点击公众号菜单下的 研运干货-内容中心-《DevOps方法论和实践指导》ppt

接下来,以一个团队的一次迭代举例说明敏捷开发过程(点击查看如何正确引导团队进行敏捷转型​​)。

一、需求梳理

在敏捷开发之前,基于需求开展敏捷协同工作,将需求尽可能的拆分到小颗粒度,方便估算且能够在一个短周期内实现并交付上线,可以实现小步快跑的交付节奏。

从业务需求到功能需求的多层级拆分,并实现拆分后的关联追溯,能够清晰的展示所有拆分后的零散需求得到实现。

业务需求拆分

功能需求拆分

二、迭代规划

根据需求的优先级(点击查看:​用这些工具来定义需求优先级​​​)、清晰度以及交付周期进行规划迭代,拆分后的需求分布到每个迭代,并规划版本发布时间,使得迭代和版本分离,让已经达到发布条件的需求,按需进行版本发布。

迭代计划与版本计划

三、迭代实施

实施过程中包括设计、编码、测试等活动,通过每日站会同步进度,并处理遇到的问题和障碍,通过看板展示迭代的进展。

看板

设计阶段,基于每个需求可独立上线的基本诉求,对架构解耦的要求逐步提高,设计架构从单体架构到分布式架构最后到微服务架构,根据软件业务属性选择适合的架构,进行合理的架构解耦。

编码实现过程中,同步关注质量。基于减少浪费、一次性把事情做对的质量原则,加强编码阶段的质量保证,进行充分的单元测试和代码检查(点击查看检查代码的哪些方面​​)。通过研发持续集成流水线,频繁地验证每次编码输出之后成果的正确性,尽早发现问题,实现测试左移。

采用统一仓库或者分支策略来进行代码管理,保证代码的安全和便于统一管理,并且通过统一的制品管理确保软件产品输出的唯一性(​​了解CPack制品库​​​)。

完善的测试管理以及充分的自动化UI测试、接口测试,确保产品输出的质量。

DevOps持续交付流水线

四、迭代评审

在迭代实施结束后,组织业务人员对相关的产品进行演示评审。相关责任人演示自己的交付产品,整个团队对交付产品进行评审是否符合交付预期成果,对于不符合交付预期的产品进行下一个迭代的规划,对于符合预期的产品进行就近版本的发布。至此任务完成,如果演示中存在一些缺陷,也需要进行记录并在后续迭代中进行处理。最终形成迭代评审的会议结论。也作为迭代回顾和下一期需求梳理的输入。

五、迭代回顾

迭代结束后,进行总结回顾。明确迭代目标的达成情况,在目标实现过程中,我们完成了需求情况,迭代速率、产品质量与历史数据的对比等具体情况。从迭代现状中发现本期迭代的优势和不足,并确定如何保持优势,如何处理不足等一些的改进措施,实现迭代的逐步改进。

在企业中应用敏捷开发并不是一个独立的迭代,迭代只是众多实施过程里的一个最小单元。即使是单元团队的敏捷开发,也需要前后衔接和规划迭代与迭代之间的边界,需要明确各角色在迭代内的工作产出,以及前后工序间的对接。在面临更复杂的多团队敏捷开发时,我们需要考虑的因素或借鉴的模型与实践会更为复杂。

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4026796/blog/5495798