CN109144564B - 一种基于历史修改模式的修改影响分析推荐方法及其系统 - Google Patents
一种基于历史修改模式的修改影响分析推荐方法及其系统 Download PDFInfo
- Publication number
- CN109144564B CN109144564B CN201811046982.2A CN201811046982A CN109144564B CN 109144564 B CN109144564 B CN 109144564B CN 201811046982 A CN201811046982 A CN 201811046982A CN 109144564 B CN109144564 B CN 109144564B
- Authority
- CN
- China
- Prior art keywords
- modification
- class
- submission
- influence
- submitted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于历史修改模式的修改影响分析推荐方法。其中,该方法包括:获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定,获得历史修改模式;获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表,从中选取最相似提交中的修改模式来辅助修改影响分析。实施本发明实施例,通过相似的类的历史修改模式来辅助当前的修改影响分析,提高了修改影响分析的精确性,减少开发人员在进行软件系统修改和维护过程中花费的时间。
Description
技术领域
本发明涉及计算机软件维护技术领域,具体涉及一种基于历史修改模式的修改影响分析推荐方法及其系统。
背景技术
软件的可维护性和修改性是软件固有的重要特性。软件维护被认为是软件生命周期中,最困难和最费人力的工作。在软件的维护过程,软件的修改更新是必不可少的。软件的修改通常是由于要迎合用户的新需求,用户在使用的过程中发现软件存在错误,或者是需要对软件进行性能优化。这些新的修改,将不可避免地对软件修改以外的部分产生影响,从而影响软件的稳定性。软件的修改影响分析,也称为影响分析,其目的是为了预测软件在维护和修改过程中对软件的其他部分可能造成的影响,以及确认影响程度和范围。修改影响分析,在软件的开发,维护和测试过程中,都起着重要作用。在软件修改前,进行影响分析有助于开发人员预估修改可能造成的影响,确认在完成软件修改过程中,所需要调整的部分。
开发人员往往在软件维护或更新的过程中,第一步是去确认修改的影响范围。一旦修改的核心部分被确认,开发人员就需要去确认其他被修改影响的部分。当前,修改影响分析的方法主要是基于依赖关系和基于跟踪性的方法。基于依赖关系的分析方法是用于分析同一层次的软件部件之间,例如源代码与源代码之间;基于跟踪性的分析方法是用于分析不同层次的软件部件之间,例如源代码和统一建模语言之间。
版本控制系统中,包含着许多软件及程序演进和维护过程中的信息。其中也包含着每次修改的历史信息。例如,可以从这些版本控制系统上找到每个项目中历史的修改提交记录,这些提交包含修改的注释信息,代码修改前和修改后的版本。通过这些信息,可以挖掘出过去修改中的影响范围。我们定义历史修改模式为每个提交中,对关键类的修改而引发的对其他类的修改模式。这些修改模式可以用来指导新的相似类的修改以及修改的影响范围。
发明内容
本发明的目的是克服现有方法的不足,提出了一种基于历史修改模式的修改影响分析推荐方法及其系统。能够通过利用版本控制系统中大量的提交中相似的修改模式,来辅助当前软件修改中的影响分析,提高影响分析的精确度。
为了解决上述问题,本发明提出了一种基于历史修改模式的修改影响分析推荐方法,所述方法包括:
从版本控制系统上获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定,获得历史修改模式;
获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;
根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表,从中选取最相似提交中的修改模式来辅助修改影响分析。
优选地,所述每个提交版本包括提交注释信息、程序修改前的版本、程序修改后的版本。
优选地,所述获得提交的修改模式的具体步骤包括:
从版本控制系统上挖掘大量提交信息作为提交库,只保留提交中的注释信息、程序修改前的版本、程序修改后的版本;
通过关键类判定技术对所述每个提交中的注释信息、程序修改前的版本、程序修改后的版本中抽取类与类之间的结构性耦合信息和代码修改信息进行判定一个类在修改提交中版本的关键程度;
根据关键类信息及关键类与其他类的耦合关系,进行这个提交修改的影响分析,得出关键类对其他类的修改影响列表,即历史修改模式。
优选地,所述对一个类在修改提交中的关键程度进行判定是通过代码耦合特征、代码修改特征和提交类型特征三个维度来衡量其中的关键程度。
优选地,所述选取最相似的提交中修改模式作为影响分析参考的具体步骤包括:
获取所述提交库中所有的注释信息构建语料库,利用所述语料库对传统词频-逆文档频率度量和词向量模型进行预先训练,获得训练后的传统词频-逆文档频率度量和词向量模型;
获取通过用户输入的修改描述信息,通过自然语言描述规范进行描述修饰,获得修改描述信息;
获取修改描述信息通过训练后的传统词频-逆文档频率度量和词向量模型进行计算所述修改描述信息与提交库中所有提交注释信息之间的相似度,按相似度对所有提交进行排列,选取最相似的提交中修改模式作为影响分析参考。其中,排在最前面的提交可能包含着跟当前修改相似的修改模式。
优选地,所述获取所述提交库中所有的注释信息构建语料库之前需要对提交库中所有的注释信息进行预先处理:对所述提交库中所有的注释信息托肯化,去掉标点符号和数字;去除停用词、代词和冠词等;再词干化,将每个单词转化为它的原型。
优选地,所述根据传统的基于耦合关系的影响分析技术获取初始影响集,主要通过出度和入度来度量一个类与其他类的耦合关系。定义出度为当前类对其他类的调用次数,用α表示,入度为其他类对当前类的调用次数,用β表示。
M(c,j)=αcj+βcj
其中c表示当前修改类,j表示一个其他类,αcj表示c对j的调用次数,βcj表示j对c的调用次数,M(c,j)表示两个类之间的耦合关系,对M(c,j)进行排序,得到初始影响集。
优选地,所述计算出最终的影响分析推荐修改列表,取每个类在两个列表中位置的倒数之和作为每个类最终受影响的程度。其公式表达为:
其中rankj表示j这个类在影响分析推荐修改列表中的位置,posj1表示j在历史修改模式列表中的位置,posj2表示j在初始影响集中的位置。
相应地,本发明实施例提出了一种基于历史修改模式的修改影响分析推荐系统,所述系统包括:
获取历史修改模式模块,用于从版本控制系统上获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定;
相似性计算模块,用于获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;
辅助模块,用于根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表,从中选取最相似提交中的修改模式来辅助修改影响分析。
实施本发明实施例,通过相似的类的历史修改模式来辅助当前的修改影响分析,提高了修改影响分析的精确性,减少开发人员在进行软件系统修改和维护过程中花费的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例的一种基于历史修改模式的修改影响分析推荐方法的流程示意图;
图2是本发明实施例的一种基于历史修改模式的修改影响分析推荐系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例的一种基于历史修改模式的修改影响分析推荐方法的流程图,如图1所示,该方法包括:
S1,从版本控制系统上获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定,获得历史修改模式;
S2,获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;
S3,根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表,从中选取最相似提交中的修改模式来辅助修改影响分析。
进一步地,S1中所述每个提交版本包括提交注释信息、程序修改前的版本、程序修改后的版本。
具体地,S1中所述获得提交的修改模式的具体步骤包括:
S11,从版本控制系统上挖掘大量提交信息作为提交库,只保留提交中的注释信息、程序修改前的版本、程序修改后的版本;
S12,通过关键类判定技术对所述每个提交中的注释信息、程序修改前的版本、程序修改后的版本中抽取类与类之间的结构性耦合信息和代码修改信息进行判定一个类在修改提交中版本的关键程度;
S13,根据关键类信息及关键类与其他类的耦合关系,进行这个提交修改的影响分析,得出关键类对其他类的修改影响列表,即历史修改模式。
进一步地,S12中所述对一个类在修改提交中的关键程度进行判定是通过代码耦合特征、代码修改特征和提交类型特征三个维度来衡量其中的关键程度。
其中,代码耦合特征可通过类与类之间的调用关系来计算。在程序中,一个类发生修改的时候,其他类可能会由于跟被修改的类之间存在调用关系而受到影响,所以,这些调用关系可以用来度量一个类在修改中的关键程度。代码修改特征可根据提交中每个类的修改程度来度量。一次修改提交中,每个类的关键程度不同,则修改程度也必定不相同,我们可以根据每个类的修改程度来衡量这个类在修改中的重要性,修改程度根据代码的修改量和类中方法的修改量来计算。修改的提交类型可用于辅助判断修改的关键类,因为不同的修改类型,提交中类的修改方式往往有很大区别。
对S2作进一步的说明:
S21,获取所述提交库中所有的注释信息构建语料库,利用所述语料库对传统词频-逆文档频率度量和词向量模型进行预先训练,获得训练后的传统词频-逆文档频率度量和词向量模型;
S22,获取通过用户输入的修改描述信息,通过自然语言描述规范进行描述修饰,获得修改描述信息;
S23,获取修改描述信息通过训练后的传统词频-逆文档频率度量和词向量模型进行计算所述修改描述信息与提交库中所有提交注释信息之间的相似度,按相似度对所有提交进行排列,选取最相似的提交中修改模式作为影响分析参考。其中,排在最前面的提交可能包含着跟当前修改相似的修改模式。
其中,S21中所述获取所述提交库中所有的注释信息构建语料库之前需要对提交库中所有的注释信息进行预先处理:对所述提交库中所有的注释信息托肯化,去掉标点符号和数字;去除停用词、代词和冠词等;再词干化,将每个单词转化为它的原型。
对S3作进一步说明:
所述根据传统的基于耦合关系的影响分析技术获取初始影响集,主要通过出度和入度来度量一个类与其他类的耦合关系。定义出度为当前类对其他类的调用次数,用α表示,入度为其他类对当前类的调用次数,用β表示。
M(c,j)=αcj+βcj
其中c表示当前修改类,j表示一个其他类,αcj表示c对j的调用次数,βcj表示j对c的调用次数,M(c,j)表示两个类之间的耦合关系,对M(c,j)进行排序,得到初始影响集。
所述计算出最终的影响分析推荐修改列表,取每个类在两个列表中位置的倒数之和作为每个类最终受影响的程度。其公式表达为:
其中rankj表示j这个类在影响分析推荐修改列表中的位置,posj1表示j在历史修改模式列表中的位置,posj2表示j在初始影响集中的位置。
相应地,本发明实施例提出了一种基于历史修改模式的修改影响分析推荐系统,如图2所示,所述系统包括:
获取历史修改模式模块,用于从版本控制系统上获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定;
相似性计算模块,用于获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;
辅助模块,用于根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表,从中选取最相似提交中的修改模式来辅助修改影响分析。
实施本发明实施例,通过相似的类的历史修改模式来辅助当前的修改影响分析,提高了修改影响分析的精确性,减少开发人员在进行软件系统修改和维护过程中花费的时间。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
另外,以上对本发明实施例所提供的一种基于历史修改模式的修改影响分析推荐方法及其系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于历史修改模式的修改影响分析推荐方法,其特征在于,所述方法包括:
从版本控制系统上获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定,获得历史修改模式;
获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;
根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表来辅助修改影响分析。
2.根据权利要求1所述的一种基于历史修改模式的修改影响分析推荐方法,其特征在于,所述每个提交版本包括提交注释信息、程序修改前的版本、程序修改后的版本。
3.根据权利要求1所述的一种基于历史修改模式的修改影响分析推荐方法,其特征在于,所述获得历史修改模式的具体步骤包括:
从版本控制系统上挖掘大量提交信息作为提交库,只保留提交中的注释信息、程序修改前的版本、程序修改后的版本;
通过关键类判定技术对所述每个提交中的注释信息、程序修改前的版本、程序修改后的版本中抽取类与类之间的结构性耦合信息和代码修改信息进行判定一个类在修改提交中版本的关键程度;
根据关键类信息及关键类与其他类的耦合关系,进行这个提交修改的影响分析,得出关键类对其他类的修改影响列表,即历史修改模式。
4.根据权利要求3所述的一种基于历史修改模式的修改影响分析推荐方法,其特征在于,所述判定一个类在修改提交中版本的关键程度是通过代码耦合特征、代码修改特征和提交类型特征三个维度来衡量其中的关键程度。
5.根据权利要求3所述的一种基于历史修改模式的修改影响分析推荐方法,其特征在于,所述选取最相似的提交中修改模式作为影响分析参考的具体步骤包括:
获取所述提交库中所有的注释信息构建语料库,利用所述语料库对传统词频-逆文档频率度量和词向量模型进行预先训练,获得训练后的传统词频-逆文档频率度量和词向量模型;
获取通过用户输入的修改描述信息,通过自然语言描述规范进行描述修饰,获得修改描述信息;
获取修改描述信息通过训练后的传统词频-逆文档频率度量和词向量模型进行计算所述修改描述信息与提交库中所有提交注释信息之间的相似度,按相似度对所有提交进行排列,选取最相似的提交中修改模式作为影响分析参考,其中,排在最前面的提交可能包含着跟当前修改相似的修改模式。
6.根据权利要求1所述的一种基于历史修改模式的修改影响分析推荐方法,其特征在于,所述根据传统的基于耦合关系的影响分析技术获取初始影响集,主要通过出度和入度来度量一个类与其他类的耦合关系;定义出度为当前类对其他类的调用次数,用α表示,入度为其他类对当前类的调用次数,用β表示,
M(c,j)=αcj+βcj
其中c表示当前修改类,j表示一个其他类,αcj表示c对j的调用次数,βcj表示j对c的调用次数,M(c,j)表示两个类之间的耦合关系,对M(c,j)进行排序,得到初始影响集。
8.一种基于历史修改模式的修改影响分析推荐系统,所述系统包括:
获取历史修改模式模块,用于从版本控制系统上获取大量的提交版本,对每个提交版本的关键类进行计算,并根据类与类之间的耦合关系进行判定;
相似性计算模块,用于获取通过用户输入的修改描述信息,计算所述修改描述信息与每个提交注释信息之间的相似性,选取最相似的提交中修改模式作为影响分析参考;
辅助模块,用于根据传统的基于耦合关系的影响分析获取初始影响集,结合所述历史修改模式,计算出最终的影响分析推荐修改列表来辅助修改影响分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811046982.2A CN109144564B (zh) | 2018-09-08 | 2018-09-08 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811046982.2A CN109144564B (zh) | 2018-09-08 | 2018-09-08 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144564A CN109144564A (zh) | 2019-01-04 |
CN109144564B true CN109144564B (zh) | 2022-03-25 |
Family
ID=64824027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811046982.2A Active CN109144564B (zh) | 2018-09-08 | 2018-09-08 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144564B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897719B (zh) * | 2020-07-04 | 2023-08-04 | 毛澄映 | 基于代码文本和调用关系的程序变更影响分析方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831056A (zh) * | 2012-07-31 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的回归测试用例生成方法 |
CN103729473A (zh) * | 2014-01-22 | 2014-04-16 | 扬州大学 | 一种基于lda主题模型的相关软件历史数据提取方法 |
CN105320525A (zh) * | 2015-12-09 | 2016-02-10 | 扬州大学 | 一种面向移动应用软件的修改影响分析方法 |
CN106156633A (zh) * | 2016-06-23 | 2016-11-23 | 扬州大学 | 面向软件修改的风险分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519477B2 (en) * | 2013-09-16 | 2016-12-13 | International Business Machines Corporation | Automatic pre-detection of potential coding issues and recommendation for resolution actions |
-
2018
- 2018-09-08 CN CN201811046982.2A patent/CN109144564B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831056A (zh) * | 2012-07-31 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的回归测试用例生成方法 |
CN103729473A (zh) * | 2014-01-22 | 2014-04-16 | 扬州大学 | 一种基于lda主题模型的相关软件历史数据提取方法 |
CN105320525A (zh) * | 2015-12-09 | 2016-02-10 | 扬州大学 | 一种面向移动应用软件的修改影响分析方法 |
CN106156633A (zh) * | 2016-06-23 | 2016-11-23 | 扬州大学 | 面向软件修改的风险分析方法 |
Non-Patent Citations (1)
Title |
---|
基于关键类判定的代码提交理解辅助方法;黄袁等;《软件学报》;20170220;第28卷(第6期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109144564A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210334093A1 (en) | Automating Identification of Code Snippets for Library Suggestion Models | |
US20240126543A1 (en) | Library Model Addition | |
US20200264870A1 (en) | Automating Generation of Library Suggestion Engine Models | |
US8600916B2 (en) | Office system content prediction based on regular expression pattern analysis | |
US10345922B2 (en) | Office system prediction configuration sharing | |
EP3679469A1 (en) | Automating identification of test cases for library suggestion models | |
CN111507086B (zh) | 本地化应用程序中翻译文本位置的自动发现 | |
US9047337B2 (en) | Database connectivity and database model integration within integrated development environment tool | |
WO2022226716A1 (zh) | 基于深度学习的Java程序内部注释的生成方法及系统 | |
US8145992B2 (en) | Validation assisted document conversion design | |
CN114610286A (zh) | 开发文档的生成方法、装置、计算机设备及存储介质 | |
CN114647408A (zh) | 一种代码的补全方法、装置、电子设备及存储介质 | |
CN109144564B (zh) | 一种基于历史修改模式的修改影响分析推荐方法及其系统 | |
US20230195825A1 (en) | Browser extension with automation testing support | |
CN112906349A (zh) | 一种数据标注的方法、系统、设备及可读存储介质 | |
Haque et al. | Fixeval: Execution-based evaluation of program fixes for competitive programming problems | |
Agarwal et al. | Copilot Evaluation Harness: Evaluating LLM-Guided Software Programming | |
CN116166789A (zh) | 一种方法命名精准推荐和审查方法 | |
CN116187353A (zh) | 翻译方法、装置、计算机设备及其存储介质 | |
CN112130838B (zh) | 交易数据处理方法及装置 | |
CN114385491A (zh) | 一种基于深度学习的js转译器缺陷检测方法 | |
US20240069907A1 (en) | Software development context history operations | |
KR100656559B1 (ko) | Bibd 방법론을 이용하는 프로그램 자동 개발 장치 | |
US11928569B1 (en) | Automated user experience orchestration using natural language based machine learning techniques | |
CN114328149B (zh) | 编译时长的统计方法、装置、电子设备及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |