软件研发过程中,项目管理工具应该如何选择?

news2024/11/15 10:53:40

本文作者:极狐GitLab 资深解决方案架构师 尹学峰

许多企业依旧在用老旧的方式,如Excel离线表格进行项目管理。表格无法简介的呈现出项目的任务分解、完成进度、任务类别等多种项目管理过程中必备的要求,更无法实现与企业员工的日常即时通信系统的打通。往往导致项目管理与项目实际情况相去甚远。

为此,诞生了许多专业的项目管理软件。不同行业类型、不同的技术水平适用于不同的项目管理软件。

不同行业的倾向性

通用型传统行业

建议使用Jira、Ones、PingCode、禅道、Redmine、TAPD、Polarion等工具。其中Jira是目前较为主流的项目管理工具,用户基础众多,遗憾的是,Jira目前在国内没有技术支持团队,选用Jira需要承担较大的运维风险。而后者皆为国产的商业化项目管理软件,可以很好的替代Jira。这几款工具的典型视图如下:

图示:Jira典型视图

图示:Ones典型视图

图示:PingCode典型视图

图示:禅道典型视图

图示:TAPD典型视图

通用型高新技术行业

如果企业内项目管理人员大部分具有开发背景,且项目分解后的工作内容主要为由程序员进行代码编写工作完成的话,那么建议使用极狐GitLab进行项目管理。项目管理与代码开发在同一个平台完成,进而可以直观、零延迟地反应项目真实进度。下面对如何使用极狐GitLab进行项目管理加以阐述:

极狐GitLab支持敏捷开发管理体系,它用群组、子群组和项目来分别对应项目、子项目和代码仓,通过epic、子 epic 和 issue 来对应原始需求的任务、子任务和具体开发工作,这是项目管理的第一步。

图示:极狐GitLab的敏捷开发管理体系

产品经理创建原始需求后,和研发人员一起细化需求,并基于 invest 原则拆分需求。首先明确所有需求,撰写具体的 user story。(注:参考epic实例 Browser-based scanner for DAST )

图示:史诗Epic 原始需求拆分与规划

撰写完成后,如果大家有其他意见,可以以评论的方式写在该 issue 下,然后进行讨论,直到需求明确。极狐GitLab 以 issue 驱动,即无论是开发的任务、开发的需求还是 bug 缺陷,一律都用 issue 进行管理。

图示:议题Issue 用户故事与人员指派

撰写完成后,如果大家有其他意见,可以以评论的方式写在该 issue 下,然后进行讨论,直到需求明确。极狐GitLab 以 issue 驱动,即无论是开发的任务、开发的需求还是 bug 缺陷,一律都用 issue 进行管理。

图示:议题Issue 用户故事与人员指派

随着组织发展,issue 会越来越多,极狐GitLab 以一种灵活的自定义方式去打上不同的 Label,来区分不同 issue。Lable 是多级式的,第一级是一个 type,它决定了该 issue 是一个 bug、功能还是 QA 等。当打上第一级 Label 后,还需要打上第二级甚至第三级,比如说这个 bug 是性能问题、安全问题,还是来自一个手机端等等,可以自由精准地定义 issue。

图示:标记Label 区分议题类型

有了 Label 区分还不够,对研发人员来说,需要一个视角去看这些 issue。研发团队可以通过看板的方式进行 issue 管理,看板其实就是不同视角的视图。企业内,研发团队、测试团队还有产品团队都应该有属于自己的看板。产品团队关心的是任务的分配,所以有一张以研发工程师为视角的看板,比如张三在做需求A,李四在做需求B,这些都有一张看板;此外还有一张工作流看板,展示需求进行到什么阶段。对于测试人员来说,只需要看到相关 bug,不需要管在做什么,当然也可能会看一下看板,可以根据不同团队的职责进行划分。

图示:看板Board 自定义议题视图

如果用户不清楚 issue 的提交方式,会导致 issue 管理困难。例如:

  • 当用户提交 issue 后,没有分配人员来跟进,那它就被搁置了;
  • 或者用户不清楚该打上什么样的标记,是 bug 还是功能,导致 issue 分类混乱。

使用triage 机器人可以轻松解决这些问题。当用户提交了一个 issue 后,这个行为被机器人捕获到,它会立即在这个 issue 下添加一条评论,并且发邮件告知创建人应该打上 type。当用户打上 type 后,机器人又会随机从测试人员中选择一位,把他加到这个 issue 的指派人里,跟进这个 issue。通过这种方式可以很好地把 issue 管理起来。

图示:机器人Triage 自动处理Issue/MR

在项目之初和完成之后,可以使用里程碑来对项目进行规划和回顾。以下图极狐GitLab 15.1 的燃尽图为例:

图示:里程碑Milestone 迭代规划与回顾

不过,这个燃尽图并不是理想的燃尽图,因为它并不贴合参考线。在整个迭代周期的第一周,研发人员开始处理需求的时候,会发现有些需求描述得不是很清楚,导致评估内容增加,或者说有一些新的需求会引进来,所以这个曲线在第一周的时候甚至有点上扬。前两周集中进行开发,这时并没有开始大规模测试,所以曲线比较平缓。两周后,主要功能都完成测试,开始介入大规模测试,这时又会发现一些 bug,所以曲线又有一些向上的波动。两、三周之后,这个曲线开始急剧下降。

汽车行业

当然,如果是汽车行业关注V模型,可以考虑MappingSpace这样的行业化工具,其针对汽车行业独创性的开发了很多行业化的工具,方便企业以更优雅的方式工作同时,也可以更方便的通过特定的行业认证。

图示:MappingSpace对V模型的支持示意

更多请阅读MappingSpace官方文档。

图示:MappingSpace对V模型的支持实际效果

总结

项目管理工具的使用并无绝对的排他性,在某些场景下搭配使用可以起到更好的效果。比如极狐GitLab的项目管理工具不能够满足一些特定的需求时,或者当参与项目管理的人员种非技术人员和程序员人数占比旗鼓相当时,此时面临的选择会有多种:

  • ❌ 迁就非技术人员。仅仅使用与代码管理孤立的项目管理工具(注:下图中蓝色部分),会导致项目管理和代码管理的严重割裂,即,项目管理视图下无法直接提现代码开发的工作进度。
  • ❌ 迁就程序员。仅仅使用极狐GitLab作为项目管理工具(注:下图中橙色部分),非技术人员使用门槛相对较高,甚至产生排斥心理。
  • ✅ 各取所长,互补共生。把项目管理中的不涉及代码开发工作的宏观需求放在独立的项目管理工具中,而与代码开发强相关的技术需求,则由极狐GitLab管理。

图示:典型的代码强相关开发过程记录

非技术人员无需知道技术实现细节,一般程序员也无需了解宏观的非技术内容。二者之间建立沟通的桥梁则由技术主管负责:

  • 根据橙色完成状态及时更新蓝色状态。
  • 根绝蓝色新需求,分解并创建技术实现。

图示:项目管理工具的互补共生

当然,第三方项目管理工具如Jira也可以与极狐GitLab集成。集成完成后,只要Commit Message或者MR Description中包含对应的Jira Issue ID,下图所示即为MKP-2,则会自动在Jira侧建立超链接。从而实现需求与开发过程的之间的映射。

图示:极狐GitLab与Jira集成效果

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

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

相关文章

MATLAB - 加载预定义的机器人模型

系列文章目录 前言 一、 要快速访问常见的机器人模型,可使用 loadrobot 功能,该功能可加载市售的机器人模型,如 Universal Robots™ UR10 cobot、Boston Dynamics™ Atlas 人形机器人和 KINOVA™ Gen 3 机械手。探索如何生成关节配置并与机器…

day02_计算机常识丶第一个程序丶注释丶关键字丶标识符

计算机常识 计算机如何存储数据 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制,是人为定义的带进位的计数方法 实例: // 在java 中 可以使用不同…

蓝桥杯备赛day02 -- 算法训练题 拿金币Java

目录 题目: 问题描述 输入格式 输出格式 解题过程 第一步 定义dp数组 第二步 确定 dp 数组递推公式 第三步 dp数组的初始化 第四步 dp数组的遍历顺序 第五步 举例说明 报错:内存超限 用dp数组去存储位置上的金币 dp数组从二维降为一维 收获&a…

如何在CentOS 7 中搭建Python 3.0 环境

1、下载 通过https://www.python.org/ftp/python/下载Python安装包,这里下载Python-3.10.9.tgz; 2、上传 借助MobaXterm等工具将Python安装包上传至/opt目录; 3、解压 将JDK压缩文件解压至/opt目录:tar -xvf /opt/Python-3.1…

idea设置编辑器背景颜色

文章目录 一、Ided常用工具栏显示二、更改idea主题设置三、设置代码编辑器背景颜色为豆沙绿四、设置新项目 默认Jdk配置、maven配置1、settings for new projects2、structre for new projects 五、修改代码中注释的字体颜色六、设置编辑器字体大小七、文件编码的设置(可以设置…

【网络安全】【密码学】【北京航空航天大学】实验一、数论基础(上)【C语言和Java实现】

实验一、数论基础(上) 一、实验目的 1、通过本次实验,熟悉相关的编程环境,为后续的实验做好铺垫; 2、回顾数论学科中的重要基本算法,并加深对其的理解,为本学期密码学理论及实验课程打下良好…

Python - 深夜数据结构与算法之 DP 串讲

目录 一.引言 二.DP 知识点回顾 1.递归 2.分治 3.动态规划 三.DP 经典题目回顾 1.Climb-Stairs [70] 2.Unique-Paths [62] 3.House-Robber [198] 4.Min-Path-Sum [64] 5.Best-Time-Sell-Stock [121] 6.Min-Cost-Climb [746] 7.Edit-Distance [72] 8.Longest-Sub-…

Android PendingIntent 闪退

先来给大家推荐一个我日常会使用到的图片高清处理在线工具,主要是免费,直接白嫖 。 有时候我看到一张图片感觉很不错,但是图片清晰度不合我意,就想有没有什么工具可以处理让其更清晰, 网上随便搜下就能找到&#xff…

C++设计模式(李建忠)笔记1

C设计模式(李建忠) 本文是学习笔记,如有侵权,请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT:https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 文章目录 C设计模…

编译原理1.1习题 语言处理器

图源:文心一言 编译原理习题整理~🥝🥝 作为初学者的我,这些习题主要用于自我巩固。由于是自学,答案难免有误,非常欢迎各位小伙伴指正与讨论!👏💡 第1版:自…

目标检测-One Stage-YOLOv7

文章目录 前言一、YOLOv7的不同版本二、YOLOv7的网络结构二、YOLOv7的创新点三、创新点的详细解读ELAN和E-ELANBoF训练技巧计划型重参化卷积辅助训练模块标签分配Lead head guided label assignerCoarse-to-fine lead head guided label assigner 基于级联模型的复合缩放方法 总…

开发知识点-JAVA-springboot

springboot springbootConfiguration注解的底层核心原理Bean注解的底层核心原理 springboot Configuration注解的底层核心原理 https://www.bilibili.com/video/BV1rq4y1E7gK/?spm_id_from333.999.0.0&vd_sourcef21773b7086456ae21a58a6cc59023be spring.io 全家桶 24…

【Emgu CV教程】5.4、几何变换之图像翻转

今天讲解的两个函数,可以实现以下样式的翻转。 水平翻转:将图像沿Y轴(图像最左侧垂直边缘)翻转的操作。原始图像中位于左侧的内容将移动到目标图像的右侧,原始图像中位于右侧的内容将移动到目标图像的左侧。垂直翻转:将图像沿X轴…

智能小程序小部件(Widget)导航、地图、画布等组件,以及开放能力、原生组件说明

智能小程序小部件(Widget)导航、地图、画布等组件,以及开放能力、原生组件说明。 导航组件 navigator 页面链接,控制小程序的跳转。navigator 子节点的背景色应为透明色。 属性说明 属性名类型默认值必填说明urlstring是跳转地址deltanumber1否当 …

用Spark在大数据平台DataBricks轻松处理数据

Apache Spark是一个强大的开源分布式计算系统,专为大规模数据处理而设计。而DataBricks则提供了一个基于云的环境,使得在Spark上处理数据变得更加高效和便捷。本文将介绍如何在DataBricks平台上使用Spark轻松处理大数据。DataBricks是一个基于云的大数据…

8.临床预测模型验证——交叉验证/Bootstrap法

基本概念 交叉验证: 将一定比例的数据挑选出来作为训练集,将其余未选中的样本作为测试集,先在训练集中构建模型,再在测试集中做预测。 内部验证:手动将样本随机分为训练集和测试集,先在训练集中构建模型…

MySQL面试题 | 11.精选MySQL面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

vue2 pdfjs-2.8.335-dist pdf文件在线预览功能

1、首先先将 pdfjs-2.8.335-dist 文件夹从网上搜索下载,复制到public文件夹下. 2、在components下新建组件PdfViewer.vue文件 3、在el-upload 中调用 pdf-viewer 组件 4、在el-upload 中的 on-preview方法中加上对应的src路径 internalPreview(file) { //判断需要…

【Python】箱型图和热图绘制详解和示例

箱型图(Box Plot)和热图(Heatmap)是两种常用的数据可视化工具,它们各自有着不同的特点和用途。在写总结和文献时对数据的表达更加直观,本文对这两种图像的绘制进行详解和示例。 箱型图由一组数据的最小值、…

中国1981-2023年逐年每15天8km植被指数数据集

摘要 中国1981-2023年逐年每15天8km植被指数数据集来源于GIMMS NDVI数据,包括了1981年7月-2023年12月的长时间序列逐年每15天植被指数变化,格式为arcgis grid格式,投影为WGS84,其时间分辨率是15天,空间分辨…