90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程

news2024/11/17 14:39:36

本文来自:

彭亮 极狐(GitLab) 高级产品经理

毛超 极狐(GitLab) 研发工程师

极狐(GitLab) 市场部内容团队

“敏捷” 是指能够驾驭变化,保持组织竞争优势的一种能力。自 2001 年《敏捷宣言》以来,敏捷及敏捷开发理念逐渐席卷全球。中国信通院《中国 DevOps 现状调查报告(2022)》显示,近 90% 的企业已在不同程度上实践敏捷开发,53.4% 的企业认为敏捷改变了团队人员开发模式,对研发效能提到了积极影响。

应用敏捷开发的组织相比传统组织,具备明显业务优势:

1. 快速交付价值:快速、持续向用户交付有价值的软件产品,赢得市场先机;

2. 灵活响应变化:凭借交付时间短、迭代速度快,有效应对市场变化,降低不确定因素带来的风险。

在当今多变的市场和竞争中,敏捷开发已经成为精英效能组织的制胜之道

极狐GitLab 敏捷开发逻辑与功能


根据 Gartner 2022 年发布的企业敏捷计划工具魔力象限显示,GitLab(极狐GitLab 是 GitLab 在中国的发行版本,具有和 GitLab 同等的功能,同时兼具众多适合中国本土用户的特色功能)位于挑战者象限。这足以说明 GitLab/极狐GitLab 敏捷项目管理成熟度,其完全能够支撑企业落地敏捷项目管理。(下文均以极狐GitLab 来展示敏捷管理相关功能)

极狐GitLab 敏捷开发项目有一套独特的术语体系,一切以议题(Issue)为核心展开,与基础敏捷开发术语的对应关系如下图:

图中功能基本工作流程如下:

用户故事 → 议题

  • 基础敏捷开发:用户通常会从用户故事开始规划,其定义了一个为用户提供使用价值的功能描述;

  • 极狐GitLab:使用议题来创建用户故事,并提供议题模板,实现用户故事结构和规范标准化。

任务 →(议题)任务

任务表示将用户故事进一步分解成各子任务。

  • 极狐GitLab:用户可在议题描述中创建任务列表,以进一步规划这些单独任务。

史诗 → 史诗(群组)

史诗表示由多个功能组成的更大的用户功能或流程。

  • 极狐GitLab:在群组级别提供了史诗功能,用户可以将多个议题附加到史诗下,以父子层次结构来管理。

产品待办事项(Backlog) → 议题列表 + 标签

  • 基础敏捷开发:用户故事正式进入开发前,通常放入产品待办事项(Backlog)中,根据需求紧迫性和价值等因素决定优先级;

  • 极狐GitLab:创建标签如 “Backlog” 并分配给相关议题,议题列表就能系统收集管理 Backlog,用于查看、跟踪需求和研发进展;也可以创建标签如 “优先级” 为 Backlog 排序。

冲刺(Sprint)→ 里程碑

  • 基础敏捷开发:一个冲刺(Sprint)代表一个时间段,用于完成对应开发工作;

  • 极狐GitLab:里程碑功能和冲刺概念一致,可设置开始日期和到期日期。把议题分配给里程碑,则该议题正式进入对应开发计划中。

估点 → 权重

  • 基础敏捷开发:评估每个用户故事的技术工作量,即估点;

  • 极狐GitLab:用议题中的 “权重” 属性表示预估的工作量。建议将用户故事进一步分解为可交付成果,记录技术计划和架构,再给出具体权重预估结果。该过程可记录在议题中或合并请求描述中,以更好的开展技术协作。

敏捷看板 → 议题看板

  • 基础敏捷开发:使用敏捷看板来分类议题,以诸如准备开发、开发中、QA 中、评审中、完成等阶段为列,可视化所有开发事项进度;

  • 极狐GitLab:议题看板允许用户自定义阶段,并能在阶段之间移动议题,更新工作进度。

燃尽图 → 极狐GitLab 燃尽图 + 燃起图

燃尽图是一种表示剩余工作量的工作图表。

  • 基础敏捷开发:使用燃尽图直观追踪并预测开发工作进度;

  • 极狐GitLab:通过燃尽图 + 燃起图,图形化展示每个里程碑进度情况。

    • 燃尽图展示时间和剩余总体工作量之间的关系;

    • 燃起图进一步补充项目时间与已完成工作间的关系。

以上是极狐GitLab 对应敏捷开发的基础概念,在满足基础敏捷框架的同时,也发展了许多灵活变通的实践思路,希望极狐GitLab 的敏捷开发逻辑,能切实融入团队与企业的敏捷开发流程中。

极狐GitLab 敏捷开发特点与优势


极狐GitLab 敏捷项目管理功能是极狐GitLab 一体化 DevOps 平台重要功能之一,经过众多用户实践,总结出五大优势:

一体化平台,沟通成本低,研发效率高

极狐GitLab 敏捷项目管理功能和源代码托管、CI/CD、安全防护等功能在同一个平台上,如上图所示:

  • 当产生第三方需求并以 Issue 形式创建时,可同时创建 Merge Request,后续代码变更在此 Merge Request 上进行;

  • 一旦有代码提交,就会触发 CI/CD,完成从构建、测试、安全扫描到部署整个流程,从而完成 Issue 和 Merge Request 的一一关联。

这个流程意味着在同一平台上实现了项目管理、源代码托管以及 CI/CD 等,打通了各个环节的数据流。并且,所有人员在同一个平台上进行协作,能够显著降低沟通成本、提升研发效率。

Issue 驱动,简单易用,快速上手

极狐GitLab 敏捷项目管理以 Issue 为基本操作单元,并且 Issue 创建非常方便。

在极狐GitLab 创建 Issue 时,可选择「模版」创建来减少创建相似 Issue 的重复工作;此外,还可以在创建 Issue 的同时,完成以下工作:

  • 指派对应人员作为负责人;

  • 关联对应史诗,便于整个史诗的管理追踪;

  • 使用 Label 标注 Issue 的类型、优先级等,帮助研发人员快速理解 Issue;

  • 用 Weight 进行 Story Point 的评估与填写;

  • 通过 Due Date 设置完成时间,提醒责任人按照时间线进行研发;

  • 工时统计,方便管理人员查看在此 Issue 上花费的时间。

当然,最重要的是可以在 Issue 界面上直接创建 Merge Request,然后基于这个 Merge Request 来进行代码开发

统一协作环境,研发体验更佳

  • 提需求:需求管理方在极狐GitLab 上创建需求之后,研发人员就可以在同一个平台上看到需求的详细情况,根据计划进行研发。

  • 了解研发进展:在整个研发过程中,需求管理方可以看到需求进度,而研发人员也能看到需求更新详情,避免双方为了了解彼此工作进展(如需求管理方查看进度,研发人员查看需求详情),而在不同的应用程序间,繁琐的来回切换。

  • 明晰研发工作:研发人员可以在 Merge Request 中看到对应 Issue 是哪个,在 Issue 中也可以看到提交的代码在哪个 Merge Request 中。

  • 需求调整:如果对于需求有不明确的地方,双方可以以 comment 形式在需求对应的 Issue 下方进行沟通。

同一平台环境中的丝滑协作,大幅提升需求管理方和研发人员的体验。

所见即所得,方便追溯,安全审计更容易

极狐GitLab 上,需求管理(Issue)和代码变更(Merge Request)一一关联,而且所有变更,包括需求的来回沟通(Issue 中以 comment 的形式)、代码变更、审核、准入、安全扫描等都可以看到详细修改情况,如修改人员、修改范围、修改时间等。所见即所得,一切有迹可查,方便追溯,最终让安全审计变得更加容易

沉淀最佳实践,胸有成竹,高效落地

极狐GitLab 团队就是使用极狐GitLab 项目管理来进行极狐GitLab 自身的敏捷迭代开发,做到了每月一个大版本发布。

这些研发成果已经沉淀为敏捷项目管理最佳实践,诸如 Issue 创建和使用,Epic 和 Issue 关联,燃起图/燃尽图使用等,任何团队都可以通过学习这些最佳实践,快速上手和落地极狐GitLab 敏捷项目管理功能。

极狐GitLab 敏捷开发流程


极狐GitLab 私有化部署版本(Self-managed Version)会在每个月月底固定发布最新版本,SaaS 版则是不定期上线新功能,做到功能开发测试完成即快速部署上线。

同时,极狐(GitLab) 是一家全员远程办公的公司,在自身实践中始终贯彻了敏捷开发的理念,并不是照搬所有敏捷开发方法论,而是结合了自身远程办公模式的特点发展出来的,在工作流程上较为轻量灵活,并且也在不断迭代中。

下面就具体介绍一下极狐GitLab 的敏捷开发流程。

需求收集与创建

极狐GitLab 是月度发版机制,每个月 28 号推出新的 Release。因此,在项目管理过程中,以一个月为时间周期,用 Milestone 进行需求的管理。

  • 在每个 Milestone 的中期(也就是月中),产品经理会收集整理各方需求;

  • 根据需求大小,以 Epic/Issue 形式来在极狐GitLab repo 下创建好需求;

  • 根据需求属性进行 label  标注,比如需求是前端还是后端的,优先级等;

  • 最后将其与 Milestone 进行关联。

需求分发与认领

极狐GitLab 研发团队会在 Milestone plan meeting 上进行 Issue 分发和认领。

  • 研发人员根据自身所在的团队和负责模块进行 Issue 的主动认领;

  • 认领完成后,进行 Issue 进一步确认,参与人包括产品经理,测试和研发人员,讨论诸如 Issue 详情是否描述清楚、是否需要进一步的拆分(拆分成更小的 Task)、Label 标注是否正确、Milestone 关联是否正确等;

  • 信息明确后,进行 Story Point 估算,并将估算值填写到 Issue 的 Weight 中。

以上流程完成,即可认为研发人员认领 Issue 成功。

需求正式研发

Milestone 正式开始后,研发根据自己认领的 Issue 进行研发,在 Issue 页面上创建 Merge Request,并基于此 Merge Request 进行后续代码编写、提交。整个完成了需求(Issue)和代码变更(Merge Request)一一关联。

代码提交之后会触发 CI/CD Pipeline,需要确保提交的代码是经过 CI/CD Pipeline 流程验证的,比如代码风格检查、编译、测试、安全扫描等。如果有问题就需要及时进行修复,直到 CI/CD Pipeline 运行成功。

同时,每一个 Merge Request 都指派了对应的 Code Reviewer,只有相应 Code Reviewer 对代码变更进行 Review 并审批以后,才可由 Maintainer 将 Merge Request 合并到主分支。

Milestone 回顾会

Milestone 结束后,团队召开 Milestone Retrospective Meeting,对于上个 Milestone 的研发情况进行回顾,总结做得好的地方,复盘有缺失的地方。整个过程可使用极狐GitLab 燃尽图/燃起图,如下图:

此外,还可以配置极狐GitLab 专属的效能管理功能,查看对应的数据:

另外,极狐GitLab 研发团队还在使用极狐GitLab 自行研发的研发效能产品进行效能度量,在每月一次的 retro 会议中回顾团队整体绩效,如查看项目的新增提交、新增合并请求、成功流水线次数、项目活跃度等关键数据,拉齐团队宏观认知。

「持续集成流水线」「合并请求」为例:

  • 通过「持续集成流水线」运行情况,衡量团队 CI/CD 能力。

  • 极狐GitLab 任何代码修改都要经过代码审查才能合并进入主干分支,通过「合并请求」度量,可以看到「平均评审时长」和「平均评审人数」,督促团队坚持代码评审,提升代码质量。另外,从「平均开发时长」也能看出开发人员对开发任务的切分是否合理。

正是在这样的敏捷开发流程下,极狐GitLab 能够保持月度发版,诞生至今已连续发行 23 个版本。

朝着更卓越、更贴合用户需求的极狐GitLab 不断进化的同时,我们也在帮助越来越多的来自千行百业的客户落地敏捷开发,成就精英效能组织。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试已上岸,成功拿到阿里和腾讯的入职offer,Java程序员面经全在这了,希望能帮到你!

前言 一开始的时候简历海投大多数都被拒绝了,后来自己找在腾讯上班的朋友帮忙改了一下简历,果然不一样了大多都能拿到面试机会,当然拿到后也没有那么顺利,面了差不多有十几家公司的样子,大大小小的都有,其中…

C++和QML混合编程_QML发送信号到C++端(信号和槽绑定)

C和QML混合编程_QML发送信号到C端(信号和槽绑定) 前言: 下面是之前讲解过的三种方法 1、使用Q_INVOKABLE声明一下普通函数,在QML端可以直接调用 2、使用Connections绑定QML的信号和C端的槽函数 3、使用connect绑定QML的信号和C端的…

通俗易懂理解——布隆过滤器

文章目录概述本质优缺点优点:缺点:实际应用解决redis缓存穿透问题:概述 本质 本质:很长的二进制向量(数组) 主要作用:判断一个数据在这个数组中是否存在,如果不存在为0&#xff0c…

NR PDCP duplication

欢迎关注同名微信公众号“modem协议笔记”。 PDCP duplication 是PDCP 的一个功能,主要是为满足URLLC 场景的可靠性/延迟要求,而产生的一种提高传输可靠性的机制,具体就是在信号状况比较差的情况下,网络侧通过配置PDCP duplicati…

集中式存储和分布式存储

分布式存储是相对于集中式存储来说的,在介绍分布式存储之前,我们先看看什么是集中式存储。不久之前,企业级的存储设备都是集中式存储。所谓集中式存储,从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系…

Zynq非Video Mixer方案实现视频叠加输出,无需SDK配置,提供工程源码和技术支持

目录1、前言2、Video Mixer的不便之处3、FDMA取代Video Mixer实现视频叠加输出4、Vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取1、前言 关于Zynq使用Video Mixer方案实现视频叠加输出方案请参考点击查看:Video Mixer方案 对于Zynq和Micr…

Elasticsearch:Security API 介绍

在我之前的文章 “Elasticsearch:运用 API 创建 roles 及 users” ,我展示了如何使用 Security API 来创建用户及角色来控制访问 Elasticsearch 中的索引。在今天的文章中,我将展示一个使用 Security API 来创建一个用户及角色来访问一个索引…

双指针【灵神基础精讲】

来源0x3f:https://space.bilibili.com/206214 文章目录同向双指针[209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/)[713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/)[3. 无重复字符的最…

计算机相关专业毕业论文选题推荐

计算机科学以下是我推荐的20个计算机科学专业的本科论文选题:基于机器学习的推荐算法研究与实现基于区块链技术的数字身份认证方案设计与实现基于深度学习的图像识别技术研究与应用基于虚拟现实技术的教育培训平台设计与实现基于物联网技术的智能家居系统研究与开发…

Dubbo与Spring Cloud优缺点分析(文档学习个人理解)

文章目录核心部件1、总体框架1.1 Dubbo 核心部件如下1.2 Spring Cloud 总体架构2、微服务架构核心要素3、通讯协议3.1 Dubbo3.2 Spring Cloud3.3 性能比较4、服务依赖方式4.1 Dubbo4.2 Spring Cloud5、组件运行流程5.1 Dubbo5.2 Dubbo 运行组件5.3 Spring Cloud5.4 Spring Clou…

[数据治理-02]一个例子搞懂元数据、参考数据、主数据、交易数据...的关系

杜威说过“所有知识都是分类”!很好理解,分类是认知经济,任何有效分类,都可以极大地节省我们的认知精力。谈到数据就必须做个分类,谈到数据分类可以从多个维度出发,比如按业务维度、这是财务数据、那是人力…

C++ ——多态 下 (图解多态原理、虚函数的再认知)

目录 一、抽象类 1)抽象类定义 2)抽象类的继承 3)抽象类实现多态 4)抽象类的好处 二、多态的实现原理 1)虚函数的存储方式 2)子类中虚函数的存储方式 ① 子类将基类中的虚表原封不动的拷贝到自己的…

【原创】java+swing+mysql教师管理系统设计与实现

教师管理系统主要是方便学校对教师进行管理,本文主要介绍如何使用java的swing窗体控件和mysql数据库去设计一个简单的教师管理系统。 功能分析: 本系统为javaswingmysql的教师管理系统,管理员、教师 功能如下: 管理员&#xff…

Quartz入门教程

本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时&#xff…

2022——寒假总结

文章目录背景报名摸索结果总结背景 大一上学期,刚上大学没有尽快适应,什么都没有学到。 因为疫情,所以平时的测试以及期末都是线上进行的,就没怎么认真学,网课直接划水。 我的生活与学习很不平衡,还热衷于参…

搭建hadoop高可用集群(二)

搭建hadoop高可用集群(一)配置hadoophadoop-env.shworkerscore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml/etc/profile拷贝集群首次启动1、先启动zk集群(自动化脚本)2、在hadoop151,hadoop152,hadoop153启动JournalNode…

【Kubernetes】【八】Namespace和Pod

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

java ssm自习室选座预约系统开发springmvc

人工管理显然已无法应对时代的变化,而自习室选座预约系统开发能很好地解决这一问题,既能提高人力物力,又能提高预约选座的知名度,取代人工管理是必然趋势。 本自习室选座预约系统开发以SSM作为框架,JSP技术&#xff0c…

昇腾CANN算子开发揭秘

开发者在利用昇腾硬件进行神经网络模型训练或者推理的过程中,可能会遇到以下场景:1、训练场景下,将第三方框架(例如TensorFlow、PyTorch等)的网络训练脚本迁移到昇腾AI处理器时遇到了不支持的算子。2、推理场景下&…

buu [WUSTCTF2020]大数计算 1

题目描述: 题目分析: part1:直接用 阶乘计算器,得出答案38609695part2:python代码,得出答案:67358675 print(520**13142333**666)part3:直接搜索宇宙终极问题,得到以下知识: 题目就是要我们给…