CN113869378A - 一种基于聚类与标签传播的软件系统模块划分方法 - Google Patents
一种基于聚类与标签传播的软件系统模块划分方法 Download PDFInfo
- Publication number
- CN113869378A CN113869378A CN202111069531.2A CN202111069531A CN113869378A CN 113869378 A CN113869378 A CN 113869378A CN 202111069531 A CN202111069531 A CN 202111069531A CN 113869378 A CN113869378 A CN 113869378A
- Authority
- CN
- China
- Prior art keywords
- label
- feature
- clustering
- semantic
- distance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/231—Hierarchical techniques, i.e. dividing or merging pattern sets so as to obtain a dendrogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于聚类与标签传播的软件系统模块划分方法,使用一个基于特征密度的离群值检测算法过滤离群值,并且使用标签传播将这些离群值分配到一个合适的集群,从而克服传统语义聚类过程中语义离群值存在的问题。与现有的基于语义或者结构信息的软件聚类技术不同,本发明将部分软件实体单独处理,首先过滤掉这些对于聚类过程有干扰的离群值然后用余下高质量的语义特征构造一个划分骨架,然后用结构信息去处理这些离群实体。本发明可以有效地增强一个软件模块划分质量,从而优化了软件维护操作并且可以对一个复杂软件系统有一个更细致的理解。
Description
技术领域
本发明涉及软件维护过程中对于整个软件系统重新划分模块的方法,具体是一种基于聚类与标签传播的软件系统模块划分方法。
背景技术
在软件生命周期中,软件的模块化结构经常偏离原始设计。一个软件的代码结构反映了在实现软件功能性和非功能性需求时所采取的关键设计决策。在维护期间,一些程序修改操作(新需求迭代和修复Bug)通常由指定的开发人员执行。然而,这些开发人员很可能从设计文档中学习不同的设计概念。甚至有人为了编码更容易,从预设的代码基线中偏离。事实上,这些维护活动并非始终按照预期的设计进行。因此,软件模块化质量随着时间的推移一直下降,这使得对于软件基本组件的复用和对当前系统的修改相当困难。因此,一种可以确保软件系统可持续发展的软件模块化技术是很必要的。
软件聚类技术旨在将软件实体(例如文件、函数、类等)映射为其对应的模块。软件聚类的输入是从代码数据中提取可以表征整个软件系统的特征。获取特征后,各种聚类方法(例如,凝聚层次、基于搜索、基于图)用于对软件实体进行分组。一个具有良好模块化结构的软件系统划分结果是这些聚类技术的输出。这个划分结果用于帮助了解已发布的系统并优化维护活动。如果关注提取特征的方式,其依赖的代码数据有三个类别:结构信息、语义信息和两者的结合。结构信息有助于构建一个实体依赖图,从而可以把聚类问题转化为对一张图的划分过程。语义信息揭示了很多有关设计的细节概念。如何提取单词和应用哪些语义分析方法来获得语义特征是这些方法之间的主要区别。语义特征之间的距离揭示语义强度软件实体之间的关系,这个距离驱动了整个聚类过程。此外,这两种信息的组合也是比较流行的信息提取方式。当把软件聚类视为多目标优化问题,该混合特征提供了更多关于目标函数的选择。
特征的质量对于软件质量有很大的影响。在使用结构信息时,一些方法已经注意到一些存在干扰的软件实体,并指出有一个预处理步骤移除这些与众多模块有联系的公共接口文件或工具库文件是必要的。然而,语义方法的基础是使用相似概念词汇的实体应归入同一个集群,但是其在聚类过程中几乎没有考虑语义离群值。这些离群值的出现总是降低聚类结果的准确性。按照经验来说,这种离群值可能一开始就存在于组织结构中,或者随着软件的演化而出现。图1描述了一个软件的真实组织结构。目录结构是开发人员对于设计师概念理解的具体实施。所以,除了这些离群值,同一父文件夹中的实体倾向于保持相似的词汇信息。根据经验,语义离群值的来源可能来自以下五个位置:1)在一个组件内部的公共库函数和工具类;2)功能比较精确且代码行数微小的接口;3)组件之间的连接器;4)开发过程中编码不当;5)维护期间引入的新功能。这些离群值不呈现明显的语义特征,但是它们可能与同一模块中的其他实体在结构上有直接的联系。
发明内容
针对上述问题,本发明的目的在于提供一种基于聚类与标签传播的软件系统模块划分方法,能够克服语义聚类过程中离群值的存在,通过语义离群值过滤和标签传播来增强软件系统模块划分。技术方案如下:
一种基于聚类与标签传播的软件系统模块划分方法,包括以下步骤:
步骤1:从源代码中提取语义信息和结构信息:
所述语义信息指代码文件中的语句;通过基于主题聚类的信息提取方式,得到每个文件实体的主题概率分布,从而获得所有文件实体的向量表示;
所述结构信息代表文件之间的依赖关系;对软件代码进行静态分析发现文件之间依赖关系,构建文件依赖图;
步骤2:基于特征密度的局部离群因子算法,计算出每个语义特征的局部离群因子,识别对于语义聚类过程有干扰的离群值;
步骤3:过滤掉对聚类过程有干扰的离群实体后,利用层次聚类算法对剩余的高质量语义特征进行分组,得到划分骨架;
步骤4:利用文件依赖图处理被过滤掉的离群实体:在得到的划分骨架中,部分实体已经被分配到稳定的集群标签,则将这部分实体在文件依赖图中对应的主干节点标注上其集群标签;将离群值对应的节点初始化一个唯一的标签;在文件依赖图上不断迭代标签传播过程,直到每个节点都被分配了一个合适的标签
进一步的,所述步骤2中基于特征密度的局部离群因子算法具体为:
步骤21:计算所有特征之间的真实距离以构建距离矩阵;
步骤22:对于每个输入的文件实体特征,构造其K距离邻域,并计算该特征和其K距离邻域内部其他每个特征的可达距离,两个特征之间的可达距离rd k(Pi,Pj)为:
rd k(Pi,Pj)=max{dk(Pj),d(Pi,Pj)} (1)
其中,dk(Pj)指的是到达特征Pj第K长的距离长度,d(Pi,Pj)指的是特征Pi到达特征Pj的真实距离;
步骤23:计算每个特征的邻域内所有特征的局部可达性密度,在邻域内部,计算每个特征的局部可达密度lrd k(Pi):
式中,Nk(Pi)指的是特征Pi的K距离邻域,o指的是特征Pi的K距离邻域内部的其它特征;rd k(Pi,o)为特征Pi到达其K距离邻域内部每个特征的可达距离;|Nk(Pi)|指该邻域内部包含的特征的数量,其值至少为K;
步骤24:计算每个特征的局部离群因子lof k(Pi):
更进一步的,所述步骤3中采用的聚类算法是凝聚层次聚类方法,通过计算两个特征间的巴氏距离,衡量两个文件实体之间的语义关联强度。
更进一步的,所述步骤4建立在发布者-监听者标签传播算法的基础上,每次迭代,文件依赖图上节点的深度依赖关系用于传播标签;一个作为监听者的节点将接收来自所有相邻节点的信息并实时更新标签权重信息,存储在其标签存储器中;之后该节点将切换为一个信息发布者,并将其标签传播给周围邻居;为控制每个节点的监听和发布过程,其规则如下:
1)主干节点的标签权重被设定为发布者-监听者标签传播算法的最大迭代次数;
2)若一个监听者从它的所有邻居节点中只收到一种标签,则标签的权重需被放大;
3)若一个监听者从它的所有邻居节点中收到多种标签,在经过一个多项分布试验后,监听者将试验结果最大的标签存入自身的标签存储器中;
4)发布者总是选择最大权重的标签在它的周围邻居传播;如果到达,则该标签不展开,以避免产生过于庞大的集群;
5)迭代完毕后,若带有某同一标签的节点个数小于5,则该类节点在文件依赖图上被分配到其邻居集群中。
本发明的有益效果是:
1)本发明提出了一种以语义信息为主,结构信息为辅的软件系统模块划分技术,其划分准确率具有足够的竞争性;
2)当使用语义信息来表征一个软件系统时,本发明克服了语义离群值的出现,首次将一个基于密度的离群值检测算法(LOF)应用在软件聚类问题中去过滤语义离群值;
3)本发明提出了一种新的思路,即图上半监督学习去处理这些被过滤离群实体。
附图说明
图1为是一个发布后的软件系统的组织结构示意图。
图2为本发明方法EVOL的整体架构图。
图3(a)是在参数FR变化下,系统Content的划分结果的MoJoFM值变化趋势图。
图3(b)是在参数FR变化下,系统Intl的划分结果的MoJoFM值变化趋势图。
图4为本发明方法和其他对比方法在6个系统上划分结果的MoJoFM变化图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细说明。本发明的总体思路是单独处理一部分实体,即过滤语义离群值稍后再处理。为此,本发明方法提出了一种两步聚类方法EVOL(Enhancing Via Outliers filtration and Label propagation简称为EVOL)。EVOL依赖一个基于特征密度的异常值检测算法去计算每个特征的局部异常因子。因此,该方法过滤掉会阻碍聚类过程的离群值并使用剩余高质量的语义特征来构建分区骨架。之后,应用标签传播来将每个过滤掉的离群实体分配到一个合适的集群。
本发明方法的整体架构如图1所示,方法主要由信息提取,划分骨架和离群实体分配三部分组成。
步骤1:提取语义信息的目的是为了获得所有文件实体的向量表示。EVOL使用一个基于主题聚类的信息提取方式LDA(Latent Dirichlet Distribution)。在LDA中,一个文件涉及多个包含不同关键词的主题。首先收集每个文件中有明确语义的的关键词(标识符、注释);在经过预处理(停用词去除、词形还原)后,从这些收集的原始文本数据中构建出LDA所需的字典(Dictionary)和语料库(Corpus);基于输入字典和语料库,LDA模型产生每个输入文件的多项式主题概率分布。最后,所有文件的主题概率分布存储在一个m×n矩阵(称为TDM)。其中,m表示输入文件实体的数量,n表示主题的数目。表1给出了LDA产生的4个主题和其各自的关键词分布示例。
提取结构信息的目的是构建文件依赖图(FDG)。EVOL对软件代码进行静态分析从而发现文件之间依赖关系(Include,Call,Use)。具体的构造流程如下:假设节点A和节点B是FDG上直接连接的节点。从A到B的边表示文件A引用了来自文件B较小颗粒度的实体,这条边的权重是这些引用的数量。此外,每个实体的目录信息也会被记录,这个用于识别异常值的每个文件实体。本文使用的静态分析工具Understand。
表1 LDA产生的主题示例
步骤2:在步骤1中得到了每个文件实体的主题概率分布(称为语义特征)。EVOL利用一个基于特征密度的Local Outlier Factor(LOF)算法过滤掉对于语义聚类过程有干扰的离群值。表2描述了LOF计算每个特征的局部离群因子(lof)时的一些符号概念。
考虑到在整个特征数据集中计算计算每个特征的lof值具有一定难度,EVOL缩小了LOF的算法的使用范围。在图1中展现了一个软件系统的组织结构示例。除了这些离群实体,在同一父文件夹内部的文件实体呈现语义的相似性。因此,EVOL把在同一个第一级目录下的所有文件实体被视为一个特征子集。在每个子集上,LOF算法检测与其他实体明显不同的离群实体。
表2 LOF识别离群实体的概念描述
具体计算过程如下(在一个子集内部):
1)计算所有特征之间的距离以构建距离矩阵。
2)对于每个特征,构造k距离邻域并计算其到所有邻域的其他特征第k可达距离。
两个特征之间的可达距离rd k(Pi,Pj)根据以下公式计算:
rd k(Pi,Pj)=max{dk(Pj),d(Pi,Pj)} (1)
3)计算某一特征的邻域内所有特征的局部可达性密度。
在邻域内部,计算每个特征的局部可达密度lrd k(Pi),由以下公式计算:
4)根据下式计算每个特征的局部离群因子。
在得到了邻域内部每个特征的局部可达密度后,可以计算得到该特征的局部离群因子(lof k(Pi)),其计算公式如下:
LOF算法有两个参数:局部邻域K的大小和过滤比例(FR)。K被设置为20,因为它是一个合适的大小来体现特征的局部密度。FR表示预设的离群值在总体特征中的比例,对于每个软件系统,这个值并不统一。在后文会讨论对于FR的设置。
步骤3:根据预设的FR过滤掉对聚类过程有干扰的离群实体后,EVOL会利用一个层次聚类算法去对剩余的高质量语义特征进行分组。
此外,采用的层次聚类算法是凝聚层次聚类方法。在整个过程(包括识别离群实体)中,巴氏距离(Bhattacharyya Distance)用于计算两个特征间距离,其衡量了两个文件实体之间的语义关联强度,是驱动整个聚类过程的关键因素。由于被过滤出来的离群实体不属于任何一个集群。因此,在这一步骤得到的分组结果,称为划分骨架。
步骤4:本方明方法会利用FDG去处理被过滤掉的离群实体。在得到的划分骨架中,部分实体已经被分配了一个稳定的集群标签。因此,这些实体在FDG对应的主干节点会被标注上其集群标签。而离群值对应的节点会各自初始化一个唯一的标签。之后,EVOL会在FDG上不断迭代一个标签传播过程,直到每个节点都被分配了一个合适的标签。这过程建立在Speaker-listener Label Propagation上(SLPA)算法基础上。
在SLPA的每次迭代中,图上节点的深度依赖关系用于传播标签,这可以看作是一个动态的信息交换过程。作为一个监听者,一个节点将接收来自所有相邻节点的信息并实时更新标签权重信息,存储在其标签存储器中。之后,该节点将切换为一个发布者,并将其标签传播给周围邻居。因为我们的目标是为每个离群实体分配一个合适的标签,所以这个迭代过程很快。
当然,为了在SLPA中控制每个节点的监听和发布过程,本发明发给发容纳了几个新的规则。这些规则指定如下:
1)主干节点的初始标签权重应该被设定为SLPA的最大迭代次数(T),即在这个文件依赖图上,依据分区骨架给出节点的主标签应该不容易被更改。
2)如果一个监听者从它的所有邻居节点中只收到一种标签,这个标签的权重应该被放大。
3)如果一个监听者从它的所有邻居节点中收到多种标签,在经过一个多项分布试验后,监听者将试验结果最大的标签存入自身的标签存储器中。
4)一个信息发布者总是选择最大权重的标签在它的周围邻居传播。如果某种类型标签的数目到达停止条件,则该类型标签不应被传播,这样做避免产生过于臃肿的集群。
5)迭代完毕后,如果带有某同一标签的节点个数小于5,这类节点会在图上被合并到其邻居集群。
关于对EVOL的有效性评测,在Firefox Mozilla的6个子系统上开展。表3列出了实验中EVOL的参数设置情况。为了证明EVOL与其他软件聚类技术相比,其对于软件系统的划分结果具有足够的竞争力,本发明选择了其他几种先进的聚类方法(ACDC、Bunch-GA、GMA,SHC、EoD)中进行了对比。评价指标包括MojoFM、TurboMQ。MojoFM的计算公式如下:
其中A代表指定软件聚类技术的划分结果(集群组),B代表有开发设计人员提出的专家分解的划分结果。mno(A,B)代表从集群组A变换向集群组B所需的基本操作(MOVE和JOIN)数目。
另一个评价指标TurboMQ考察一个模块结构的内聚耦合性。其计算方式如下式:
其中Ui代表一个集群内部连边数总和,Vi,j指代集群i和集群j之间的连边数总和。
表3 EVOL参数设置
参数 | 值 |
离群实体比例FR | 0.2 |
特征的邻域大小K | 20 |
标签传播迭代最大次数T | 100 |
初始标签权重 | 100 |
图4是EVOL和其他一些先进方法在6个系统上的MoJoFM值变化图。纵坐标是一种评估指标MojoFM,横坐标是EVOL及其他几种先进的软件聚类技术(ACDC、Bunch-GA、GMA,SHC、EoD)。与其他聚类技术相比,EVOL增加了离群值过滤和标签传播两个步骤,从而增强了软件模块化质量。依据图4的结果,在6个系统案例中EVOL产生四个最佳MoJoFM值。尤其是在Content子系统上,EVOL与另一种最佳方法ACDC相比使得MoJoFM值提高了11%。此外,EVOL在六种情况下MojoFM的平均值的值是最佳的。总体而言,EVOL产生有竞争力的划分结果。
表4在不同过滤条件下的MoJoFM和TurboMQ值
表4呈现了4个案例下在不同过滤条件下的MoJoFM和TurboMQ值。对比实验的设置如下:随机选择一些特征在相同的比例下过滤。此设置的目的是为了评估EVOL中使用的过滤操作有效性。在两种过滤方式下,比较MoJoFM和TuboMQ的结果。结果显示在四种情况LOF都产生了更优秀的MoJoFM结果。比起随机过滤,LOF在4个案例下将MoJoFM值提升了10%到20%。此外,每个LOF产生的TurboMQ值高于随机过滤。因此,可以得出如下结论,LOF是一种有效的离群过滤方式从而提升划分结果的准确率。
图3(a)显示了对于系统Content的划分结果的指标MoJoFM和随着参数FR改变的变化趋势。图3(b)显示了对于系统Intl的划分结果的指标MoJoFM和随着参数FR改变的变化趋势。上文中提及EVOL有一个参数FR,其决定了预设的离群实体占输入语义特征的比例。为了分析整个实验过程中参数FR的影响,我们改变从0%到50%设置FR,步长为5%。横轴记录数值参数FR的变化趋势。纵轴代表MoJoFM值从0到100%的范围。在案例Content下,可以观察到MoJoFM值先增加然后突然下降。并且在Intl案例中观察到类似的趋势。这种现象可以解释如下:在最初过滤比例增加,一些明显不适合语义方法的离群实体被移除,因此MoJoFM值显著增加;但是,随着过滤比例超过一定阈值,结果突然下降。那是因为发生了不必要的过滤,形成了一些极端(臃肿或零散)的集群。此外,值得一提的是两种案例下的最佳FR参数是不同的。在Content下,最佳FR值是0.1;但对于Intl是0.2。对于不同的系统,其语义离群实体在总体特征中的比例是不一样的,并且这个无法事先知晓。考虑所有案例中,FR值设定为较大的0.2会导致不必要的过滤。相反,较小的0.1可能会导致使得一些真正的离群实体仍然参与后续的聚类过程。按照经验来说,比起后一种情况,前者的情况更可以接受。因此,在整个实验中FR值被设定为0.2。
总得来说,结果表明0.2这个值最适用于参数FR。此外,还可以推断出在文件依赖关系图上应用SLPA传播标签时,带标签系节点和不带标签节点的最合适的比率是0.8:0.2。
表5在4个案例下的OCTAccuracy
如果关注这些被过滤的离群实体,这些实体是否被分配到合适的集群中对于最终结果具有重大影响。为了考量这个问题,对比实验设置如下:关闭过滤和标签传播操作。这个设置的目的是为了观察如果把这些离群实体视为正常特征,这些实体被分配到其目标集群的准确率。OTCAccuracy指标衡量标签传播方法分配一个离群值进入目标集群的准确率。其计算方式定义在式(8)。这个定义借用Cluster to Cluster(c2c)这一集群分析指标,见式(6)。
inTarget(O)定义判别一个离群实体被分配到其目标集群,其定义在式(7)。
其中,outlierArray指代所有被过滤的离群实体集合。
表5给出了在两个条件下对于离群值实体分配的OTCAccuracy。EVOL通过使用LOF和SLPA显著提高了OTCAccuracy。例如,在Content案例下有213个文件被过滤为离群值,EVOL使得被分配到目标集群的离群实体是152;但在对比情况下是84。总的来说,标签传播可以将离群值分配到一个更合适的集群中。
Claims (4)
1.一种基于聚类与标签传播的软件系统模块划分方法,其特征在于,包括以下步骤:
步骤1:从源代码中提取语义信息和结构信息:
所述语义信息指代码文件中的语句;通过基于主题聚类的信息提取方式,得到每个文件实体的主题概率分布,从而获得所有文件实体的向量表示;
所述结构信息代表文件之间的依赖关系;对软件代码进行静态分析发现文件之间依赖关系,构建文件依赖图;
步骤2:基于特征密度的局部离群因子算法,计算出每个语义特征的局部离群因子,识别对于语义聚类过程有干扰的离群值;
步骤3:过滤掉对聚类过程有干扰的离群实体后,利用层次聚类算法对剩余的高质量语义特征进行分组,得到划分骨架;
步骤4:利用文件依赖图处理被过滤掉的离群实体:在得到的划分骨架中,部分实体已经被分配到稳定的集群标签,则将这部分实体在文件依赖图中对应的主干节点标注上其集群标签;将离群值对应的节点初始化一个唯一的标签;在文件依赖图上不断迭代标签传播过程,直到每个节点都被分配了一个合适的标签。
2.根据权利要求1所述的基于聚类与标签传播的软件系统模块划分方法,其特征在于,所述步骤2中基于特征密度的局部离群因子算法具体为:
步骤21:计算所有特征之间的真实距离以构建距离矩阵;
步骤22:对于每个输入的文件实体特征,构造其K距离邻域,并计算该特征和其K距离邻域内部其他每个特征的可达距离,两个特征之间的可达距离rdk(Pi,Pj)为:
rdk(Pi,Pj)=max{dk(Pj),d(Pi,Pj)} (1)
其中,dk(Pj)指的是到达特征Pj第K长的距离长度,d(Pi,Pj)指的是特征Pi到达特征Pj的真实距离;
步骤23:计算每个特征的邻域内所有特征的局部可达性密度,在邻域内部,计算每个特征的局部可达密度lrdk(Pi):
式中,Nk(Pi)指的是特征Pi的K距离邻域,o指的是特征Pi的K距离邻域内部的其它特征;rdk(Pi,o)为特征Pi到达其K距离邻域内部每个特征的可达距离;|Nk(Pi)|指该邻域内部包含的特征的数量个数;
步骤24:计算每个特征的局部离群因子lofk(Pi):
3.根据权利要求1所述的基于聚类与标签传播的软件系统模块划分方法,其特征在于,所述步骤3中采用的聚类算法是凝聚层次聚类方法,通过计算两个特征间的巴氏距离,衡量两个文件实体之间的语义关联强度。
4.根据权利要求1所述的基于聚类与标签传播的软件系统模块划分方法,其特征在于,所述步骤4建立在发布者-监听者标签传播算法的基础上,每次迭代,文件依赖图上节点的深度依赖关系用于传播标签;一个作为监听者的节点将接收来自所有相邻节点的信息并实时更新标签权重信息,存储在其标签存储器中;之后该节点将切换为一个信息发布者,并将其标签传播给周围邻居;为控制每个节点的监听和发布过程,其规则如下:
1)主干节点的标签权重被设定为发布者-监听者标签传播算法的最大迭代次数;
2)若一个监听者从它的所有邻居节点中只收到一种标签,则标签的权重需被放大;
3)若一个监听者从它的所有邻居节点中收到多种标签,在经过一个多项分布试验后,监听者将试验结果最大的标签存入自身的标签存储器中;
4)发布者总是选择最大权重的标签在它的周围邻居传播;如果到达,则该标签不展开,以避免产生过于庞大的集群;
5)迭代完毕后,若带有某同一标签的节点个数小于5,则该类节点在文件依赖图上被分配到其邻居集群中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111069531.2A CN113869378B (zh) | 2021-09-13 | 2021-09-13 | 一种基于聚类与标签传播的软件系统模块划分方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111069531.2A CN113869378B (zh) | 2021-09-13 | 2021-09-13 | 一种基于聚类与标签传播的软件系统模块划分方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113869378A true CN113869378A (zh) | 2021-12-31 |
CN113869378B CN113869378B (zh) | 2023-04-07 |
Family
ID=78995621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111069531.2A Active CN113869378B (zh) | 2021-09-13 | 2021-09-13 | 一种基于聚类与标签传播的软件系统模块划分方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113869378B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6778995B1 (en) * | 2001-08-31 | 2004-08-17 | Attenex Corporation | System and method for efficiently generating cluster groupings in a multi-dimensional concept space |
CN103593182A (zh) * | 2013-10-27 | 2014-02-19 | 沈阳建筑大学 | 一种采用聚类方式进行软件重构的方法 |
CN105893381A (zh) * | 2014-12-23 | 2016-08-24 | 天津科技大学 | 一种基于半监督标签传播的微博用户群体划分方法 |
CN106202206A (zh) * | 2016-06-28 | 2016-12-07 | 哈尔滨工程大学 | 一种基于软件聚类的源码功能搜索方法 |
CN106484401A (zh) * | 2016-09-23 | 2017-03-08 | 东北大学 | 一种面向对象软件的自动化重构方法 |
CN106649455A (zh) * | 2016-09-24 | 2017-05-10 | 孙燕群 | 一种大数据开发的标准化系统归类、命令集系统 |
CN106886446A (zh) * | 2017-01-18 | 2017-06-23 | 北京航空航天大学 | 软件源代码的验证方法及装置 |
CN109062763A (zh) * | 2018-07-31 | 2018-12-21 | 云南大学 | 一种从svn日志事件流中动态实时挖掘软件过程活动的方法 |
CN109614795A (zh) * | 2018-11-30 | 2019-04-12 | 武汉大学 | 一种事件感知的安卓恶意软件检测方法 |
CN110554868A (zh) * | 2019-09-11 | 2019-12-10 | 北京航空航天大学 | 一种软件复用代码检测方法及系统 |
US10831456B1 (en) * | 2019-05-31 | 2020-11-10 | The Mathworks, Inc. | External code integrations within a computing environment |
CN112559593A (zh) * | 2020-12-14 | 2021-03-26 | 长安大学 | 一种基于标签聚类的本地化差分隐私保护方法 |
CN112860535A (zh) * | 2019-11-12 | 2021-05-28 | 百度在线网络技术(北京)有限公司 | 一种用户页面的测试方法、装置、电子设备及存储介质 |
-
2021
- 2021-09-13 CN CN202111069531.2A patent/CN113869378B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6778995B1 (en) * | 2001-08-31 | 2004-08-17 | Attenex Corporation | System and method for efficiently generating cluster groupings in a multi-dimensional concept space |
CN103593182A (zh) * | 2013-10-27 | 2014-02-19 | 沈阳建筑大学 | 一种采用聚类方式进行软件重构的方法 |
CN105893381A (zh) * | 2014-12-23 | 2016-08-24 | 天津科技大学 | 一种基于半监督标签传播的微博用户群体划分方法 |
CN106202206A (zh) * | 2016-06-28 | 2016-12-07 | 哈尔滨工程大学 | 一种基于软件聚类的源码功能搜索方法 |
CN106484401A (zh) * | 2016-09-23 | 2017-03-08 | 东北大学 | 一种面向对象软件的自动化重构方法 |
CN106649455A (zh) * | 2016-09-24 | 2017-05-10 | 孙燕群 | 一种大数据开发的标准化系统归类、命令集系统 |
CN106886446A (zh) * | 2017-01-18 | 2017-06-23 | 北京航空航天大学 | 软件源代码的验证方法及装置 |
CN109062763A (zh) * | 2018-07-31 | 2018-12-21 | 云南大学 | 一种从svn日志事件流中动态实时挖掘软件过程活动的方法 |
CN109614795A (zh) * | 2018-11-30 | 2019-04-12 | 武汉大学 | 一种事件感知的安卓恶意软件检测方法 |
US10831456B1 (en) * | 2019-05-31 | 2020-11-10 | The Mathworks, Inc. | External code integrations within a computing environment |
CN110554868A (zh) * | 2019-09-11 | 2019-12-10 | 北京航空航天大学 | 一种软件复用代码检测方法及系统 |
CN112860535A (zh) * | 2019-11-12 | 2021-05-28 | 百度在线网络技术(北京)有限公司 | 一种用户页面的测试方法、装置、电子设备及存储介质 |
CN112559593A (zh) * | 2020-12-14 | 2021-03-26 | 长安大学 | 一种基于标签聚类的本地化差分隐私保护方法 |
Non-Patent Citations (3)
Title |
---|
JIABO HUANG等: "Deep Semantic Clustering by Partition Confidence Maximisation" * |
张涛等: "基于文本嵌入特征表示的恶意软件家族分类" * |
王飞等: "代码知识图谱构建及智能化软件开发方法研究" * |
Also Published As
Publication number | Publication date |
---|---|
CN113869378B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7169369B2 (ja) | 機械学習アルゴリズムのためのデータを生成する方法、システム | |
Cross et al. | Inexact graph matching using genetic search | |
Ning et al. | Toward automatic phenotyping of developing embryos from videos | |
US5937400A (en) | Method to quantify abstraction within semantic networks | |
CN106485089B (zh) | 谐波用户典型工况的区间参数获取方法 | |
Ramasundaram et al. | Text categorization by backpropagation network | |
CN113505141A (zh) | 基于人工智能实现数据库sql优化执行的自动化方法及系统 | |
CN113869378B (zh) | 一种基于聚类与标签传播的软件系统模块划分方法 | |
US11720600B1 (en) | Methods and apparatus for machine learning to produce improved data structures and classification within a database | |
CN106547877A (zh) | 基于6w业务逻辑模型的数据元智能标识解析方法 | |
CN116401368A (zh) | 一种基于主题事件分析的意图识别方法和系统 | |
CN113704519B (zh) | 一种数据集的确定方法、装置、计算机设备以及存储介质 | |
Federico et al. | Complex networks and deep learning for copper flow across countries | |
CN113704108A (zh) | 一种相似代码检测方法及装置、电子设备、存储介质 | |
CN111241275B (zh) | 一种短文本相似度评估方法和装置以及设备 | |
Broda et al. | Evaluation method for automated wordnet expansion | |
Rattinger et al. | Semantic and topological patent graphs: Analysis of retrieval and community structure | |
Torres et al. | Neural semi-supervised learning for multi-labeled short-texts | |
Mohammed et al. | Soft set decision/forecasting system based on hybrid parameter reduction algorithm | |
Zhang et al. | scZAG: Integrating ZINB-Based Autoencoder with Adaptive Data Augmentation Graph Contrastive Learning for scRNA-seq Clustering | |
Zhang et al. | Predicting Relations in SG-CIM Model Based on Graph Structure and Semantic Information | |
Yang et al. | Ontology mapping based on concept classification | |
Zhang et al. | A discretization algorithm based on Gini criterion | |
Li et al. | [Retracted] Text Knowledge Acquisition Method of Collaborative Product Design Based on Genetic Algorithm | |
Mokammel et al. | Analysis and graph representation of requirements models using computational linguistics methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |