[发明专利]一种基于自适应网格划分聚类的软件架构恢复方法在审
申请号: | 202210074711.8 | 申请日: | 2022-01-21 |
公开(公告)号: | CN114428632A | 公开(公告)日: | 2022-05-03 |
发明(设计)人: | 晋武侠;董思远;刘烃;范铭;戴铱彤 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F8/70 | 分类号: | G06F8/70;G06F8/71;G06K9/62 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 王艾华 |
地址: | 710049 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 自适应 网格 划分 软件 架构 恢复 方法 | ||
本发明公开了一种基于自适应网格划分聚类的软件架构恢复方法,利用软件间的依赖关系,对其软件架构进行重新组织,以求恢复其软件架构描述。首先,利用软件源代码构建软件关联网络,选择合适的网络嵌入算法提取特征向量;其次利用提取出的特征向量进行内部分析,得到聚类算法所需的相关参数,将特征向量在网格空间中进行划分,通过筛选出稠密网格区域确定聚类迭代所需的初始中心点;最后将利用初始中心点进行划分类聚类迭代,得到最终结果为以源文件为节点的相关软件架构描述。本发明能够快速且有效地对软件源文件进行聚类,得到相对准确的聚类结果作为软件框架描述,解决了现有按代码特性提取特征操作繁琐,且聚类结果准确率低的问题。
技术领域
本发明属于聚类算法研究及软件架构恢复技术领域,特别涉及一种基于自适应网格划分聚类的软件架构恢复方法。
背景技术
软件系统的架构通常使用不同的模块视图来描述不同的模块形成子系统的过程,对于面向对象的系统,模块视图描述类及其关系。软件系统架构十分重要,它可以用于判断一个系统是佛有能力满足其总体需求,是系统适应不断变化的需求,支持组件的复用。尽管架构的描述十分重要,对于大多数软件系统来说,并没有相应的架构描述。因此近年来研究人员设计和开发了为软件架构恢复提供自动化支持的技术。聚类作为软件架构恢复的准自动技术,已经得到了广泛的研究和使用。K-Means算法作为数据挖掘领域十大算法之一,简单快速的特点使其得到了广泛的应用,但其初始中心点选择上的随机性是一个很大的问题,因为不同的初始点选择会为聚类结果带来不同程度的影响,并且会大幅降低算法的效率。另一方面,划分聚类算法对异常点的敏感性也使得聚类精度大大降低。因此,初始中心点的选择和对异常点的筛除是很重要的两个方面。由于基于网格的聚类算法可以有效地处理多种类型的数据集,并可以有效地去除异常点,但是这种聚类算法需要手动设置多个参数,并且由于聚类结果取决于每个维空间中划分的单元数,因此聚类的质量和准确性将在一定程度上降低。
目前已有的利用聚类算法进行软件架构恢复的方法多是手动对特征进行分类提取,其将文件作为实体,特征选取来源于实体的正式特性和非正式特性,正式特性包括实体调用的函数、全局变量、宏和实体引用的用户定义类型、实体中包含的文件;非正式特性包括注释、标识符、开发人员名称、目录路径、LOC和最后一次更新的时间,最终的结果十分依赖于实体特征的选取。
发明内容
为了解决上述问题,本发明提供了一种基于自适应网格划分聚类的软件架构恢复方法,通过提取软件关联网络进行网络嵌入得到特征向量,构建网格空间进行聚类,快速有效的获得软件架构模块描述。
为了实现上述目的,本发明采用的技术方案是:
一种基于自适应网格划分聚类的软件架构恢复方法,包括如下步骤:
S1:构建类依赖网络,文件耦合网络作为特征提取对象;
S2:利用网络嵌入算法将软件关联网络中的节点转化为向量表示;
S3:将向量表示结果作为数据集,根据数据集的离散程度确定聚类算法的网格划分数和去除异常点的密度阈值;
S4:使用网格划分数对数据集中的样本点进行处理,确定各样本点的网格索引,计算出各数据点对应的网格坐标数组G,并统计各网格密度大小;
S5:使用密度阈值划分出的网格进行筛选处理,对网格进行分类,分出稠密网格与非稠密网格,对稠密网格中的样本点进行均值处理,得到相对准确的中心点;
S6:将中心点作为聚类方法的初始中心点进行迭代,对数据集进行聚类,得到聚类结果为软件的框架结构。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210074711.8/2.html,转载请声明来源钻瓜专利网。