基于GitLab的小规模团队软件开发者工作量度量方法技术

技术编号:34522451 阅读:14 留言:0更新日期:2022-08-13 21:12
本发明专利技术是一种基于GitLab的小规模团队软件开发者工作量度量方法,包括:步骤1:基于GitLab收集开发团队的软件源代码及开发过程数据;步骤2:扫描步骤1中commit提交数据及软件源代码,初步提取可直接测量指标;步骤3:根据步骤2获取到的可直接测量指标,计算不可直接测量指标;步骤4:根据步骤2和步骤3计算的指标建立数据表并计算开发者在每一项指标的得分,并计算最终加权得分,即为开发者工作量。本发明专利技术提出的方法从软件规模、源代码质量和协作开发中的工作量三个方面衡量团队中每个开发成员的工作量,同时使用提交类别中的合并指标衡量团队组长承担的额外工作量。衡量团队组长承担的额外工作量。

【技术实现步骤摘要】
基于GitLab的小规模团队软件开发者工作量度量方法


[0001]本专利技术涉及属于软件工程领域,具体的说是涉及一种基于GitLab的小规模团队软件开发者工作量度量方法。

技术介绍

[0002]在很多高校的程序设计实践课程中,要求学生以3至5人为一组进行软件开发,以模拟软件开发人员在实际生产环境中的团队合作。但目前尚没有针对小规模团队软件的质量度量以及开发者贡献度的度量方法,对整体程序质量和每个开发者工作量的评价只能依靠授课教师的主观感受和经验。
[0003]除了使用传统的人工判分外,另一种方法是对学生开发过程中产生的数据进行收集和分析,如代码资源库、日志文件等,扫描这类资源并实现自动判分。这种方法通常要求学生团队在他们的开发中使用支持协作编码的版本控制系统(Version Control System,VCS)。授课教师可以通过VCS收集有关学生如何与这些平台互动以及他们正在做的工作的数据。目前,已有研究将GitLab、数据挖掘技术等平台引入教学领域,研究学生行为。Sukru Eraslan等人将GitLab指标融入教学活动,验证了在教学环境中衡量开发者贡献的可行性,但他们选择的指标相对简单,无法全面衡量开发者的工作量。
[0004]在软件工程领域,传统的开发模式中,开发人员的工作量主要是根据他们生成的源代码的规模来计算的,即代码行(Line of Code,LOC)测量方法。但这种方法检测指标过于单一,不能很好地衡量开发者工作量。随着开源软件和开源社区的发展,研究人员依据开源软件的协作开发特点,以及开源社区资源库(如版本控制系统和错误跟踪数据库),提出了更符合开源开发特点的开发者贡献评价模型。但这些模型较为复杂,指标数众多且测量困难,应用于高校内小规模学生团队时测量结果并不准确。

技术实现思路

[0005]为了解决上述问题,本专利技术提出了一种基于GitLab的小规模团队软件开发者工作量度量方法,通过收集软件源代码及团队开发过程产生的数据,并计算23个软件指标从软件规模、源代码质量及合作中的工作量以全面衡量团队中每个开发成员的工作量,以克服现有方法中难以定量统计小规模团队中开发者工作量的问题。
[0006]为实现上述目的,本专利技术提出一种基于GitLab收集开发数据,并依据针对小规模开发团队的指标体系计算开发人员工作量的方法。该度量方法包括如下步骤:
[0007]步骤1:基于GitLab收集开发团队的软件源代码及开发过程数据:开发团队在同一个软件开发项目中,使用各自的账号上传commit提交数据,团队组长除了提交代码外,还需要承担查看队员提交的commit、解决冲突并进行合并操作。收集的开发过程数据包括每个开发成员的提交次数、每次commit中增加的代码行数、每次commit中删除的代码行数以及组长的合并操作次数。对于收集的软件源代码需要根据开发者进行归属分类,将每个开发者生产的代码划分到个人源代码文件中。
[0008]步骤2:扫描步骤1中commit提交数据及软件源代码,初步提取可直接测量指标。考虑工作分配和非代码层面,可直接测量指标包括提交指标:提交次数(Number of Commits,NC)、平均每次提交增加代码行数(Average lines of code added per commit,AAPC)、平均每次提交删除代码行数(Average lines of code deleted per commit,ADPC)、合并操作次数(Number of Merge operations,NM);代码行指标(Lines of Code,LOC)从从代码行数衡量软件规模层面考虑:可执行代码行数(Total Lines of Executable Code,TLOC)、空行数(Empty Lines of Code,ELOC)、注释行数(Comment lines of code,CLOC);大小指标为从软件结构衡量软件规模考虑:模块总数(Total Number of Modules,NMD)、文档数(Number of Documents,ND)、类的个数(Number of Classes,NCA)、平均每个类的方法个数(Average number of functions per class,AFPC)、静态属性数(Number of Static Attributes,NSA)、类外函数总数(Total number of methods,NMT)、全局变量数(Number of global variables,NGV)。
[0009]提交类别指标用于衡量开发者在协作开发中的工作量,以及开发团队组长的额外工作量,具体的包括提交次数、平均每次提交增加代码行数、平均每次提交删除代码行数、合并操作次数;所述平均每次提交增加代码行数为所述开发人员所有提交中增加的代码总行数,所述平均每次提交删除代码行数为所述开发人员所有提交中删除的代码总行数;
[0010]大小类别指标用于衡量开发者在软件规模大小方面的工作量,具体的主要包括模块总数、文档数、类的个数、平均每个类的方法个数、所述静态属性数、类外函数总数、全局变量数;所述模块总数为所述开发者提交中所有可执行文件总数,所述文档数为所述开发者提交中所有文档总数,所述类的个数为所述开发者提交中所有类的个数,所述平均每个类的方法个数为所述开发者提交中所有类中方法数,所述静态属性数为该开发者提交中所有静态属性个数,所述类外函数总数为所述开发者提交中所有类外函数个数,所述全局变量数为所述开发者提交中所有全局变量总数;
[0011]代码行指标包括:可执行代码行数、空行数、注释行数,所述可执行代码行数为所述开发者提交中所有可执行代码行数,所述空行数为所述开发者提交中所有空行总数,所述注释行数为所述开发者提交中所有注释行总数。
[0012]本专利技术提出的开发者工作量计算方法针对使用面向对象程序设计实现的软件项目,若使用面向过程程序设计,则NCA、AFPC指标不需要测量,也不参与最终工作量的综合评价值计算。
[0013]步骤3:根据步骤2获取到的可直接测量指标,计算不可直接测量指标。不可直接测量指标包括复杂度指标,从复杂度衡量源代码质量层面,复杂指标包括:McCabe圈复杂度(McCabe's Cyclomatic Complexity,MCC)、类复杂度(Weighted methods per class,WMC)、方法内聚度(Lack of Cohesion in Method metric,LCOM)、嵌套块深度(Nested Block Depth,NBD);继承指标:从继承衡量源代码质量层面,继承指标包括:子类数(Number of Children,NOC)、继承树深度(Depth of Inheritance Tree,DIT);耦合指标:从耦合衡量源代码质量层面,耦合指标包括:传入耦合(Afferent Coupling,AC)、传出耦合(Efferent Coupling,EC)、不稳定指数(Insta本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于GitLab的小规模团队软件开发者工作量度量方法,其特征在于:所述度量方法包括如下步骤:步骤1:基于GitLab收集开发团队的软件源代码及开发过程数据:开发团队在同一个软件开发项目中,使用各自的账号上传commit提交数据,对于收集的软件源代码根据开发者进行归属分类,将每个开发者生产的代码划分到个人源代码文件中;步骤2:扫描步骤1中commit提交数据及软件源代码,初步提取可直接测量指标;步骤3:根据步骤2获取到的可直接测量指标,计算不可直接测量指标;步骤4:根据步骤2和步骤3计算的指标建立数据表并计算开发者在每一项指标的得分,并计算最终加权得分,即为开发者工作量。2.根据权利要求1所述基于GitLab的小规模团队软件开发者工作量度量方法,其特征在于:步骤2中可直接测量指标包括提交类别指标、大小类别指标以及代码行指标,其中:提交类别指标用于衡量开发者在协作开发中的工作量,以及开发团队组长的额外工作量,具体的包括提交次数、平均每次提交增加代码行数、平均每次提交删除代码行数、合并操作次数;所述平均每次提交增加代码行数为所述开发人员所有提交中增加的代码总行数,所述平均每次提交删除代码行数为所述开发人员所有提交中删除的代码总行数;大小类别指标用于衡量开发者在软件规模大小方面的工作量,具体的主要包括模块总数、文档数、类的个数、平均每个类的方法个数、静态属性数、类外函数总数、全局变量数;所述模块总数为所述开发者提交中所有可执行文件总数,所述文档数为所述开发者提交中所有文档总数,所述类的个数为所述开发者提交中所有类的个数,所述平均每个类的方法个数为所述开发者提交中所有类中方法数,所述静态属性数为该开发者提交中所有静态属性个数,所述类外函数总数为所述开发者提交中所有类外函数个数,所述全局变量数为所述开发者提交中所有全局变量总数;代码行指标包括:可执行代码行数、空行数、注释行数,所述可执行代码行数为所述开发者提交中所有可执行代码行数,所述空行数为所述开发者提交中所有空行总数,所述注释行数为所述开发者提交中所有注释行总数。3.根据权利要求2所述基于GitLab的小规模团队软件开发者工作量度量方法,其特征在于:所述步骤2具体包括如下步骤:步骤2

1:收集开发者的所有历史commit提交数据,将每次提交中增加的源代码划分到该开发者个人源代码文件中,每次提交中删除的代码在个人源代码文件中删除;步骤2

2:统计以下指标:提交次数、每次提交增加代码行数、每次提交删除代码行数、模块总数、文档数,若该开发者为具有合并分支权限的项目组长,则还需统计合并操作次数,否则合并操作次数值为0;步骤2

3:重复步骤2

1、步骤2

2完成该项目中其他开发者数据收集。4.根据权利要求2所述基于GitLab的小规模团队软件开发者工作量度量方法,其特征在于:所述步骤3中不可直接测量指标包括复杂度指标、继承指标以及耦合指标,其中,复杂度指标包括McCabe圈复杂度、类复杂度、方法内聚度、嵌套块深度,所述McCabe圈复杂度MCC=E

N+2,E是控制流图G中边的条数,N是结点数,所述类复杂度其中n表示该类中有n个方法,MCC
i
为第i个方法的McCabe圈复杂度,所述方法内聚度为在类中不共享实例变量的方法对的数量,所述嵌套块深度为一条路径中经
历的分支和循环语句数;继承指标包括子类数、继承树深度,所述子类数为所述开发者产生源代码中所有子类个数,所述继承树深度为所述从节点到继承树根的最大长度;耦合指标包括传入耦合、传出耦合、不稳定指数,所述传入耦合为依赖于特定模块的模块数量,所述传出耦合为某个模块所依赖的模块数量,所述不稳定指数定义为AC指标为依赖于特定函数的函数数量,EC指标为某个函数所依赖的函数数量。5.根据权利要求4所述基于GitLab的小规模团队软件开发者工作量度量方法,其特征在于:所述步骤3具体包括如下步骤:步骤3
...

【专利技术属性】
技术研发人员:刘婧雯韩崇顾宇昊薛景孙力娟郭剑
申请(专利权)人:南京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1