基于CSP的线索驱动设计模式识别方法研究
这是一篇关于设计模式识别,线索驱动,CSP,约束求解,启发式策略的论文, 主要内容为随着用户需求增长,软件开发愈加复杂,设计模式被广泛应用于解决复杂的软件逻辑与结构问题。但软件开发和维护过程中,设计模式作为软件开发中优秀经验的总结,其信息却很难被开发人员直观地提取应用,因此从源码中识别出设计模式的应用实例的方法颇具研究意义。设计模式识别能有效帮助维护人员理解、维护及重构软件程序,也是能实现设计模式可复用性的重要前提。通过总结文献发现,设计模式识别仍有问题有待研究:(1)识别设计模式的准确程度有待提高,尤其是对行为型、创建型设计模式的识别;(2)因难以区分结构相似的设计模式而导致的实例重叠问题;(3)大部分方法欠缺对设计模式变体的考虑。本文在传统基于约束满足问题(Constraint Satisfaction Problem,CSP)的设计模式识别方法思路基础上,以提高识别的准确程度,改善识别过程中的实例重叠问题为目的,提出了一种基于CSP的线索驱动的设计模式识别方法并展开研究。本文研究的主要工作有:(1)对传统CSP方法思想及约束求解方法进行调查研究:介绍传统CSP识别方法的思想,详细描述了将设计模式识别问题转化为约束满足问题后的相关定义与具体形式,并提出了基于CSP的线索驱动设计模式识别方法框架。(2)线索获取与表示:在传统CSP约束规则的基础上提出了线索概念,用于描述传统约束规则未能表示的设计模式约束信息。结合假性结果分析UML类图与时序图获取线索,按照线索的约束条件进行分类并表示为CSP形式,作为传统约束规则的补充。(3)改进约束求解算法:本文针对转化后设计模式的CSP形式,引入并改进了一种启发式策略的回溯算法,对涉及到的概念做了契合设计模式识别问题的重新定义,使算法适用于设计模式与源码实例的约束求解。(4)按线索分类设计多阶段实验评估本文方法的识别效果。选取JHot Draw等经典开源系统进行实验并分析结果,同时与其他识别方法结果做横向比较实验,证明本文方法能有效提高设计模式识别的准确程度并改善识别实例时出现的设计模式实例重叠问题。
基于Boosting的设计模式识别方法研究
这是一篇关于设计模式识别,Boosting算法,特征提取,软件度量,微结构的论文, 主要内容为设计模式广泛应用于软件开发中,是针对软件开发常出现的问题,总结出处理软件复杂逻辑的方案,同时提供优秀的软件架构。设计模式可以有效提高面向对象系统的开发人员的工作效率,并且提高面向对象程序的可维护性和可靠性。然而,当开发的文档记录不够充分或过时,设计模式在目标系统的使用情况就会丢失,开发人员无法利用已有的设计模式进行理解或者重构程序。因此,在面向对象的系统源代码中,识别出已使用的设计模式具有重要意义。由于系统代码的动态行为信息难以获取,导致对于行为型设计模式以及变体的识别比较困难。鉴于Boosting模型算法应用在各种领域性能优异,且鲁棒性比较强。为提高对于结构型、创建型以及行为型设计模式的识别准确度,对不同分类模型识别设计模式的性能进行研究,提出基于Boosting模型的设计模式识别方法,主要研究工作如下:(1)数据集标注。首先需要对代码数据进行收集和分析,本文选取了组合模式、单例模式、工厂模式、对象适配器模式以及观察者设计模式。根据设计模式的特点,对这五类设计模式结合基础特征和人工纠偏的方式进行Java代码数据集标注。(2)特征提取与处理。传统机器学习方法提取的特征不够完善,仅包含静态的结构信息,比较单一。提取计数向量时需要对代码数据采用类似于文本处理的方式去除多余特征,减少数据噪声。后续引入计数向量、软件度量和微结构进行完善特征,更全面的获取系统代码中的结构和行为信息,以提高机器学习分类模型识别的准确率。并且计数向量可以降低数据标注成本,获取代码的语义信息可作为辅助识别特征。特征处理主要采用SMOTE增强数据和Minmax归一化预处理方法提高数据的稳定性。(3)研究机器学习分类模型的训练过程。在分类模型训练阶段,对比二分类任务与多分类任务在各种分类模型的训练结果,确定出Boosting模型。同时通过调整数据集的划分、交叉验证方法来确保训练效果,最后采用正交调参的方法来优化Boosting模型。(4)实验环节分阶段对实验结果进行分析。选取JRefactory v2.9.19等经典开源项目分阶段实验并分析结果,并且通过多个实验指标与其他方法对比,验证本文方法可以有效地提高对于结构型、创建型以及行为型设计模式的识别准确率。
面向对象软件代码结构解析及知识图谱构建
这是一篇关于设计模式识别,代码表示学习,代码知识图谱,深度学习,软件工程的论文, 主要内容为随着软件系统规模的持续扩张和版本的不断迭代,处理开发过程中产生的大量代码已成为开发者在软件系统开发和维护过程中面临的核心问题。然而,由于代码具有抽象性、复杂性和可变性,以及开发者之间习惯和能力的差异,理解和阅读他人的代码变得颇具挑战性。如今,软件开发领域正面临着两个关键的新局面,其一是开源代码及社区的兴起促成了代码大数据的形成,其二是深度学习与知识图谱等人工智能技术推动了软件智能化开发。因此,如何利用人工智能技术辅助开发者在开发和维护过程中更高效地理解和分析代码,具有重要的研究意义。通过对国内外文献进行深入研究发现,一方面对于软件代码的解析已取得了一定的成果,如基于信息检索和概率模型的方法,但是这些方法通常将源代码视为纯文本,忽略了代码本身所具有的结构特性和语义信息。另一方面,从代码的结构特性和软件系统的整体设计考虑,软件设计模式的自动识别和代码知识图谱的构建逐渐成为研究热点,然而目前在这方面的研究仍有许多挑战和问题亟待解决。针对以上两个方面,本文提出了基于设计模式识别的代码结构解析的方法,并在此基础上实现自动构建代码知识图谱,本文的主要工作如下:(1)本文提出了一种基于代码特征的设计模式识别方法。首先从Java源代码数据集中提取代码特征和调用图,并生成代码的语法和词汇的自然语言表示,再通过Word2vec构建相应的词向量。最后使用常见机器学习分类器对设计模式进行识别。实验证明了从源代码中提取代码特征的方法在设计模式的识别任务中的有效性。(2)本文提出了一种基于代码表示学习并结合代码特征的设计模式识别方法。通过使用抽象语法树处理语句级别的代码片段,生成包含词汇和语句级语法知识的树形图表示,再融合代码特征与调用图,并利用图神经网络(GCN)对语句进行编码得到序列表示,最后采用双向循环神经网络(Bi-LSTM)对语句间的序列依赖关系进行编码得到代码的向量表示。将该向量表示作为机器学习分类器的输入,从而对设计模式进行识别。该方法在前方法的基础上,捕获了更多的源代码中的语法、语义和结构信息,在优化代码表示方面具有关键作用。实验证明,相比于其他现有方法,该方法在设计模式的识别性能上有显著提升,为面向对象软件代码解析提供了有效支持。(3)本文提出了一种基于设计模式识别结果和代码结构解析的代码知识图谱自动构建方法。通过将设计模式识别结果与UML类图结合并将其图形结构表示转化为RDF数据,再使用Neo4j图数据库实现代码知识图谱的自动构建。该构建过程结合了多种代码知识信息,应用了多种技术工具,为分析软件系统的代码知识提供了一种高效、灵活且具有扩展性的方法,从而为软件系统的开发和维护提供了更有效的支持。综上所述,本文旨在通过结合设计模式的识别,实现对Java代码结构的高效且准确解析,并自动构建Java代码知识图谱。在预处理后的公开数据集上进行的实验证实了本文提出的两种设计模式识别方法的有效性和准确性。同时,在此基础上,本文所提出的自动构建代码知识图谱方法具有可行性和实用性。
基于Boosting的设计模式识别方法研究
这是一篇关于设计模式识别,Boosting算法,特征提取,软件度量,微结构的论文, 主要内容为设计模式广泛应用于软件开发中,是针对软件开发常出现的问题,总结出处理软件复杂逻辑的方案,同时提供优秀的软件架构。设计模式可以有效提高面向对象系统的开发人员的工作效率,并且提高面向对象程序的可维护性和可靠性。然而,当开发的文档记录不够充分或过时,设计模式在目标系统的使用情况就会丢失,开发人员无法利用已有的设计模式进行理解或者重构程序。因此,在面向对象的系统源代码中,识别出已使用的设计模式具有重要意义。由于系统代码的动态行为信息难以获取,导致对于行为型设计模式以及变体的识别比较困难。鉴于Boosting模型算法应用在各种领域性能优异,且鲁棒性比较强。为提高对于结构型、创建型以及行为型设计模式的识别准确度,对不同分类模型识别设计模式的性能进行研究,提出基于Boosting模型的设计模式识别方法,主要研究工作如下:(1)数据集标注。首先需要对代码数据进行收集和分析,本文选取了组合模式、单例模式、工厂模式、对象适配器模式以及观察者设计模式。根据设计模式的特点,对这五类设计模式结合基础特征和人工纠偏的方式进行Java代码数据集标注。(2)特征提取与处理。传统机器学习方法提取的特征不够完善,仅包含静态的结构信息,比较单一。提取计数向量时需要对代码数据采用类似于文本处理的方式去除多余特征,减少数据噪声。后续引入计数向量、软件度量和微结构进行完善特征,更全面的获取系统代码中的结构和行为信息,以提高机器学习分类模型识别的准确率。并且计数向量可以降低数据标注成本,获取代码的语义信息可作为辅助识别特征。特征处理主要采用SMOTE增强数据和Minmax归一化预处理方法提高数据的稳定性。(3)研究机器学习分类模型的训练过程。在分类模型训练阶段,对比二分类任务与多分类任务在各种分类模型的训练结果,确定出Boosting模型。同时通过调整数据集的划分、交叉验证方法来确保训练效果,最后采用正交调参的方法来优化Boosting模型。(4)实验环节分阶段对实验结果进行分析。选取JRefactory v2.9.19等经典开源项目分阶段实验并分析结果,并且通过多个实验指标与其他方法对比,验证本文方法可以有效地提高对于结构型、创建型以及行为型设计模式的识别准确率。
面向对象软件代码结构解析及知识图谱构建
这是一篇关于设计模式识别,代码表示学习,代码知识图谱,深度学习,软件工程的论文, 主要内容为随着软件系统规模的持续扩张和版本的不断迭代,处理开发过程中产生的大量代码已成为开发者在软件系统开发和维护过程中面临的核心问题。然而,由于代码具有抽象性、复杂性和可变性,以及开发者之间习惯和能力的差异,理解和阅读他人的代码变得颇具挑战性。如今,软件开发领域正面临着两个关键的新局面,其一是开源代码及社区的兴起促成了代码大数据的形成,其二是深度学习与知识图谱等人工智能技术推动了软件智能化开发。因此,如何利用人工智能技术辅助开发者在开发和维护过程中更高效地理解和分析代码,具有重要的研究意义。通过对国内外文献进行深入研究发现,一方面对于软件代码的解析已取得了一定的成果,如基于信息检索和概率模型的方法,但是这些方法通常将源代码视为纯文本,忽略了代码本身所具有的结构特性和语义信息。另一方面,从代码的结构特性和软件系统的整体设计考虑,软件设计模式的自动识别和代码知识图谱的构建逐渐成为研究热点,然而目前在这方面的研究仍有许多挑战和问题亟待解决。针对以上两个方面,本文提出了基于设计模式识别的代码结构解析的方法,并在此基础上实现自动构建代码知识图谱,本文的主要工作如下:(1)本文提出了一种基于代码特征的设计模式识别方法。首先从Java源代码数据集中提取代码特征和调用图,并生成代码的语法和词汇的自然语言表示,再通过Word2vec构建相应的词向量。最后使用常见机器学习分类器对设计模式进行识别。实验证明了从源代码中提取代码特征的方法在设计模式的识别任务中的有效性。(2)本文提出了一种基于代码表示学习并结合代码特征的设计模式识别方法。通过使用抽象语法树处理语句级别的代码片段,生成包含词汇和语句级语法知识的树形图表示,再融合代码特征与调用图,并利用图神经网络(GCN)对语句进行编码得到序列表示,最后采用双向循环神经网络(Bi-LSTM)对语句间的序列依赖关系进行编码得到代码的向量表示。将该向量表示作为机器学习分类器的输入,从而对设计模式进行识别。该方法在前方法的基础上,捕获了更多的源代码中的语法、语义和结构信息,在优化代码表示方面具有关键作用。实验证明,相比于其他现有方法,该方法在设计模式的识别性能上有显著提升,为面向对象软件代码解析提供了有效支持。(3)本文提出了一种基于设计模式识别结果和代码结构解析的代码知识图谱自动构建方法。通过将设计模式识别结果与UML类图结合并将其图形结构表示转化为RDF数据,再使用Neo4j图数据库实现代码知识图谱的自动构建。该构建过程结合了多种代码知识信息,应用了多种技术工具,为分析软件系统的代码知识提供了一种高效、灵活且具有扩展性的方法,从而为软件系统的开发和维护提供了更有效的支持。综上所述,本文旨在通过结合设计模式的识别,实现对Java代码结构的高效且准确解析,并自动构建Java代码知识图谱。在预处理后的公开数据集上进行的实验证实了本文提出的两种设计模式识别方法的有效性和准确性。同时,在此基础上,本文所提出的自动构建代码知识图谱方法具有可行性和实用性。
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码驿站 ,原文地址:https://m.bishedaima.com/lunwen/55277.html