【技术实现步骤摘要】
基于GitLab的小规模团队软件开发者工作量度量方法
[0001]本专利技术涉及属于软件工程领域,具体的说是涉及一种基于GitLab的小规模团队软件开发者工作量度量方法。
技术介绍
[0002]在很多高校的程序设计实践课程中,要求学生以3至5人为一组进行软件开发,以模拟软件开发人员在实际生产环境中的团队合作。但目前尚没有针对小规模团队软件的质量度量以及开发者贡献度的度量方法,对整体程序质量和每个开发者工作量的评价只能依靠授课教师的主观感受和经验。
[0003]除了使用传统的人工判分外,另一种方法是对学生开发过程中产生的数据进行收集和分析,如代码资源库、日志文件等,扫描这类资源并实现自动判分。这种方法通常要求学生团队在他们的开发中使用支持协作编码的版本控制系统(Version Control System,VCS)。授课教师可以通过VCS收集有关学生如何与这些平台互动以及他们正在做的工作的数据。目前,已有研究将GitLab、数据挖掘技术等平台引入教学领域,研究学生行为。Sukru Eraslan等人将GitLab指标融入教学活动,验证了在教学环境中衡量开发者贡献的可行性,但他们选择的指标相对简单,无法全面衡量开发者的工作量。
[0004]在软件工程领域,传统的开发模式中,开发人员的工作量主要是根据他们生成的源代码的规模来计算的,即代码行(Line of Code,LOC)测量方法。但这种方法检测指标过于单一,不能很好地衡量开发者工作量。随着开源软件和开源社区的发展,研究人员依据开源软件的协作开发特点,以 ...
【技术保护点】
【技术特征摘要】
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
...
【专利技术属性】
技术研发人员:刘婧雯,韩崇,顾宇昊,薛景,孙力娟,郭剑,
申请(专利权)人:南京邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。