[发明专利]一种基于快速搜索序列的结构型设计模式实例挖掘方法有效
申请号: | 201610120980.8 | 申请日: | 2016-03-03 |
公开(公告)号: | CN105808249B | 公开(公告)日: | 2019-06-11 |
发明(设计)人: | 俞东进;陈真理;张艳艳;张海平 | 申请(专利权)人: | 杭州电子科技大学 |
主分类号: | G06F16/2458 | 分类号: | G06F16/2458 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙) 33240 | 代理人: | 杜军 |
地址: | 310018 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于快速搜索序列的结构型设计模式实例挖掘方法,该方法首先构建一个用于形式化定义设计模式的通用模型,然后将结构型设计模式的形式化定义和待挖掘的软件源码转化为用三元组表示的类关系图;再遍历结构型设计模式的类关系图CRGd,构建其快速搜索序列,最后找出待挖掘的软件源码所包含的所有结构型设计模式实例。本发明可以优先过滤大量不满足条件的子图,减少挖掘过程的搜索空间,从而提高挖掘过程的执行效率。 | ||
搜索关键词: | 一种 基于 快速 搜索 序列 结构 设计 模式 实例 挖掘 方法 | ||
【主权项】:
1.一种基于快速搜索序列的结构型设计模式实例挖掘方法,其特征在于该方法的具体步骤是:步骤(1).构建一个用于形式化定义设计模式的通用模型,其中包含5种描述设计模式基本特征的必备元素,分别为:1)pattern:表示设计模式形式化定义的根元素,描述设计模式的名称;2)role:表示设计模式中所涉及的各个角色,每个角色包含attribute和method两个子元素;3)attribute:表示角色包含的属性信息;4)method:表示角色包含的方法信息;5)relation:表示两个角色之间的关系,为泛化关系、聚合关系、关联关系或依赖关系;使用上述元素形式化定义每种结构型设计模式,并将其保存成XML文档;步骤(2).将结构型设计模式的形式化定义和待挖掘的软件源码转化为用三元组CRG=<V,E,W>表示的类关系图,其中:V={v1,v2,...,vn}为类关系图的顶点集合,每个顶点表示结构型设计模式的某个角色或待挖掘的软件源码中的某个类;
为类关系图的边集合,每条边表示该边的两个顶点所表示角色之间或类之间的关系,分为泛化关系gen、聚合关系agg、关联关系ass和依赖关系dep;W表示为类关系图中顶点和边赋权重的函数,设顶点vi所表示的角色或类包含α个属性和β个方法,该函数将权重2、3、5、7、11和13分别赋至角色或类所拥有的每一个属性、方法以及每条边所对应的泛化关系gen、聚合关系agg、关联关系ass和依赖关系dep,每条边的权重即为该边所表示关系的权重,并将2α、2β与从该顶点vi出发的所有边的权值的乘积作为顶点vi的出度权重wout(vi),将指向该顶点vi的所有边的权值的乘积作为顶点vi的入度权重win(vi);步骤(3).遍历每种结构型设计模式的类关系图CRGd,构建其快速搜索序列,可表示为
其中mi表示快速搜索序列的一个结点,wi表示结点mi所对应的类关系图CRGd中顶点vk的权重信息,权重信息包括出度权重和入度权重,ri,j表示结点mi所表示顶点vk到其他结点mj所表示顶点vk'之间的关系,“*”表示大于等于一个;快速搜索序列的构建过程分以下两个步骤:1)在CRGd未被访问过的顶点中选择出度权重最大的顶点v,若存在多个具有最大出度权重的顶点,则选择其中入度权重最大的顶点,选择CRGd剩余的边中从顶点v出发的权重最小的边e,将边e的两个顶点添加到已被访问的顶点集合VT中,然后将顶点v作为快速搜索序列SEQ中的一个结点,即记录SEQ中的mi和wi,将边e的信息添加到该结点中,即记录SEQ中的ri,j,并将边e从CRGd中删除;2)找出CRGd剩余的边中从VT出发的所有边,若不存在,则返回步骤1);否则从中选择权重最小的边集合F,针对边集合F的每条边,若边的末尾顶点属于VT,则将该边的信息添加到相应的SEQ结点中,即记录SEQ中的ri,j,并将其从F和CRGd中删除;否则将该边的末尾顶点添加到VT中,并为其创建一个SEQ结点,即记录SEQ中的mi和wi;重复步骤2)直至CRGd中的所有顶点均被访问;步骤(4).在待挖掘的软件源码的类关系图CRGs中找出某种结构型设计模式的快速搜索序列SEQ中第一个结点m1的所有候选顶点,每个候选顶点的出度权重和入度权重必须能够分别整除m1的出度权重和入度权重;然后针对m1的每个候选顶点,寻找每个后续结点mi的候选顶点,这些候选顶点的出度权重和入度权重必须能够分别整除对应结点的出度权重和入度权重,并且必须与其余结点的某个候选顶点之间存在对应的关系,即ri,j中定义的结点mi和mj之间的关系;在每次遍历结束后,任取SEQ中每个结点的一个候选顶点所对应的类组合在一起即构成了一个设计模式实例,并将其添加到设计模式实例集合中;所有遍历结束后即可找出待挖掘的软件源码所包含的所有结构型设计模式实例。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610120980.8/,转载请声明来源钻瓜专利网。
- 上一篇:一种基于json格式数据的命名匹配方法
- 下一篇:移动悬浮图标的方法和装置