90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程
本文来自:
彭亮 极狐(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 不断进化的同时,我们也在帮助越来越多的来自千行百业的客户落地敏捷开发,成就精英效能组织。
相关文章:
90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程
本文来自: 彭亮 极狐(GitLab) 高级产品经理 毛超 极狐(GitLab) 研发工程师 极狐(GitLab) 市场部内容团队 “敏捷” 是指能够驾驭变化,保持组织竞争优势的一种能力。自 2001 年《敏捷宣言》以来,敏捷及敏捷开发理念逐渐席卷全球。中国信通院《…...
LeetCode-257. 二叉树的所有路径
目录题目分析递归法题目来源 257. 二叉树的所有路径 题目分析 前序遍历以及回溯的过程如图: 递归法 1.递归函数参数以及返回值 要传入根节点,记录每一条路径的path,和存放结果集的result,这里递归不需要返回值,代…...
测试用例该怎么设计?—— 日常加更篇(下)
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…...
Java基础:接口
1.接口的概念 当不是所有子类, 而是多个子类都包含一个方法时, 为了代码书写规范性, 可以用自定义的接口来统一该方法的书写规范. 所以接口可以看作是一种书写规则. 接口是对行为的抽象 抽象类一般是书写在父类当中, 接口是单独书写的, 不是一种类 2.接口的定义和使用 3.接口…...
vuex基础入门:uniapp实现用户登录授权实战
1.背景 vuex是数据共享方案之一,本文以微信小程序登录授权为例介绍一下vuex常用属性state、getters、mutations、actions. 2.基于uniapp实现微信小程序登录授权流程 1.凡是需要用户登录授权信息的页面创建时created方法中需要判断用户是否登录,需要使用本地缓存的token调用服务…...
Windows系统从权限维持角度进行应急响应
一、基本介绍 红队攻击者在对目标进行渗透利用后通常都会进行权限维持,以达到持续利用的目的。而作为防守方进行应急响应时,应该如何与技术高超(jiaohuajianzha)的攻击者斗智斗勇呢?或许可以通过本文可以找到答案。以…...
什么是DNS解析?如何提升DNS解析安全?
DNS解析是保障网站正常运行的一项重要服务,DNS解析出现故障,就会导致网站无法被访问或者被劫持到其他的站点,对业务正常开展造成很大影响,因此网站管理人员要高度关注DNS解析的安全,才能确保网站的正常运转,…...
电路学习笔记
电源部分 2s锂电池 6.4v-8.4v INA180A2IDBVR 电流检测放大器 OUT ADC1_CH0 to ESP32 可能功能:电源电流监测 稳压/电压监测 OUT ADC1_CH1 to ESP32 降压至2.046v-2.686v并通过电容保持稳定 可能功能:降压模块,电压监测 LDO ASM1117-3.3 低压差线性…...
C# 数据结构
目录 一、介绍 二、数组 三、List(列表) 四、Dictionary(字典) 五、Queue(队列) 六、Stack(栈) 七、Hashtable(哈希表) 结束 一、介绍 数据结构是计…...
powerjob的worker启动,研究完了这块代码之后我发现了,代码就是现实中我们码农的真实写照
这是一篇让你受益匪浅的文章,代码即使人生。 worker启动比server启动要复杂一些,毕竟worker是要实际干活的,工欲善其事必先利其器,所以需要准备的工具还是不能少的,server对于powerjob来说,只是一个调度用的…...
配置Qt Creator
前言 为了使Qt Creator更像您最喜欢的代码编辑器或IDE,您可以更改键盘快捷键、配色方案、通用高亮显示、代码片段和版本控制系统的设置。 检查生成和运行设置 Qt Creator是一个集成开发环境(IDE),可以用来开发Qt应用程序。虽然您可以使用Qt Installer…...
C++-类和对象(下)
C-类和对象(下)一,const成员函数二,再谈构造函数1,初始化列表2,explicit关键字三,static成员四,友元(friend)1,全局函数做友元2,类做友…...
什么是仓库管理?
仓库管理包括仓库日常运营所触及的准绳和流程。从较高的层次上讲,这包括接纳和组织仓库空间、布置劳动力、管理库存和完成订单。放大来看,你会发现有效的仓库管理触及到优化和集成这些过程中的每一个,以确保仓库操作的一切方面协同工作&#…...
对话系统学习概述(仅够参考)
对话系统(仅够参考) 目录对话系统(仅够参考)背景类人对话系统的关键特征1、知识运用2、个性体现3、情感识别与表达数据集评价方式评价的一些指标训练模型需要的资源任务型对话系统预训练最新研究进展参考文献背景 对话系统一般包括…...
免费CRM客户管理系统真的存在吗?不仅有,还有5个!
免费CRM客户管理系统真的存在吗?当然有! 说到CRM客户管理系统,相信很多企业并不陌生,是因为CRM客户管理系统已经成为大多数企业最不可或缺的工具。但是对于很多小微企业和个人用户来说,购买和实施CRM的成本仍然难以承…...
C#开发的OpenRA使用自定义字典的比较函数
C#开发的OpenRA使用自定义字典的比较函数 字典是一个常用的数据结构, 因为它采用键值对的方式来保存数据, 这样非常方便程序里进行数据一对一的映射。 比如通过文件名称查找到文件对象,又者通过socket对象找到缓冲区对象。 由于字典是采用HASH算法,所以它的查找时间是非常快…...
DHCP协议
DHCP协议 文章目录DHCP协议DHCP作用及特点DHCP服务IP分配的三种方式DHCP协议中的报文类型DHCP服务工作流程抓包参考动态主机配置协议 DHCP(Dynamic Host Configuration Protocol),提供了一种 插网即用的技术。DHCP是一个应用层协议。当我们将…...
C语言进阶——自定义类型:枚举、联合
🌇个人主页:_麦麦_ 📚今日名言:如果不去遍历世界,我们就不知道什么是我们精神和情感的寄托,但我们一旦遍历了世界,却发现我们再也无法回到那美好的地方去了。当我们开始寻求,我们就已…...
背景透明(opacity vs background)
最近在做项目的时候,遇到透明度的相关设置。 常用的背景透明设置可分为两种,分别是: 一是给background设置透明度。二是利用opacity属性。 在跳了一些坑之后,本人更推荐给background设置透明度,为什么呢?…...
华为OD机试 - 最小施肥机能效(Python)| 真题+思路+考点+代码+岗位
最小施肥机能效 题目 某农场主管理了一大片果园,fields[i]表示不同果林的面积,单位:( m 2 m^2 m2),现在要为所有的果林施肥且必须在 n 天之内完成,否则影响收成。 小布是果林的工作人员,他每次选择一片果林进行施肥,且一片果林施肥完...
vue2 使用 cesium 篇
vue2 使用 cesium 篇 今天好好写一篇哈,之前写的半死不活的。首先说明:这篇博文是我边做边写的,小白也是,实现效果会同时发布截图,如果没有实现也会说明,仅仅作为技术积累,选择性分享࿰…...
2023预测:PKI将受到企业重点关注
2023年,PKI作为关键业务将继续被主流企业关注,根据Keyfactor发布的报告显示,很多企业正努力实施PKI,而以下因素是影响企业决策的主要原因:1、66% 的企业正在其IT环境中部署更多的密钥和证书,而70%的企业表示…...
linux基本功系列之grep命令
文章目录前言一. grep命令介绍二. 语法格式及常用选项三. 参考案例3.1 搜索文件中以root开头的文件3.2 搜索文件中出现的root3.3 搜索除了匹配行之外的行3.4 匹配的部分使用颜色显示3.5 只输出文件中匹配到的地方3.6 输出包含匹配字符串的行,并显示所在的行数3.7 统…...
硬件设计——DDR
一、DDR简介 (1)DDRDouble Data Rate双倍速率同步动态随机存储器。严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。…...
最近你提前还贷了吗
最近你有想过提前还贷吗?以前,欠别人的是大爷,借别人钱的是孙子。现在好像反过来了呀,想还钱成了孙子。现在,各种银行以各种方式增加你提前还贷的难度。比如第一步,关闭app线上还款入口第二步,需…...
关于STM32常用的8种GPIO输入输出模式的理解
目录 GPIO共有8中输入输出模式,分别是:上拉输入、下拉输入、浮空输入、模拟输入、开漏输出、推挽输出、开漏复用输出、推挽复用输出 ,下面我们详细介绍以下上面的八种输入输出模式。 一、输入模式 (1)上拉输入&#x…...
vue - vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果
问题: 最近遇到一个问题,我们在企业微信中的 H5 项目中需要用到table表格(支持懒加载 上划加载数据)。但是他们在锁头、锁列的情况下,依旧会出现边界橡皮筋效果。就会显示的很奇怪。 什么是ios橡皮筋效果: 我们知道元素…...
webpack(高级)--创建自己的loader 同步loader 异步loader loader参数校验
webpack 创建自己的loader loader是用于对模块的源代码进行转换(处理) 我们使用过很多loader 比如css-loader style-loader babel-loader 我么如果想要自己创建一个loader 首先创建webpack环境 pnpm add webpack webpack-cli -D 之后创建loader模块…...
Assignment写作各个部分怎么衔接完美?
Assignment格式很简单,就只有四个部分,按着通用的套路来,发现也没什么难度。不过这4个部分自己需要衔接完美,下面就给大家分享一下写Assignment最简单的方法。 如果没有目录可以放在第一页的开头,用“标题字体”加重显…...
医疗器械实验室设计规划全了SICOLAB
一、通用型实验室医疗器械物理性能能检测中,有部分通用型试验,可覆盖不同产品检测,这些实验室需要重点考虑、设计。1、微粒检测室微粒检测室用于医疗器械产品微粒检测,包括微粒、落絮、药液滤除率等项目。微粒检测室要求为洁净室&…...
java web 做购物网站/网站优化师
倍压整流电路图(一)倍压整流,是把较低的交流电压,用耐压较低的整流二极管和电容器,“整”出一个较高的直流电压。在一些需用高电压、小电流的地方,常常使用倍压整流电路。倍压整流电路一般按输出电压是输入电压的多少倍࿰…...
如何做ps4游戏视频网站/太原做网站的
http://codeforces.com/problemset/problem/301/B 大意是这样的:从1点经过k点到达n点,开始出发的时间是极短的(0.X),其中途中点可以给予不同的time资源,不同点之间的距离是曼哈顿距离——|x1-x2||y1-y2|。问还需要多少时间能到达…...
网站开发难度和小程序开发难度/搜索引擎广告案例
一、Autoit 上传文件、1.常用语法- WinActivate("title") 聚焦到指定活动窗口- ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;- WinWait ( "title" , "窗口文本&qu…...
python怎么读/常州seo收费
linux commands - 一次性解压多个tar.gz文件 1 echo *.tar.gz | xargs -n 1 tar -zxvf list所有tar.gz文件,然后利用xargs将其作为参数传给tar命令。-n 1表示每次传一个参数。 xargs: https://www.cnblogs.com/wangqiguo/p/6464234.html 阅读目录 为什么要用xar…...
网站建设管理软件/推广app网站
前段时间看了《大型网站系统与Java中间件实践》这本书,了解到大型网站构架的演进,大致上来说也是单机走向分布式集群来分摊访问压力。书中提到了很多常见的场景,比如数据库方面,当压力变大时可以实现读写分离、分库分表等…...
wordpress twenty six/百度sem代运营
spinlock设计成了三层,第一层是接口,第二层raw实现层,第三层是CPU平台层。在第二层raw实现层提供了两个分支,分别是单CPU和多CPU(核)。第三层是不同CPU的锁操作实现。raw层除了调用锁操作来保护临界资源外&…...