摘要

设计模式的识别是逆向软件工程领域一个非常重要的研究课题。现有的设计模式识别方法大多都是直接将原系统与设计模式进行匹配来寻找系统中的模式实例,限制了其召回率和精确率。为此,在前期研究的基础上,进一步探索了基于相似度评分和二级子系统的设计模式识别方法。本文首先细化了前期研究所提方法的基本流程;接着,讨论了系统信息的提取,提出了一种系统和设计模式的有向图/矩阵表示;在此基础上,将待识别系统划分为若干个子系统,然后将子系统进一步拆解和重组为类个数与待识别模式中的角色个数相等的二级子系统;最后使用相似度评分算法判断二级子系统是否为模式实例,并将获取到的实例进行合并等进一步处理以获取最终的模式实例。在三个开源项目上进行了实验,平均召回率分别达到96.7%、91.7%和100.0%,平均精确率分别达到94.9%、91.5%和92.5%,而CPU时间花费分别为5 408 ms、22 280 ms和3 284 ms。实验结果表明,该方法可以在保持高召回率的基础上提升精确率,时间效率也有所提升。

全文