System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于代码提交分析的软件架构变化即时预测方法技术_技高网

基于代码提交分析的软件架构变化即时预测方法技术

技术编号:40710485 阅读:3 留言:0更新日期:2024-03-22 11:11
本发明专利技术提供一种基于代码提交分析的软件架构变化即时预测方法,对历史项目代码提交前后的源代码的软件架构进行恢复,并比较提交前后的软件架构;通过数据挖掘收集所述历史项目代码提交中的数据,并依据比较提交前后的软件架构的结果对所述数据进行筛选,筛选后的数据作为软件架构变化预测指标;对筛选后的数据打标签,并选择机器学习算法,建立并训练通过所述软件架构变化预测指标预测架构变化的预测模型;获取待预测项目代码提交中的软件架构变化预测指标,并输入训练好的预测模型中,得到预测结果。本发明专利技术能够从提交级别识别架构的更改且能够预测架构更改了多少,从而提高软件架构维护的效率。

【技术实现步骤摘要】

本专利技术涉及软件架构领域,特别涉及一种基于代码提交分析的软件架构变化即时预测方法


技术介绍

1、软件架构是软件系统的抽象,它对软件的生命周期产生至关重要的影响。随着软件系统的演化,它不断容纳各种修改,例如错误修复、功能添加、改进等。这通常会使软件架构逐渐与设计的架构有所不同,最终导致架构腐败的现象。架构腐败会导致架构元素难以维护或容易出现缺陷。因此,监控和管理架构衰退对于软件维护非常重要。

2、先前的研究表明,即使是几次提交也可能使架构发生变化。然而,在提交级别分析架构变化的工作很少。

3、关于架构变化的研究主要分为两类,基于恢复的架构变化研究和基于度量的架构变化研究。基于恢复的架构变化研究会选择软件架构恢复技术来恢复架构,并计算架构间的架构相似度来比较架构变化并检测架构衰退,但目前并没有聚焦到提交级别的基于恢复的架构级别研究。基于度量的架构变化研究则不恢复架构而是使用结构内聚和耦合指标来衡量架构变化。虽然在提交级别有学者进行了基于度量的架构变化研究,但使用结构内聚和耦合指标是从间接角度观察架构变化,相比于将架构直接恢复以探究架构变化,结果不够直观准确,并且目前几乎没有研究探究提交中的数据与架构变化的具体关系。


技术实现思路

1、本专利技术要解决的技术问题是:提供一种基于代码提交分析的软件架构变化即时预测方法,能够提高软件架构维护的效率。

2、本专利技术为解决上述技术问题所采取的技术方案为:一种基于代码提交分析的软件架构变化即时预测方法,p>

3、对历史项目代码提交前后的源代码的软件架构进行恢复,并比较提交前后的软件架构;

4、通过数据挖掘收集所述历史项目代码提交中的数据,并依据比较提交前后的软件架构的结果对所述数据进行筛选,筛选后的数据作为软件架构变化预测指标;

5、对所述筛选后的数据打标签,并选择机器学习算法,建立并训练通过所述软件架构变化预测指标预测架构变化的预测模型;

6、获取待预测项目代码提交中的软件架构变化预测指标,并输入训练好的预测模型中,得到预测结果,通过预测结果来观察软件架构的变化。

7、按上述方法,所述历史项目代码提交前后的源代码的软件架构,采用快速聚类算法fca进行恢复。

8、按上述方法,所述的比较提交前后的软件架构,具体为:

9、计算提交前后的软件架构之间的架构相似度度量的值,根据架构相似度度量的值来判断架构变化程度,架构相似度度量的值越大两个架构越相似。

10、按上述方法,所述的软件架构变化预测指标具体通过以下方式得到:

11、从所述的历史项目代码提交中,采用数据挖掘的方式得到数据;

12、将所述的数据与所述架构相似度度量进行相关性检验,选择与所述架构相似度度量相关性高的数据作为软件架构变化预测指标。

13、按上述方法,所述的数据包括规模相关数据、文件相关数据、开发者相关数据以及issue相关指标四类;

14、规模相关数据包括:修改的字符数、修改的代码行数以及修改的方法数;

15、文件相关数据包括:修改的子系统数,修改的目录数、修改的文件数、信息熵、增加或者减少的文件数、修改的文件在变更前的最大代码行数,文件修改的圈复杂度、修改文件的最大修改次数以及文件与上一次更改的平均时间间隔;

16、开发者相关数据包括:对该提交进行修改的开发者数量、提交该变更的开发者的经验数以及最近经验数;

17、issue相关指标是根据项目开发者在进行代码提交前填写的提交信息进行收集,提交信息中会记录每个提交的类型,包括:issue类型以及issue报告数。

18、按上述方法,所述的数据挖掘的方式具体为:

19、在版本控制系统git中使用git diff命令获取代码提交前后的差异,差异包括增加、减少或修改的文件以及每个文件中增减或修改的代码;

20、在版本控制系统git中使用git log命令获取提交历史,以计算每个提交的开发者数量以及作者的经验、文件与上一次更改的平均时间间隔,同时获得文件修改历史;

21、从问题跟踪系统jira中获取issue记录,来获取issue相关指标。

22、按上述方法,所述的相关性检验中,

23、对数值类型的数据,分别计算挖掘到的每种数据与架构相似度度量之间的皮尔逊相关系数或者斯皮尔曼相关系数,选取皮尔逊相关系数或者斯皮尔曼相关系数高于预设值对应的数值类型的数据,作为软件架构变化预测指标;

24、对非数值类型的数据,首先对架构相似度度量的值低于预设度量值的历史项目代码提交,标记为引起架构变化的提交,对架构相似度度量的值高于或等于预设度量值的历史项目代码提交,标记为不引起架构变化的提交;在每个项目中汇总出两份数据,然后在每个项目中分别分析这两份数据,对期望计数符合条件的项目分别进行卡方检验或者fisher确切概率法,从统计学意义上分析每个非数值型的数据与软件架构变化是否有关联。

25、按上述方法,对所述筛选后的数据打标签,具体为:

26、对架构相似度度量的值低于预设度量值的历史项目代码提交,标记为引起架构变化的提交;对架构相似度度量的值高于或等于预设度量值的历史项目代码提交,标记为不引起架构变化的提交。

27、按上述方法,所述的预测模型包括以下两种:

28、标签预测模型,通过软件架构变化预测指标,预测待预测项目代码提交是否是引起架构变化的提交;

29、数值预测模型,通过软件架构变化预测指标,预测提交前后的架构之间的架构相似度。

30、按上述方法,选择随机森林算法,来建立并训练所述的预测模型。

31、本专利技术的有益效果为:通过建立通过软件架构变化预测指标预测架构变化的预测模型,对代码提交导致的架构变化情况进行预测,能够从提交级别识别架构的更改且能够预测架构更改了多少,使得开发人员在进行代码更改时可以具体了解本提交可能会对软件架构产生怎样的影响,允许工程师采取措施减少架构变化,从而提高软件架构维护的效率。

本文档来自技高网...

【技术保护点】

1.一种基于代码提交分析的软件架构变化即时预测方法,其特征在于:

2.根据权利要求1所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述历史项目代码提交前后的源代码的软件架构,采用快速聚类算法FCA进行恢复。

3.根据权利要求1所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的比较提交前后的软件架构,具体为:

4.根据权利要求3所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的软件架构变化预测指标具体通过以下方式得到:

5.根据权利要求4所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的数据包括规模相关数据、文件相关数据、开发者相关数据以及Issue相关指标四类;

6.根据权利要求5所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的数据挖掘的方式具体为:

7.根据权利要求4所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的相关性检验中,

8.根据权利要求3所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:对所述筛选后的数据打标签,具体为:

9.根据权利要求1所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的预测模型包括以下两种:

10.根据权利要求1所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:选择随机森林算法,来建立并训练所述的预测模型。

...

【技术特征摘要】

1.一种基于代码提交分析的软件架构变化即时预测方法,其特征在于:

2.根据权利要求1所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述历史项目代码提交前后的源代码的软件架构,采用快速聚类算法fca进行恢复。

3.根据权利要求1所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的比较提交前后的软件架构,具体为:

4.根据权利要求3所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的软件架构变化预测指标具体通过以下方式得到:

5.根据权利要求4所述的基于代码提交分析的软件架构变化即时预测方法,其特征在于:所述的数据包括规模相关数据、文件相关数据、开发者相关数据...

【专利技术属性】
技术研发人员:莫然詹文静
申请(专利权)人:华中师范大学
类型:发明
国别省市:

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

1