CN112947995A - 一种Java项目的体系结构策略定位方法及系统 - Google Patents
一种Java项目的体系结构策略定位方法及系统 Download PDFInfo
- Publication number
- CN112947995A CN112947995A CN202110235012.2A CN202110235012A CN112947995A CN 112947995 A CN112947995 A CN 112947995A CN 202110235012 A CN202110235012 A CN 202110235012A CN 112947995 A CN112947995 A CN 112947995A
- Authority
- CN
- China
- Prior art keywords
- java
- strategy
- architecture
- type
- policy
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种Java项目的体系结构策略定位方法及系统,属于软件体系结构策略代码定位领域,解决了现有软件体系结构策略代码定位效率低下的问题。一种Java项目的体系结构策略定位方法,包括如下步骤:提取Java项目中所有Java方法的特征文本;处理所述特征文本,得到对应的特征向量;确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至对应于所述体系结构策略类型的体系结构策略模型,得到对应于所述体系结构策略类型的Java方法所属的切点方法类型;基于所述所属的切点方法类型,在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。该方法能够提高软件体系结构策略代码定位的效率。
Description
技术领域
本发明涉及软件体系结构策略代码定位领域,尤其涉及一种Java项目的体系结构策略定位方法及系统。
背景技术
体系结构策略(Architectural Tactics)是系统架构和设计人员在长期的设计活动中总结凝练出的、为实现系统非功能需求的普适性设计方案。这些方案在长期的设计活动中沉淀,系统设计人员将其总结和归纳为一系列面向非功能属性设计的体系结构策略,以实现对设计方案的复用。这些体系结构策略在学术界和工业界都广泛使用,例如在航空控制系统中,通过冗余策略保障系统对可靠性的要求。
针对系统非功能需求,设计人员在系统设计阶段往往会给出系统包含的一系列体系结构策略,但是由于开发人员在实际开发和系统维护过程中,对体系结构策略设计的理解偏差导致设计中的体系结构策略实现错误,或者随着系统的维护与更迭导致原有的体系结构策略被破坏,这会导致系统的质量属性难以保证。软件开发的现状是,在软件的生命周期中,设计和开发的时间只占约22%,大多数时间被用于系统维护,而在这部分时间开销中,约50%-90%的时间和经费被开发人员用于理解程序。对于大型遗留软件系统,缺失、过时的文档使得开发人员无法从文档中获得体系结构信息,也无法掌握系统当前的状态。唯一能够获得软件系统信息的方式就是阅读源码,但大型系统的源码是难以分析和理解的,会消耗非常多的人力和时间,特别是对于刚加入团队工作的开发人员而言。即便是长期持续开发的人员,从代码中理解体系结构并追踪变化也是一件非常困难的事情。因此,在没有体系结构信息的情况下,难以快速和完全理解模块乃至系统的结构,会消耗大量的资源,并带来巨大的风险。因此,如果能够利用源码自动化地定位体系结构策略,以直观的形式呈现给开发和维护人员,则能够帮助开发人员快速的从整体上理解系统。
对于体系结构策略的定位问题,现有的技术主要分为两种,一是基于基本定位方法的代码定位,二是基于机器学习的文本定位。
对于基于基本定位方法的代码定位,目前最常用的方法就是信息检索,信息检索的方法是基于模型的测试的常用方法,基于模型的测试(Model-Based Testing,MBT)是结合了模型驱动架构(Model-Driven Architecture,MDA)的思想从传统测试方法中发展而来的高效自动化测试方法。其方法的核心就是检测模型的完整性、正确性、以及代码与模型的一致性。信息检索可以作为MBT的主要定位方法,主要原因是MBT中检测模型与代码一致性的关键在于模型信息和代码信息的匹配和映射,所以在MBT中,信息检索变得较为高效,在信息检索的基础上加上针对不同场景的条件约束,将会大幅提高代码定位的查准率和查全率。
因为机器学习的文本定位方法,进行优化后的准确率可能也并不能达到自动化定位的预期效果,所以,有研究者希望通过机器学习的方法进一步提高定位的查全率和查准率。目前,针对体系结构策略的机器学习的定位方法主要是基于文本分类的方法。MehdiMirakhorli与Jane Cleland-Huang基于文本分类的方法,完成了Archie-Smart-IDE,可基于文本来定位和追踪代码中实现体系结构策略的所有代码。Archie-Smart-IDE工具对系统中各种体系结构策略的识别的准确率较高,但工具的缺陷在于对体系结构策略的识别是完全基于整个代码文件对应的文本,并不关心代码的其他信息,也并不关心定位的粒度,即无论定位到的代码是类、对象、方法、变量、注释等,只要该代码体的文本与体系结构策略的实现有关,工具就会定位出这些代码元素。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种Java项目的体系结构策略定位方法及系统,用以解决现有软件体系结构策略代码定位准确率及效率低下的问题。
一方面,本发明提供了一种Java项目的体系结构策略定位方法,所述方法包括如下步骤:
提取Java项目中所有Java方法的特征文本;
处理所述特征文本,得到对应的特征向量;
确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至对应于所述体系结构策略类型的体系结构策略模型,得到对应于所述体系结构策略类型的Java方法所属的切点方法类型;
基于所述所属的切点方法类型,在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。
在上述方法的基础上,本发明还做出了如下改进:
进一步,基于Java字节码操作库,从Java项目中的源代码中提取出每一Java方法的特征文本。
进一步,所述特征文本包括方法名、方法返回类型、方法参数列表信息、方法调用组件信息。
进一步,所述处理所述特征文本得到特征向量,包括:
对所述特征文本进行分词处理,得到所述特征文本中包含的单词:
判断所述方法名中是否包含大写字母,若不包含,则将所述方法名作为一个单词;否则,以所述方法名中的大写字母为分界,将所述方法名拆分成数个单词;其中,第i个大写字母为第i+1个单词的首字母;i取1,......,n,n表示大写字母的个数;
去除所述方法返回类型、方法参数列表信息、方法调用组件信息中的停用词,得到所述方法返回类型、方法参数列表信息、方法调用组件信息中包含的单词;
基于词频-逆文件频率方法,对所述特征文本中包含的单词进行重要性排序,将排序靠前的数个单词作为特征向量。
进一步,所述体系结构策略类型为Ping/Echo策略、Heartbeat策略、Voting策略、Redundancy策略或Checkpoint/Rollback策略。
进一步,所述Ping/Echo策略的切点方法类型包括:ping()、notifyException()、handleException()、echo();
所述Heartbeat策略的切点方法类型包括:receive()、update()、alive()、lost();
所述Voting策略的切点方法类型包括:vote()、request()、failService()、stopService();
所述Redundancy策略的切点方法类型包括:request()、requestService、selectResult()、updateState();
所述Checkpoint/Rollback策略的切点方法类型包括:notifyCkp()、storeCkp()、failTask()、rollback()、commit()。
进一步,对于每一类型的体系结构策略模型,均通过执行以下操作,得到验证通过的体系结构策略模型:
获取与当前体系结构策略类型相关的Java方法对应的特征向量及标签;所述标签用于指示当前体系结构策略中的切点方法类型;
还获取与当前体系结构策略类型无关的Java方法对应的特征向量及标签;
基于获取到的特征向量及标签,训练并验证所述体系结构策略模型,得到验证通过的体系结构策略模型。
进一步,训练并验证所述体系结构策略模型选用的算法为朴素贝叶斯算法、支持向量机算法或随机森林分类算法。
进一步,所述方法还包括:
在所述Java项目中标注所述对应于所述体系结构策略类型的Java方法所属的切点方法类型。
另一方面,本发明还提供了一种Java项目的体系结构策略定位系统,所述系统包括:
特征文本获取模块,用于提取Java项目中所有Java方法的特征文本;
特征向量生成模块,用于处理所述特征文本,得到对应的特征向量;
分类模块,用于确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至对应于所述体系结构策略类型的体系结构策略模型,得到对应于所述体系结构策略类型的Java方法所属的切点方法类型;
体系结构策略定位模块,用于在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。
与现有技术相比,本发明至少可实现如下有益效果之一:
本发明提供的Java项目的体系结构策略定位方法及系统,
第一,本发明通过提取Java字节码、调用BCEL操作库的相关方法自动化的提取出项目所有Java实现方法的方法名、方法调用组件、方法参数列表信息以及方法返回类型信息作为特征文本,因此识别粒度较细;
第二,本发明还通过对上述特征文本进行分词处理,从而提取到特征向量;
第三,本发明只针对策略的切点方法进行定位,在这些层面上,本发明中的技术方案明显优于传统的信息检索和基于文本分类的机器学习的自动定位技术;
第四,本发明还通过分类算法,训练得到了体系结构策略模型;并经过对测试集进行实验,验证了本实施例在进行可靠性软件体系结构策略定位时有着较高的准确率和召回率;同时经过实验验证了本实施例的有效性、权威性与通用性。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例中提供的Java项目的体系结构策略定位方法流程图;
图2是Ping/Echo策略的时序图;
图3是Heartbeat策略的时序图;
图4是Voting策略的时序图;
图5是Redundancy策略的时序图;
图6是Checkpoint/Rollback策略的时序图;
图7是特征文本与标签的对应关系;
图8是本发明实施例2中提供的Java项目的体系结构策略定位系统结构示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
实施例1
本发明的一个具体实施例,公开了一种Java项目的体系结构策略定位方法,流程图如图1所示,所述方法包括如下步骤:
步骤S1:提取Java项目中所有Java方法的特征文本;
具体地,本实施例基于Java字节码操作库(BCEL),从Java项目中的源代码中提取出每一Java方法的特征文本。
实施过程中,使用人员需提供可运行的Java项目,调用BCEL操作库的相关方法即可自动提取出Java项目所有Java实现方法的特征文本;
优选地,通过分析Java项目源码以及系统体系结构策略实现切点方法,本实施例中提取的特征文本包括以下内容:
(1)方法名
一般地,系统开发人员会按照驼峰命名法为每一个Java方法赋予其功能方面的含义。因此,体系结构策略的切点方法作为满足体系结构策略实现的方法,往往也按照驼峰命名法进行命名。因此,方法名可以作为重要特征用于进行策略定位。
(2)方法返回类型
在Java项目中,实现相同功能的方法往往具有相同的方法返回类型,例如:可靠性策略中的心跳判活方法,返回类型往往是boolean等。因此,方法返回类型可以作为重要特征用于进行策略定位。
(3)方法参数列表信息
在Java项目中,实现相同功能的方法往往具有相同的传参,例如:一个实现发送消息的方法,传参往往包括java.lang.String、java.nio.ByteBuffer等。因此,方法参数列表可以作为重要特征用于进行策略定位。
(4)方法调用组件信息
在Java项目中,实现相同功能的方法往往会调用相同的组件,例如:发送消息的方法,往往会调用java.io、java.nio、java.net中的一些组件。因此,方法调用组件可以作为重要特征用于进行策略定位。
通过选择上述4种Java方法的特征,能够提取到Java方法中的关键信息;同时,提取到的特征能够显著减少训练时的文本规模,避免将整个文本文件作为输入时导致的训练量过大、准确度较低的问题。
步骤S2:处理所述特征文本,得到对应的特征向量;具体地,
步骤S21:对所述特征文本进行分词处理,得到所述特征文本中包含的单词:
对方法命的处理:在该步骤中,考虑到方法名基于驼峰命名法进行命名,因此,在生成特征向量的过程中,首先需要基于方法名的这一特点,对方法名进行分词处理,具体地:判断所述方法名中是否包含大写字母,若不包含,则将所述方法名作为一个单词;否则,以所述方法名中的大写字母为分界,将所述方法名拆分成数个单词;其中,第i个大写字母为第i+1个单词的首字母;i取1,......,n,n表示大写字母的个数;
对方法返回类型、方法参数列表信息、方法调用组件信息的处理:
由于方法返回类型、方法参数列表信息、方法调用组件信息中可能存在停用词,例如“.”等,其对生成特征向量没有帮助,因此需要去除;即,去除所述方法返回类型、方法参数列表信息、方法调用组件信息中的停用词,得到所述方法返回类型、方法参数列表信息、方法调用组件信息中包含的单词;
步骤S22:基于词频-逆文件频率方法,对所述特征文本中包含的单词进行重要性排序,将排序靠前的数个单词作为特征向量;
特征向量化技术为词频-逆文件频率(TF-IDF),是一种用于信息探勘的常用加权技术。TF-IDF是一种统计方法,用于评估词文本对于一个文本集或一个语料库中的其中一份文件的重要程度。词文本的重要性随着它在该文件中出现的次数而增加,但同时会随着它在语料库中出现的频率而降低。
步骤S3:确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至所述体系结构策略类型对应的、验证通过的体系结构策略模型,得到与所述体系结构策略类型相关的Java方法对应的切点方法类型;
需要说明的是,在本实施例中,根据五种可靠性策略的时序图,分析其策略方法的执行逻辑,确定了相应的策略切点方法类型;
系统的可靠性,指的是应用程序具有预期功能的程度。可靠性策略一般可以被分为三类:(1)故障检测,(2)准备与恢复,(3)恢复重引入。故障检测策略是通过主动或被动的检测手段对被检测对象进行故障诊断的策略,本发明针对故障检测策略中的两个常见策略:Ping/Echo策略和Heartbeat策略,描述其执行的线性时序逻辑规约。剩下的两类。准备与恢复策略、恢复重引入策略,均属于故障恢复策略。故障恢复策略通过提供冗余机制来实现容错以及提供系统从错误状态进行恢复的机制。本发明针对准备与恢复策略中的两个重要策略:Voting策略和Redundancy策略;以及恢复重引入策略的Checkpoint/Rollback策略,构建其执行逻辑的线性时序逻辑描述。
(1)Ping/Echo策略:
图2展示了Ping/Echo策略的时序图描述,Ping/Echo策略主要涉及三个组件之间的交互关系:Ping Sender、Monitor、Ping Receiver。
Ping Sender负责每隔一定时间发送一次ping消息,并等待ping接收器的回复,直到达到最大等待时间为止。如果在最长等待时间内未收到回复,则会发生异常,并由故障监视器检测到,LOOP片段指定发送方在每个时间间隔向所有接收方发送ping消息。内部OPT片段描述在每个指定的时间间隔发送和接收ping和echo消息。如果接收方没有在最大等待时间内发送echo,则发送方会向监视器抛出异常,触发notifyException。而监视器需要触发异常处理操作handleException。Ping/Echo策略描述了一系列策略方法的执行逻辑,可以确定Ping/Echo策略的切点方法类型有:ping()、notifyException()、handleException()、echo()。
(2)Heartbeat策略:
图3展示了Heartbeat策略的时序图描述,Heartbeat策略主要涉及三个组件之间的交互关系:Heartbeat Sender、Heartbeat Receiver、Fault Monitor。
Heartbeat策略通过定期侦听来自受监视组件的心跳消息来检测故障。HeartbeatSender在每个指定的时间间隔向心跳的接收者Heartbeat Receiver发送心跳消息,接收者在收到消息时会更新当前时间,如果在设置的时间内未收到消息,则被监视的组件被视为不可用,也就是心跳发送组件丢失。Heartbeat策略描述了一系列策略方法的执行逻辑,Heartbeat策略的切点方法类型有:receive()、update()、alive()、lost()。
(3)Voting策略:
图4展示了Voting策略的时序图描述,Voting策略主要涉及三个组件之间的交互关系:Client、Voter、ServiceComp。
Voting策略通过将所有服务组件的投票均发送给投票组件,由投票算法决定最后的输出结果,Voting策略使得所有冗余备份组件,都能够进行投票,最终由投票算法决定选举结果。投票组件组提供服务失败后,便会触发服务失败逻辑,并停止服务组件组。Voting策略描述了一系列策略方法的执行逻辑,Voting策略的切点方法类型有:vote()、request()、failService()、stopService()。
(4)Redundancy策略:
图5展示了Redundancy策略的时序图描述,Redundancy策略主要涉及三个组件之间的交互关系:Client、Redundancy Manager、Redundant Component。
Redundancy策略通过Redundancy Manager的轮询,使得所有冗余组件均相应事件,并使所有组件都尽量处于同一状态,最终只采用其中一个组件的响应结果作为回复,利用冗余服务节点均提供请求结果来保证系统的高可靠。Redundancy策略描述了一系列策略方法的执行逻辑,Redundancy策略的切点方法类型有:request()、requestService、selectResult()、updateState()。
(5)Checkpoint/Rollback策略:
图6展示了Checkpoint/Rollback策略的时序图描述,Checkpoint/Rollback策略主要涉及三个组件之间的交互关系:CheckpointComp、CheckpointMgr、NextTaskComp。
Checkpoint/Rollback策略通过CheckpointMgr组件保存系统执行的检查点信息,当系统执行一组任务时,保证任务组在执行失败时能够回滚到保存的检查点状态,任务组均执行成功后,才可以提交任务,并执行后续的任务组。利用CheckpointMgr提供保存检查点以及回滚或提交任务组,来保证整体任务组的所有任务均执行成功,从而保证系统的可靠性。Checkpoint/Rollback策略描述了一系列策略方法的执行逻辑,Checkpoint/Rollback策略的切点方法类型有:notifyCkp()、storeCkp()、failTask()、rollback、commit()。
对于每一类型的体系结构策略模型,均通过执行以下操作,得到验证通过的体系结构策略模型:
步骤S31:获取与当前体系结构策略类型相关的Java方法对应的特征向量及标签;其中,当前体系结构策略类型相关的Java方法对应的标签,用于指示当前体系结构策略中的切点方法类型;
还获取与当前体系结构策略类型无关的Java方法对应的特征向量及标签;其中,与当前体系结构策略类型无关的Java方法对应的标签,用于指示非当前体系结构策略中的切点方法类型;
步骤S32:基于获得的特征向量及标签,训练并验证所述体系结构策略模型,得到验证通过的体系结构策略模型。
优选地,训练并验证所述体系结构策略模型选用的算法为朴素贝叶斯算法、支持向量机算法或随机森林分类算法。
具体地,首先从Github、Gitee开源平台上,提取实现了步骤一中的可靠性体系结构策略的开源项目形成体系结构策略项目库,并进行步骤二和步骤三的系统特征提取及向量化处理。接着,对策略的实现方法进行人工标注,并将标注出的数据按照不同的切点方法类别打上标签,用于机器学习分类训练。特征文本与标签的对应关系如图7所示。本实施例采用了:朴素贝叶斯、支持向量机(SVM)、随机森林分类算法,对训练数据进行分类训练得到分类模型。利用准备好的待监测项目作为测试集,对比不同分类算法的定位效果。
本发明使用的分类器,指定参数如下:
(1)基于朴素贝叶斯分类方法的策略定位
采用朴素贝叶斯分类方法中的多项式朴素贝叶斯分类,该分类方法主要有三个参数。本研究使用的参数值如表1所示:
表1朴素贝叶斯参数表
(2)基于支持向量机(SVM)分类方法的策略定位
采用支持向量机(SVM)分类方法进行分类训练,形成策略定位方法,分类器对三个参数做出指定,如表2所示:
表2 SVM参数表
(3)基于随机森林分类方法的策略定位
采用随机森林分类方法进行分类训练,形成策略定位方法,分类器对两个参数做出指定,如表3所示:
表3随机森林参数表
还可以通过以下方式对体系结构策略定位效果进行评估:
对于传统的分类问题,准确率是一个常用的评价指标。表示在预测结果中,正确预测的数量与样本总数的比值。由于策略的定位为题实质上是一个多分类问题,本发明使用各类的分类精确率计算得到的平均精确率(mAP)作为一个重要的评价指标。其中,各类的分类精确率的计算方法如公式(1)所示,平均精确率mAP的计算方法如公式(3)所示。(1)式中TPi表示第i类正类数据被判断为正类的数据个数,FPi表示第i类负类数据被判断为正类的数据个数。
除了平均精确率外,本文还选择了各类的分类召回率Recalli计算得到的平均召回率(mAR)和F1值作为评价指标。各类的分类召回率的计算如公式(2)所示,平均召回率mAR的计算方法如公式(4)所示,(2)式中TPi表示第i类正类数据被判断为正类的数据个数,FPi表示第i类正类数据被判断为负类的数据个数。F1值的计算方法如公式(5)所示。
由于在一个完整的项目中,体系结构策略实现方法往往只有特定的几个,而非体系结构策略方法占整体项目策略方法的绝大多数,导致了分类数据的不平衡问题。因此,为保证评估结果的可靠性,本发明采取了过采样的方法,通过将分类数据中每一类策略切点方法数据量,提升到与非策略方法数量平衡的手段统计分类效果的准确率和召回率,从而避免了实验数据的不均衡问题导致的问题。
步骤S4:基于所述所属的切点方法类型,在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。此外,还在所述Java项目中标注所述对应于所述体系结构策略类型的Java方法所属的切点方法类型。
本实施例根据综合效果选择最好的分类算法,经过对测试集进行实验,验证了本实施例在进行可靠性软件体系结构策略定位时有着较高的准确率和召回率,同时由于本实施例的方法是通过提取Java字节码,调用BCEL操作库的相关方法自动化的提取出项目所有Java实现方法的方法名信息、方法调用组件信息、方法参数列表信息以及方法返回类型信息,因此识别粒度较细,只针对策略的切点方法进行定位,在这些层面上本发明优于传统的信息检索和基于文本分类的机器学习的自动定位技术。经过实验验证了本实施例的有效性、权威性与通用性。
实施例2
本发明的实施例2,公开了一种Java项目的体系结构策略定位系统,结构示意图如图8所示,所述系统包括:
特征文本获取模块,用于提取Java项目中所有Java方法的特征文本;
特征向量生成模块,用于处理所述特征文本,得到对应的特征向量;
分类模块,用于确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至对应于所述体系结构策略类型的体系结构策略模型,得到对应于所述体系结构策略类型的Java方法所属的切点方法类型;
体系结构策略定位模块,用于基于所述所属的切点方法类型,在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。
本发明系统实施例的具体实施过程参见上述方法实施例即可,本实施例在此不再赘述。
由于本系统实施例与上述方法实施例原理相同,所以本系统也具有上述方法实施例相应的技术效果。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种Java项目的体系结构策略定位方法,其特征在于,所述方法包括如下步骤:
提取Java项目中所有Java方法的特征文本;
处理所述特征文本,得到对应的特征向量;
确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至对应于所述体系结构策略类型的体系结构策略模型,得到对应于所述体系结构策略类型的Java方法所属的切点方法类型;
基于所述所属的切点方法类型,在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。
2.根据权利要求1所述的Java项目的体系结构策略定位方法,其特征在于,基于Java字节码操作库,从Java项目中的源代码中提取出每一Java方法的特征文本。
3.根据权利要求1或2所述的Java项目的体系结构策略定位方法,其特征在于,所述特征文本包括方法名、方法返回类型、方法参数列表信息、方法调用组件信息。
4.根据权利要求3所述的Java项目的体系结构策略定位方法,其特征在于,所述处理所述特征文本得到特征向量,包括:
对所述特征文本进行分词处理,得到所述特征文本中包含的单词:
判断所述方法名中是否包含大写字母,若不包含,则将所述方法名作为一个单词;否则,以所述方法名中的大写字母为分界,将所述方法名拆分成数个单词;其中,第i个大写字母为第i+1个单词的首字母;i取1,......,n,n表示大写字母的个数;
去除所述方法返回类型、方法参数列表信息、方法调用组件信息中的停用词,得到所述方法返回类型、方法参数列表信息、方法调用组件信息中包含的单词;
基于词频-逆文件频率方法,对所述特征文本中包含的单词进行重要性排序,将排序靠前的数个单词作为特征向量。
5.根据权利要求3所述的Java项目的体系结构策略定位方法,其特征在于,所述体系结构策略类型为Ping/Echo策略、Heartbeat策略、Voting策略、Redundancy策略或Checkpoint/Rollback策略。
6.根据权利要求5所述的Java项目的体系结构策略定位方法,其特征在于,
所述Ping/Echo策略的切点方法类型包括:ping()、notifyException()、handleException()、echo();
所述Heartbeat策略的切点方法类型包括:receive()、update()、alive()、lost();
所述Voting策略的切点方法类型包括:vote()、request()、failService()、stopService();
所述Redundancy策略的切点方法类型包括:request()、requestService、selectResult()、updateState();
所述Checkpoint/Rollback策略的切点方法类型包括:notifyCkp()、storeCkp()、failTask()、rollback()、commit()。
7.根据权利要求6所述的Java项目的体系结构策略定位方法,其特征在于,对于每一类型的体系结构策略模型,均通过执行以下操作,得到验证通过的体系结构策略模型:
获取与当前体系结构策略类型相关的Java方法对应的特征向量及标签;所述标签用于指示当前体系结构策略中的切点方法类型;
还获取与当前体系结构策略类型无关的Java方法对应的特征向量及标签;
基于获取到的特征向量及标签,训练并验证所述体系结构策略模型,得到验证通过的体系结构策略模型。
8.根据权利要求7所述的Java项目的体系结构策略定位方法,其特征在于,训练并验证所述体系结构策略模型选用的算法为朴素贝叶斯算法、支持向量机算法或随机森林分类算法。
9.根据权利要求1所述的Java项目的体系结构策略定位方法,其特征在于,所述方法还包括:
在所述Java项目中标注所述对应于所述体系结构策略类型的Java方法所属的切点方法类型。
10.一种Java项目的体系结构策略定位系统,其特征在于,所述系统包括:
特征文本获取模块,用于提取Java项目中所有Java方法的特征文本;
特征向量生成模块,用于处理所述特征文本,得到对应的特征向量;
分类模块,用于确定要定位的体系结构策略类型,将每一Java方法对应的特征向量输入至对应于所述体系结构策略类型的体系结构策略模型,得到对应于所述体系结构策略类型的Java方法所属的切点方法类型;
体系结构策略定位模块,用于基于所述所属的切点方法类型,在所述Java项目中定位所述对应于所述体系结构策略类型的Java方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110235012.2A CN112947995B (zh) | 2021-03-03 | 2021-03-03 | 一种Java项目的体系结构策略定位方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110235012.2A CN112947995B (zh) | 2021-03-03 | 2021-03-03 | 一种Java项目的体系结构策略定位方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112947995A true CN112947995A (zh) | 2021-06-11 |
CN112947995B CN112947995B (zh) | 2022-07-26 |
Family
ID=76247349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110235012.2A Active CN112947995B (zh) | 2021-03-03 | 2021-03-03 | 一种Java项目的体系结构策略定位方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112947995B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000045257A2 (en) * | 1999-01-28 | 2000-08-03 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US20100318610A1 (en) * | 2009-06-16 | 2010-12-16 | Sun Microsystems, Inc. | Method and system for a weak membership tie-break |
CN110109835A (zh) * | 2019-05-05 | 2019-08-09 | 重庆大学 | 一种基于深度神经网络的软件缺陷定位方法 |
US20190324832A1 (en) * | 2018-04-18 | 2019-10-24 | Alberto Avritzer | Metric for the assessment of distributed high-availability architectures using survivability modeling |
CN111857691A (zh) * | 2020-07-28 | 2020-10-30 | 北京航空航天大学 | 一种软件体系结构恢复方法和装置 |
-
2021
- 2021-03-03 CN CN202110235012.2A patent/CN112947995B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000045257A2 (en) * | 1999-01-28 | 2000-08-03 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US20100318610A1 (en) * | 2009-06-16 | 2010-12-16 | Sun Microsystems, Inc. | Method and system for a weak membership tie-break |
US20190324832A1 (en) * | 2018-04-18 | 2019-10-24 | Alberto Avritzer | Metric for the assessment of distributed high-availability architectures using survivability modeling |
CN110109835A (zh) * | 2019-05-05 | 2019-08-09 | 重庆大学 | 一种基于深度神经网络的软件缺陷定位方法 |
CN111857691A (zh) * | 2020-07-28 | 2020-10-30 | 北京航空航天大学 | 一种软件体系结构恢复方法和装置 |
Non-Patent Citations (1)
Title |
---|
FANGWEI CHEN 等: "An improved mapping method for automated consistency check between software architecture and source code", 《2020 IEEE 20TH INTERNATIONAL CONFERENCE ON SOFTWARE QUALITY, RELIABILITY AND SECURITY (QRS)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112947995B (zh) | 2022-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437586B2 (en) | Method and system for dynamic impact analysis of changes to functional components of computer application | |
US8453027B2 (en) | Similarity detection for error reports | |
US20190266070A1 (en) | Machine learning based software correction | |
US11790256B2 (en) | Analyzing test result failures using artificial intelligence models | |
US20150347923A1 (en) | Error classification in a computing system | |
US11860721B2 (en) | Utilizing automatic labelling, prioritizing, and root cause analysis machine learning models and dependency graphs to determine recommendations for software products | |
CN114491282B (zh) | 一种基于云计算的异常用户行为分析方法及系统 | |
Dasgupta et al. | Towards auto-remediation in services delivery: Context-based classification of noisy and unstructured tickets | |
CN115114064B (zh) | 一种微服务故障分析方法、系统、设备及存储介质 | |
Rossi et al. | Modeling the evolution of discussion topics and communication to improve relational classification | |
CN109992476A (zh) | 一种日志的分析方法、服务器及存储介质 | |
US20210224245A1 (en) | Data configuration, management, and testing | |
US11868236B2 (en) | Methods and systems for classifying application-specific crash reports using application-agnostic machine learning models | |
CN112947995B (zh) | 一种Java项目的体系结构策略定位方法及系统 | |
US20230214317A1 (en) | Machine learning method to rediscover failure scenario by comparing customer's server incident logs with internal test case logs | |
CN112612882B (zh) | 检阅报告生成方法、装置、设备和存储介质 | |
RU128741U1 (ru) | Система формирования решения проблем функционирования компьютерных систем | |
CN115640158A (zh) | 一种基于数据库的检测分析方法及装置 | |
CN115408271A (zh) | 一站式闭环测试方法、系统、设备及介质 | |
CN113220585A (zh) | 一种故障自动诊断方法及相关装置 | |
CN109992475A (zh) | 一种日志的处理方法、服务器及存储介质 | |
Quan et al. | Heterogeneous Syslog Analysis: There Is Hope | |
CN117149501B (zh) | 问题修复系统及方法 | |
CN118170685B (zh) | 一种自适应操作系统环境的自动化测试平台及方法 | |
Ardimento et al. | A Supervised Generative Topic Model to Predict Bug-fixing Time on Open Source Software Projects. |
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 |