主权项 |
一种生成包图的Java程序包概要化方法,其特征在于,包括以下步骤:步骤1):根据确定的类的功能分类,建立包的类别分析表格;步骤2):分析包中内容确定标签:a)如果包中含有接口;使用公式|implement|/|classes|>=θ,implement表示包中实现接口功能的类的数量,classes表示包中所有的类的数量,θ表示一个预定值,所述θ界于30%至100%之间,接口类标签即为包的最终标签,并且直接跳转至步骤3);b)如果包中不含有接口,或者接口数量不满足公式,达不到预定值;根据步骤1)中的表格,分析包中不同类别的类所占包中所有类的比例,并对分析结果降序排列,通过比较占最大比例的类与所有其他类之间的比例差值来确定最终包的主标签及子标签,主标签是占最大比例的类,子标签为类的类别名称,同时根据标签筛选内容;b‑1)根据包标签中的子标签,选择包中的与该标签相符合的类,并进行降序排列,设定阈值k=30%,对排序结果进行提取;b‑2)再将上述提取的结果再一次进行关键内容提取;对各个类所对应的不同类别的方法进行提取,同时限定每个类中选出的方法的数量小于等于30%;b‑3)再将选出的方法的签名提取出来与类别名称结合生成包的内容描述表格;步骤3):分析包与包之间的关系;3‑1)先对每个包中的成员根据访问权限进行过滤,即去除掉private权限和protected权限的成员,再根据已确定的包的标签进行排序,排序的规则是根据包与包之间关系的复杂程度降序排列;3‑2)分析包与包之间的依赖关系,建立依赖关系分析表;如果目标包中使用了外部包的类中的成员,就会对表格中相应的数据进行增加,在对目标包分析结束后,一个完整的包间调用关系表就会生成;3‑3)分析包与包之间的泛化关系,建立泛化关系分析表;如果存在目标包中类继承于外部包中的类,就会对表格中相应的数据进行增加,在对目标包分析结束后,一个完整的包间泛化关系表就会生成;3‑4)利用公式p=|classselected|/|total|来确定包与包之间的关系,classselected表示在分析关系时满足相应关系的类的数量,total表示为所述外部包中所有类的数量,按比例关系降序原则进行排列,选取满足条件区间的包间建立关系,其余的就不建立关系;设定p>=50%为第一条件区间,如果p满足p>=50%,将包与包建立关系;设定30%<=p<50%为第二条件区间,如果p不满足第一条件区间,则使用第二条件区间判定,将满足第二条件区间的将所有包按从高到底排序后,选择一半数量的包建立联系,如果数量为奇数,则对数量一半取整作为结果;步骤4):选取确定的关系生成最后的关系图,将关系图与包的内容描述表格综合起来,作为最后的包图。 |