[发明专利]一种基于层次聚类组合的软件架构恢复方法在审
申请号: | 202111501663.8 | 申请日: | 2021-12-09 |
公开(公告)号: | CN114510257A | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 夏虹;陈彦萍;张永康;田振洲;王忠民 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F8/70 | 分类号: | G06F8/70;G06K9/62 |
代理公司: | 西安嘉思特知识产权代理事务所(普通合伙) 61230 | 代理人: | 王萌 |
地址: | 710061 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 层次 组合 软件 架构 恢复 方法 | ||
本发明提供了一种基于层次聚类组合的软件架构恢复方法,包括:构建软件源代码中的函数实体之间的关系;使用五种相似度计算方法分别计算函数实体间的相似度;基于每种相似度计算算法计算出的相似度,使用CL、WCA、LIMBO三种层次聚类算法分别对函数实体进行聚类;将每种聚类结果用描述矩阵的形式表示;使用主成分分析的方法将表示每种聚类结果的描述矩阵进行组合,得到多维矩阵;从多维矩阵中恢复出最终层次结构,以实现软件结构的恢复。本发明使用主成分分析,将可以描述和考虑软件实体间的各种关系的多个矩阵进行组合降维,组合结果尽可能地保留了各个聚类算法的基本信息,从而提高从基于聚类恢复的软件架构与真实架构的准确度。
技术领域
本发明属于软件工程领域,具体涉及一种基于层次聚类组合的软件架构恢复方法。
背景技术
当在软件系统中加入新的需求时,系统的规模和复杂性会增加,而架构可能会恶化并偏离原始文档。主要原因包括软件开发没有架构设计阶段;无法获得原开发人员的设计文档;文件可能没有更新;不理解代码段复制源代码等。软件架构的重要性就在于它满足了非功能性的需求,也称之为质量需求。这些非功能性需求决定一个应用程序在运行时的质量,比如可扩展性和可靠性,同时也决定了开发阶段的质量,包括可维护性、可测试性、可扩展性和可部署性。适宜的架构可增加应用程序的这些质量属性,而软件架构恢复是软件工程邻域的热点问题。
现有技术中,通常采用基于聚类的软件架构恢复方法,如基于分层和分区的聚类算法。对于分层聚类其过程是:算法从n个单例(每个实体)开始,合并它们直到获得单个集群。该过程的每个步骤中合并两个最相似的集群,分层聚类算法提供了软件聚类的不同视角,并迭代给出了软件体系结构的详细视图,而晚期的聚类迭代给出了高级视图。对于分区聚类算法,其过程是:从一个集群(包含所有实体)开始并分割它,直到获得聚类结果,对于给定的n个实体集合,这种方法简单地将实体集合划分为不重叠的聚类簇,以便每个实体恰好在一个簇中。
现有技术的聚类算法必须针对目标系统中相似的组实体,基于特定的特征,然而软件系统中,选择一种适用于某一任务的合适算法难度较大。因此亟待一种一种基于层次聚类组合的软件架构恢复方法。
发明内容
为了解决现有技术中存在的上述问题,本发明提供一种基于层次聚类组合的软件架构恢复方法。本发明要解决的技术问题通过以下技术方案实现:
本发明提供的一种基于层次聚类组合的软件架构恢复方法包括:
步骤1:获取软件源代码中的函数实体;
步骤2:构建函数实体之间的关系;
其中,函数实体关系包括:实体引用的全局变量、局部变量、用户定义类型、数据文件,实体间的互相调用、系统调用,以及实体引用的宏;
步骤3:使用五种相似度计算方法分别计算函数实体间的相似度,得到每种相似度计算算法计算出的相似度;
步骤4:基于每种相似度计算算法计算出的相似度,使用CL、WCA、LIMBO三种层次聚类算法分别对函数实体进行聚类,得到根据每种相似度进行聚类的聚类结果;
步骤5:将每种聚类结果用描述矩阵的形式表示;
步骤6:使用主成分分析的方法将表示每种聚类结果的描述矩阵进行组合,得到多维矩阵;
步骤7:从多维矩阵中恢复出最终层次结构,以实现软件结构的恢复。
可选的,步骤1包括:
通过软件代码处理工具,从软件源代码中反向获取实体信息。
可选的,步骤2包括:
步骤2-1:获取每个函数实体的特征向量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111501663.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:液压支架监测装置
- 下一篇:一种账户核算方法、装置及电子设备