[发明专利]一种基于功能结构的软件体系结构恢复方法有效
| 申请号: | 202110270867.9 | 申请日: | 2021-03-12 |
| 公开(公告)号: | CN112988216B | 公开(公告)日: | 2022-07-29 |
| 发明(设计)人: | 张莉;贾航;葛宁;周雨飞;李延旭;王茵迪 | 申请(专利权)人: | 北京航空航天大学 |
| 主分类号: | G06F8/70 | 分类号: | G06F8/70;G06F8/74 |
| 代理公司: | 北京天达知识产权代理事务所(普通合伙) 11386 | 代理人: | 庞许倩 |
| 地址: | 100191*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 功能 结构 软件 体系结构 恢复 方法 | ||
1.一种基于功能结构的软件体系结构恢复方法,其特征在于,包括:
构建待恢复体系结构的软件的功能结构知识;所述功能结构知识中的每一功能包括父功能和/或子功能,以及包括功能相关类;其中,所述功能中的最低层功能直接包含所述功能相关类;
将父功能、子功能、最低层功能分别映射为对应的父构件、子构件和叶子构件,并将所述最低层功能直接包含的功能相关类划分至该最低层功能映射到的叶子构件中;
从类的源代码中获取结构信息和文本信息,并基于所述文本信息及叶子构件的名称和功能描述,得到所有类和所有叶子构件的关键词;
从所有的类中剔除所述构件中已包括的类得到未恢复的类;基于所述结构信息和关键词,得到每一未恢复的类与每一叶子构件的相关性,将相关性超过相关性阈值的类划分至与其相关性最高的叶子构件中;重复遍历所有未恢复的类,得到更新后的构件;
若所有的类均完成恢复,则基于更新后的构件恢复出所述软件的软件体系结构。
2.根据权利要求1所述的基于功能结构的软件体系结构恢复方法,其特征在于,所述基于所述文本信息及所述叶子构件的名称、功能描述,得到所有类和所述叶子构件的关键词,包括:
对于每一类,从其对应的文本信息中提取出类的词汇,对提取出的词汇进行分词、排序处理,得到该类的关键词;
对于每一叶子构件,提取该叶子构件的所有构件中的类中的词汇、以及叶子构件的名称和功能描述中的词汇,对提取出的词汇进行分词、排序处理,得到该叶子构件的关键词。
3.根据权利要求2所述的基于功能结构的软件体系结构恢复方法,其特征在于,通过执行以下操作得到每一未恢复的类与每一叶子构件的相关性:
基于所述结构信息,得到未恢复的类的结构特征;基于所述结构特征,得到未恢复的类与叶子构件之间的结构相关性;
基于未恢复的类与叶子构件的关键词,分别生成对应的文本向量;基于所述文本向量,得到未恢复的类与叶子构件之间的功能语义相关性;
基于所述结构相关性、功能语义相关性及其对应的权重,获得每一未恢复的类与每一叶子构件的相关性。
4.根据权利要求3所述的基于功能结构的软件体系结构恢复方法,其特征在于,所述结构特征包括:
依赖特征、被依赖特征、关联特征、被关联特征、继承特征、被继承特征、实现特征和被实现特征。
5.根据权利要求3或4所述的基于功能结构的软件体系结构恢复方法,其特征在于,基于所述结构特征,得到未恢复的类与叶子构件之间的结构相关性,包括;
计算每一未恢复的类与每一叶子构件中存在所述结构特征的相关类的关系数;
对得到的关系数进行归一化处理;
基于归一化处理后的关系数,得到未恢复的类与叶子构件的结构相关性。
6.根据权利要求1所述的基于功能结构的软件体系结构恢复方法,其特征在于,所述方法还包括:
若存在剩余未恢复的类,则将剩余未恢复的类聚类为伪叶子构件,所述伪叶子构件的数量等于聚类个数;
基于更新后的构件、所述伪叶子构件,恢复出所述软件的软件体系结构。
7.根据权利要求6所述的基于功能结构的软件体系结构恢复方法,其特征在于,通过执行以下操作得到所述伪叶子构件:
基于所述结构信息和文本信息,得到剩余未恢复的类的结构-文本特征;
基于所述结构-文本特征,生成对应的特征向量;
对所述特征向量进行聚类处理,得到剩余未恢复的类的聚类结果,为聚成一类的类分配伪叶子构件。
8.根据权利要求7所述的基于功能结构的软件体系结构恢复方法,其特征在于,所述结构-文本特征包括:
调用特征、继承特征、注解特征和命名片段特征。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110270867.9/1.html,转载请声明来源钻瓜专利网。





