【技术实现步骤摘要】
一种基于代码词汇和结构依赖的分层架构识别方法
本专利技术是一种基于代码词汇和结构依赖的分层架构识别方法,主要用于架构偏移和文档缺失的情况下逆向进行系统分层结构恢复问题。
技术介绍
软件系统随着演进过程会变得越来越复杂,但是系统架构信息却没有及时同步跟新和文档化,这就导致现有软件系统的架构随时间推移往往会偏离原始架构。架构信息缺失与架构偏移问题会随着系统演进愈发严重,在软件架构或结构复杂性得不到有效控制的情况下,最终导致软件系统生命周期走向终结,无法持续演进。为解决这类问题,业界多采用架构恢复的方法尽量获取现有系统的真实架构信息,并借此帮助理解现有软件系统和发现潜在的架构设计缺陷,进而及时进行架构重构,从而降低软件系统维护的难度和成本,最终保证软件能够持续演进。然而,通用的架构恢复方法并没有考虑到软件系统设计过程中经常会使用架构模式。因此设计一个针对分层模式的定向架构恢复方法十分必要。目前的研究针对分层模式的定向架构恢复主要基于程序实体之间的结构依赖关系,即直接在程序依赖图上进行分层模式识别,这类做法忽视了分层模式主要用作系统关注点分离的特性,从而导致恢复结果与目标系统实际层次比较差距较大。因此,提取分层模式本身的特征,再利用模式的特征反过来进行定向的恢复是本专利技术所关注的问题。
技术实现思路
本专利技术的目的是提供一种基于代码词汇和结构依赖的分层架构识别方法,用于在文档丢失和架构偏移情况下获取目标软件系统的分层架构视图,分层架构视图不仅能帮助开发维护人员从层次依赖结构角度更深入地了解整个软件系统的实现,降低复杂系统的理解难度,而且能帮助发现目标系统层次结构中 ...
【技术保护点】
1.一种基于代码词汇和结构依赖的分层架构识别方法,其特征在于,该方法包括如下步骤:步骤1)通过静态分析程序源代码获得目标系统中所有package对应的关键词集合W(关键词即代码中的标识符,包括类名、方法名、参数名)、程序实体之间的依赖关系集合E(依赖的类型包括四种:继承inherit、实现implement、组合composition、聚合aggregate);步骤2)基于步骤1)中所提取的关键词集合W进行源代码词汇主题提取,获得程序中暗含的主题集合T以及每个package对应的主题向量分布集合V,并基于每个package对应的向量分布进行聚类获得抽象粒度更高的组件集合C;步骤3)结合步骤1)提取的程序依赖集合E推导出组件之间的依赖集合Ec,结合基于步骤2)获得的组件集合C得到组件依赖图G,并基于分层模式特征在组件依赖图G上进行层次识别获得系统现有状态下的软件层次集合L。
【技术特征摘要】
1.一种基于代码词汇和结构依赖的分层架构识别方法,其特征在于,该方法包括如下步骤:步骤1)通过静态分析程序源代码获得目标系统中所有package对应的关键词集合W(关键词即代码中的标识符,包括类名、方法名、参数名)、程序实体之间的依赖关系集合E(依赖的类型包括四种:继承inherit、实现implement、组合composition、聚合aggregate);步骤2)基于步骤1)中所提取的关键词集合W进行源代码词汇主题提取,获得程序中暗含的主题集合T以及每个package对应的主题向量分布集合V,并基于每个package对应的向量分布进行聚类获得抽象粒度更高的组件集合C;步骤3)结合步骤1)提取的程序依赖集合E推导出组件之间的依赖集合Ec,结合基于步骤2)获得的组件集合C得到组件依赖图G,并基于分层模式特征在组件依赖图G上进行层次识别获得系统现有状态下的软件层次集合L。2.根据权利要求1中所述的基于代码词汇和结构依赖的分层架构识别方法,其特征在于,步骤1)中程序源码关键词汇集合与依赖关系集合的获取,具体如下:(11)通过静态代码分析工具将目标系统源代码转换为AST抽象语法树结构;(12)遍历AST树节点,从节点上提取源代码文件中相应位置的词汇以及程序实体之间的依赖关系;(13)利用正则表达式提取AST树无法获取的注释词汇;具体所要提取的代码词汇及程序实体依赖定义如下:a)每个package对应的词汇集合W={wp1,wp2,….,wpn},其中wpi为pi(pi为目标系统中的一个package,1≤i≤n,n为目标系统中package的数目)中程序实体所包含的全部关键词文本;b)程序实体之间的依赖关系集合E={e1,e2,e3…,em},ei(1≤i≤m,m为目标系统中程序实体依赖的总数量)代表的是程序实体之间的依赖边,e的两端是最小粒度的程序实体。3.根据权利要求1中所述的基于代码词汇和结构依赖的分层架构识别方法,其特征在于,所述步骤2)中对程序实体进行主题提取并聚类的方法,具体流程为:(21)基于词汇文本集合W进行预处理操作,对每个wpi中包含...
【专利技术属性】
技术研发人员:李必信,杜鹏程,王璐璐,孔祥龙,廖力,周颖,
申请(专利权)人:东南大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。