发明名称 一种面向对象软件的自动化重构方法
摘要 本发明提供一种面向对象软件的自动化重构方法,涉及软件质量的改善技术领域。该方法将待重构软件系统构建为类级多层依赖有向网络模型,进行重构预处理,合并类级网络连通片,将每个类级网络连通片转换为同种类型实体集合,分析每个实体集合元素之间的语义和结构耦合关系,构建方法级耦合无向网络模型,确定无向网络中节点间不同类型耦合关系权值系数,对每个方法级网络进行社团划分,生成重构建议,对待重构软件系统进行重构。本发明从整个软件系统全局内聚性及耦合性角度出发,结合语义相似性、结构相似性和层次聚类算法,同时生成搬移函数、搬移属性和提炼类重构操作建议,有效提高代码的可理解性、可重用性和可维护性。
申请公布号 CN106484401A 申请公布日期 2017.03.08
申请号 CN201610843591.8 申请日期 2016.09.23
申请人 东北大学 发明人 王莹;杨月;于海;朱志良;张伟
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 沈阳东大知识产权代理有限公司 21109 代理人 梁焱
主权项 一种面向对象软件的自动化重构方法,其特征在于,包括以下步骤:步骤1:以类为节点、以类间依赖关系为边,将待重构软件系统构建为类级多层依赖有向网络模型;步骤2:进行重构预处理;根据类级多层依赖有向网络模型,将非继承体系类节点与继承体系中的叶子节点提取出来,作为重构的对象;步骤3:依次合并由非继承体系节点与继承体系中的叶子节点构成的类级网络连通片,并且将每个类级网络连通片转换为同种类型的实体集合,实体包括方法和属性两种类型;步骤4:分析每个实体集合元素之间的语义和结构耦合关系,得到相应耦合关系网络,并对其加权求和,将实体集合构建成方法级耦合无向网络模型;语义耦合关系是指抽取每个方法的方法名、变量名及注释构建成该方法的词汇库,根据潜在语义相似性算法,将每个方法转化成对应的语义词汇空间向量,计算向量之间的余弦夹角作为此函数对语义相似性的权值;结构耦合关系包括共享属性关系、方法调用关系和功能耦合关系;如果两个方法同时使用了一个属性,则它们之间存在共享属性关系;当一个方法调用了另一个方法时,它们具有方法调用关系;若将方法体视为一个功能域,则两个方法在同一个功能域中被执行时,称该方法对具有功能耦合关系;步骤5:确定待重构软件系统的方法级耦合无向网络中节点间不同类型耦合关系权值的最优系数,为待重构软件系统调节出一组最合适的系数;步骤6:依次遍历每个方法级网络,根据方法间的耦合强度,对每个方法级网络进行社团划分,从而得到待重构软件系统的新的系统结构;步骤7:将每个由聚类分析得到的方法社团视为一个类,对比新类与原始的结构,设定保证代码行为的重构前提条件,从而生成搬移函数、搬移属性和提炼类的重构建议;步骤8:按照生成的搬移函数、搬移属性和提炼类重构建议对待重构软件系统执行重构操作。
地址 110819 辽宁省沈阳市和平区文化路3号巷11号