首页 > 其他分享 >一文告诉你为什么代码提交要关联需求和任务信息丨IDCF

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF

时间:2023-08-07 11:02:22浏览次数:39  
标签:需求 一文 代码 信息 关联 任务 提交 IDCF

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_提交代码

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_git_02

本文从代码提交关联需求任务的功能说起,探讨了其意义、功能扩展以及对研发效能提升带来的收益。

记得原来有一次听到一个开发同学抱怨说为啥每次Commit都必须要填写commit message呢?他觉得有些浪费时间,因此想出了各种办法来应对,比如输入一个句点或复制粘贴上个commit message等。这种一时偷懒的做法,却会给其他合作开发的伙伴带来很多烦恼,这些不知所云的commmit message

不仅不能很好代表每次代码提交的用途,还会成为垃圾信息给团队带来干扰。

git commit -m “.”

不过现在很多开发团队已经通过约定代码提交规范来约束提交信息的规范化,比如必须包含类型(新功能、修复缺陷或者增加测试等)和主题(提交代码的简短描述)信息。

git commit -m “feature:用户查询接口开发”

可以看到在代码提交信息中增加目的描述,是为了使代码的作用通过文字显式地展示出来。比如一看提交信息就知道这段代码是为了开发某个新的需求功能,而不用去通过逐行浏览代码才能了解其含义。更进一步的做法是,直接使代码的提交与需求、任务或者缺陷等建立关联。拿GitHub举例,需求和缺陷都可以通过issue来进行管理,而只每次在代码提交信息中输入issue的ID就可以了,如下:

git commit -m “#10 issueid”

还可以通过在commit信息中输入close等指令来实现issue状态的修改,如下:

git commit -m “close #10 issueid”

直接通过git命令就实现了issue的关闭:

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_数据_03

为什么代码提交要关联需求和任务信息

看到这里,我想你可能要问:我为什么要每次提交代码的时候,要费劲地先去查询下IssueID呢,这样做能带来什么收益呢?下面我就来给你捋一捋:

1.研发过程资产的可度量

代码是一种很重要的研发过程资产,而其原生状态又是一种非结构化的数据信息,无法很直观的与管理者所关注的项目或者需求关联起来。如果没有好的数据管理和度量机制,管理者角度就只能通过会议和沟通等手段从一线工程师那里获取一些主观的描述。如需求和任务的工作量大小、细化到需求和任务维度的代码质量和风险等数据,这些数据在做项目复盘、资源评估、质量和风险评估等环节都是非常重要的参考依据。

通过提交信息中关联需求和任务ID,就可以得到以下的数据:

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_数据_04

以上是基础数据的汇总计算,还可以引入需求和任务维度的代码复杂度、代码当量和测试覆盖率等数据。

2.精细化的代码质量和风险管控

质量和风险的管控都是需要投入成本的,而通过实现代码和需求及任务的关联,可以设计更细粒度的质量和风险管控策略,在早期的质量预防、中期的风险发现和后期的问题复盘都可以很大程度上减少成本投入。目前大家所说的精准化测试的方法就是基于此策略,设计测试策略时可以依据需求来划定代码变更范围,再针对一定范围内的代码变更来设计高覆盖率的测试策略,从而避免由于全量执行测试用例带来的高成本。

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_git_05

另外还可以把代码扫描、单元测试和代码评审等质量卡点与需求和任务的流转状态相关联,做到需求和任务维度的质量内建和测试左移。

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_提交代码_06


3.开发者视角的收益

如果你是一位一线工程师,看完以上两点收益,肯定会觉得这都是管理的诉求,那从工程师的视角来看又会有哪些收益呢?

  • 减少为了研发效能度量而做一些额外工作

研发效能度量,需要度量需求的在各个阶段的停留时长,比如开发时长,比较传统的做法是需要研发同学开始写代码的时候,在研发协同平台上更新下需求和任务的状态,写完了提交测试后再去更新状态。这些重复性的工作,还是需要占用不少时间的,那么通过需求任务和代码提交建立关联,就可以通过代码提交等事件来自动化触发需求和任务状态的流转,这样还能自动把对应的开始时间和结束时间都自动记录下来,从而便于高效和准确地开展研发效能度量。

  • 从代码为主的技术视角逐步扩展到关注需求价值的全局视角

由于管理者和业务方更关注需求价值和项目交付进度,而一线研发工程师往往更加关注技术细节,这样就容易造成管理者和业务视角获得的信息和工程师视角之间的割裂,比如作为研发leader为了紧急的项目或者需求焦虑不已,而作为一线工程师又各自在沉浸在自己的代码世界里不明所以。那么通过代码提交和需求任务建立关联,开发工程师关注代码本身的同时,还可以通过汇总代码仓库级或者版本所实现的需求价值和完成的开发任务,从而能够更加关注业务价值,通过技术视角和业务视角的结合,助推技术职业生涯的更好发展。

代码关联需求和任务的功能扩展

文章的前面只是介绍了从命令行提交代码的时候,如何与需求和任务信息建立关联。而要带来更多的收益,只有这个功能就不能完全满足了。完整的功能一般通过与协作工具的配合来完成,如Jira就实现需求/任务和开发分支的关联,还可以通过配置工作流来实现在线创建分支的同时触发需求/任务的状态变化(进入开发状态)。下图为需求/任务卡片详情页面的开发信息的展示,可以看到关联了一个开发分支,可以通过点击分支到代码库的分支详情页面。

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_git_07

“功能拓展建议:在需求/任务已经关联一个代码分支的前提下,可以通过规则设定实现该分支下的所有代码提交都自动关联,这样就不需要每个Commit信息里都填写需求和任务ID信息了。”

目前很多协同平台的做法是,除了实现除了提交信息和分支与需求/任务的关联,还可以关联代码库的合并请求。另外还可以实现需求/任务与测试过程资产的关联。

一文告诉你为什么代码提交要关联需求和任务信息丨IDCF_git_08

具体的实现方式有两种:一种是在协同平台的需求/任务卡片上通过手动操作来选择需要关联的信息,第二种是通过代码仓库和测试管理系统这样的三方工具平台主动上报关联的需求和任务信息。

结语

代码提交关联需求和任务的功能虽然不大,确实一个良好习惯的养成,在此基础上逐步实现更加丰富的代码过程资产与需求和任务的关联,从而为效能度量、质量和风险管控等提供更多的便利。研发效能提升包含两个层面,一个是单点任务的效能提升,如环境部署和测试等;另外一个就是不同角色成员之间的协同效能提升,而代码信息与需求任务信息的关联,就是通过过程数据的可视化使关注需求和任务的角色成员与关注代码的工程师实现更好的协同。


标签:需求,一文,代码,信息,关联,任务,提交,IDCF
From: https://blog.51cto.com/u_16100824/6991555

相关文章

  • C#/.NET/.NET Core优秀项目和框架每周精选(坑已挖,欢迎大家踊跃提交PR或者Issues中留言)
    前言注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯......
  • 为react项目添加开发/提交规范(前端工程化、eslint、prettier、husky、commitlint、sty
    因历史遗留原因,接手的项目没有代码提醒/格式化,包括eslint、pretttier,也没有commit提交校验,如husky、commitlint、stylelint,与其期待自己或者同事的代码写得完美无缺,不如通过一些工具来进行规范和约束。eslinteslint是一个代码校验工具,用来规范项目代码风格。初始化通过n......
  • utools插件生活小记今日提交发布「审核中,预计下周二通过」
     简介生活小记是一款集日常记事,待办,小工具等功能于一身,努力打造小而美的笔记类插件,希望大家会喜欢!功能:生活记事,可直接粘贴图片(小于2mb),列表可以导出笔记为html文件简单记录待办事项小工具:目前上了时间间隔、时间推算两个规划1、后续会完善现有功能,达到好用、易用2、......
  • (普塔道)究竟怎么样?一文告诉你答案PtahDAO是什么?
    大家都在推荐的PtahDAO(普塔道)究竟怎么样?一文告诉你答案作为一个热衷于探索新投资机会的个人投资者,我最近不断听到身边的朋友和投资圈的同行都在推崇一个名为PtahDAO(普塔道)的项目。出于好奇和对未来趋势的兴趣,我决定深入了解这个项目,亲身体验一下它究竟如何。在经过一段时间的研究和......
  • 一文弄懂什么是DNS、A记录、CNAME以及使用方法
    域名解析DNS简介域名解析(DomainNameSystem,DNS)是互联网中用于将人类可读的域名(例如www.example.com)转换为计算机可理解的IP地址(例如192.168.1.1)的系统。它充当了互联网上的一个“电话簿”,帮助将用户提供的域名映射到实际的网络地址,使得计算机能够找到并连接到相应的网络服务器。白......
  • 一文读懂监督学习、无监督学习、半监督学习、强化学习这四种深度学习方式
    一般说来,训练深度学习网络的方式主要有四种:监督、无监督、半监督和强化学习。在接下来的文章中,计算机视觉战队将逐个解释这些方法背后所蕴含的理论知识。除此之外,计算机视觉战队将分享文献中经常碰到的术语,并提供与数学相关的更多资源。监督学习(SupervisedLearning)监督学习是使用......
  • 华为开发者大会2023(HDC.Together)正式开启,一文带你了解全新鸿蒙世界
    (中国,东莞,2023年8月4日)2023年华为开发者大会(HDC.Together)今天正式开幕,华为发布HarmonyOS4、全新升级的鸿蒙开发套件、HarmonyOSNext开发者预览版本等一系列领先技术,为用户提供前所未有的革新体验,帮助开发者更高效地打造创新的智能终端和应用服务。华为常务董事、终端BGCEO、智能......
  • c volatile一文搞懂
    关键字volatile简单来说就两个作用:保证不被编译器优化例如重复的赋值volatileintvalue=10;value=10;value=10;volatile修饰后,一是这几个语句都会得到执行,二是顺序不会改变保证可见性这里可见性的意思是,在多线程的环境下,当一个线程对一个变量改变,另一个线程......
  • 探秘企业DevOps一体化平台建设终极形态丨IDCF
    笔者从事为企业提供研发效能改进解决方案相关工作十几年,为国内上百家企业提供过DevOps咨询及解决方案落地解决方案,涉及行业包括:金融、通信、制造、互联网、快销等多种行业。DevOps的核心是研发效能改进,效能的提升离不开强大工具的支撑,因此在DevOps如火如荼的今天,承载研发效能改进的......
  • 带你来吃瓜!Andy Pavlo教授带您一文回顾数据库的2022年
    <br>:::hljs-right编辑/翻译:宇亭校对:王学姣、李浩:::<br>本文是由数据库界知名专家AndyPavlo教授写的2022年数据库回顾文章,这个系列从去年开始,非常经典,也比较系统的整理了一下数据库界的大事件(当然,主要还是以国外的居多),StoneDB团队对本文进行了翻译,小编在一些链接部分加......