CN102262588B - 执行模式分析和扇入分析相结合的横切关注点识别方法 - Google Patents
执行模式分析和扇入分析相结合的横切关注点识别方法 Download PDFInfo
- Publication number
- CN102262588B CN102262588B CN 201110242121 CN201110242121A CN102262588B CN 102262588 B CN102262588 B CN 102262588B CN 201110242121 CN201110242121 CN 201110242121 CN 201110242121 A CN201110242121 A CN 201110242121A CN 102262588 B CN102262588 B CN 102262588B
- Authority
- CN
- China
- Prior art keywords
- execution pattern
- fan
- execution
- crosscutting
- adjacent
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种执行模式分析和扇入分析相结合的横切关注点识别方法。现有的方法精确率和执行效率较低。本发明方法首先设置独立的通用计算机,通过外接装置读入待识别的程序代码包;其次选取覆盖程序核心业务功能的用例,收集执行该用例的程序实际执行轨迹,同时获得超过扇入阈值的方法集,扩展方法执行模式集;然后执行重复性约束检查,以过滤不一致的执行模式,执行横切约束检查,以得到超过横切阈值的横切方法集;最后合并获得的方法集,得到最终的横切关注点集,并输出。本发明可有效减少执行模式集的元素数量,在保证查全率的基础上提高了识别的执行效率和精确率。
Description
技术领域
本发明属于计算机软件代码分析领域,具体涉及到如何在分析代码执行模式的同时应用扇入分析方法以识别代码中存在的横切关注点。
背景技术
在面向对象的软件开发过程中,实际应用领域中的真实实体被映射为软件系统中具有层次化结构的类。然而由于面向对象编程技术本身的局限性,并不是每个需求都能与一个完整的模块单元(类)相对应,从而不可避免会出现代码的交织(tangling)和散布(scattering)。代码交织指单个模块实现了多个功能;代码散布指相同功能的实现代码分布在系统的不同模块中。这些交织或散布的代码所实现的关注点称为横切关注点。如果横切关注点与核心关注点(业务关注点)交杂在一起分布在系统的各个功能模块中,将不利于程序的理解和维护。
面向方面软件开发方法(Aspect-oriented Software Development:AOSD)将那些与具体业务没有关联却为整个系统所通用的横切关注点封装为一个可重用的方面(Aspect),再把方面自动织入到面向对象的软件系统中,从而实现横切关注点与系统核心关注点的分离。采用AOSD方法对遗留系统重构可提高了软件的模块化程度和设计的稳定性,从而使得对程序的理解和维护变得更加容易。
识别遗留系统的横切关注点也就是挖掘出所有的候选方面是利用AOSD方法重构遗留系统的关键和前提。由于横切关注点本身的横切特征表现为软件系统结构或行为的相似性,如日志的记录、持久化操作时事务的开始和结束,这些行为实现时往往代码重复、行为一致,所以对如何识别横切关注点的研究基本上围绕代码分析展开。现有的方法包括:代码克隆分析、基于形式概念分析的识别方法、基于重复执行模式的识别方法、标识符分析识别方法等。
但是以上各种横切关注点识别方法都存在一些不足。基于形式概念分析的识别方法在概念格构造时依赖于具体算法和工具,当概念数目较大时耗时将会呈级数增长,而且目前还没有较好的概念格构造工具。标识符分析方法依赖于良好的命名规范,但是软件开发过程中不同编程人员会根据自己的偏好定义变量名,造成识别结果中可能包含大量噪音,从而加大了人工分析的工作量。分级聚类方法直接分析程序代码,没有考虑系统动态运行时的变化信息,不能避免由多态引起的问题。基于重复执行模式的识别方法要求分析所有执行到的方法,而不管这些方法有没有可能成为横切关注点,从而使得挖掘结果包含部分噪音,精确率和执行效率较低。另外,在基于AOSD方法实现方面重构时,需要通过指定注入位置或时机将横切关注点与业务组件编织起来,但以上方法均没有考虑方法前后语句对方法本身的影响,造成识别出的部分横切关注点由于没有合适的注入位置或时机而不能实现有效的织入。
发明内容
本发明针对现有技术的不足,提供了一种执行模式分析和扇入分析相结合的横切关注点识别方法。
本发明方法的具体步骤是:
步骤(1)设置独立的通用计算机,通过外接装置读入待识别的程序代码包;
步骤(2)选取覆盖程序核心业务功能的用例,收集执行该用例的程序实际执行轨迹,同时获得超过扇入阈值的方法集;
步骤(3)扩展方法执行模式集;
步骤(4)执行重复性约束检查,以过滤不一致的执行模式;
步骤(5)执行横切约束检查,以得到超过横切阈值的横切方法集;
步骤(6)合并步骤(2)和步骤(5)获得的方法集,得到最终的横切关注点集,并输出。
本发明所提供的执行模式分析和扇入分析相结合的横切关注点识别方法由一组功能模块组成,它们包括:程序代码包读入模块、执行轨迹分析模块、执行模式集约束检查模块和横切关注点输出模块。
程序代码包读入模块读入待分析的程序代码。
执行模式集构建模块通过执行某个具体用例,记录对应的方法执行轨迹,去除预先定义的不可能成为横切关注点的具有固定结构的方法和孤立方法,提取高扇入值方法作为横切关注点,使用空方法对执行轨迹进行扩展,生成执行模式集。
执行模式集约束检查模块去掉不满足重复性约束的执行模式,然后选取大于横切阈值的执行模式的起始方法作为横切关注点。
横切关注点输出模块格式化输出获得的所有横切关注点方法名及相关信息。
与传统方法相比,本方明所提供的方法在识别过程中,特别引入了扇入阈值和横切阈值,并通过分析语句对方法执行的影响排除了部分不可织入的横切关注点,可有效减少执行模式集的元素数量,在保证查全率的基础上提高了识别的执行效率和精确率。
具体实施方式
本发明可用于识别程序代码中存在的横切关注点,为采用面向方面软件开发方法重构程序代码提供帮助,从而最终提高程序代码的模块化程度和设计的稳定性,使得对程序代码的理解和维护变得更加容易。
定义1 对于程序 及其上所有方法签名的集合记为,方法的执行开始点和结束点称为方法点(function points)。方法点可表示为一个包含方法名和进入/退出标识的二元组,即,其中表示进入方法的执行,表示退出方法的执行。
定义2 记执行轨迹为程序一次运行所涉及到的所有方法点所组成的有序序列,即:,其中和分别表示执行序列的开始和结束,在后发生,并且对于同一循环内的同一方法点只记1次。如与间不存在其他执行语句,则称和为相邻方法点(neighboring function points),记。反之,若与和之间都存在其他执行语句,则称为孤立方法点(isolated function points)。
。
本发明所提供的执行模式分析和扇入分析相结合的横切关注点识别方法的具体实施方式如下:
(1)读入待识别的程序代码包。
(2)获取程序中方法的执行模式集。
选取覆盖程序核心业务功能的用例,收集执行用例时得到的执行轨迹。在记录执行轨迹的同时,过滤掉预先定义的不可能成为横切关注点的具有固定结构的方法(如get*()、set*()、toString()等)、并且去掉所有孤立方法点中的方法。保留下来的其他方法每调用一次,其扇入度值加1(循环内相同方法的连续调用,只记1次)。若的扇入度大于预设阀值,则将其置于候选横切关注点集合中。将保留下来的未置于的剩余方法根据方法调用的先后次序构建执行轨迹,并把对应的执行模式(分为:“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”四种执行模式)置入相应执行模式集中;
需要指出的是,孤立方法点虽然也可能成为候选方面,但是现有的AOSD重构技术并不能将其作为方面进行织入,也就是说没有重构价值。将这些方法过滤掉,可进一步提高挖掘的精确率。
(3)扩展方法执行模式集。
用空方法签名对执行轨迹进行扩展,用以标记嵌套方法之间、方法执行的进入和退出之间没有其他方法执行。这里,引入的空方法并不真正存在,仅仅起到了占位符的作用。采用空方法扩展方法执行集之后,可使得不同的方法调用序列之间保持可比性。表1给出了对于不同执行轨迹的空方法扩展规则,加星号的执行模式表示由于空方法的引入而增加的执行模式。
表 1 空方法扩展规则
(4)执行重复性约束检查。
(5)执行横切约束检查。
根据系统规模,同时对应4种不同的执行模式,选取合适的横切阈值(相邻外之前横切阈值)、(相邻外之后横切阈值)、(相邻内最先横切阈值)和(相邻内最后横切阈值)。对于中任一方法,统计所有以开始并且具有相同模式的执行模式数,将总数大于对应横切阈值的执行模式作为候选方面,置入候选方面集中。通过横切约束检查得到的候选方面都以同一种方式横切了超过横切阈值数的不同方法。
(6)合并步骤(2)和步骤(5)获得的方法集,得到最终的横切关注点集,并输出。
Claims (1)
1.执行模式分析和扇入分析相结合的横切关注点识别方法,其特征在于该方法的具体步骤是:
步骤(1).设置独立的通用计算机,通过外接装置读入待识别的程序代码包;
步骤(2).选取覆盖程序核心业务功能的用例,收集执行该用例的程序实际执行轨迹,同时获得超过扇入阈值的方法集;
记录执行轨迹时,需要过滤掉预先定义的不可能成为横切关注点的具有固定结构的方法、以及孤立方法;保留下来的其他方法m每调用一次,其扇入度值加1,其中循环内相同方法的连续调用,只记一次;若m的扇入度大于预设阀值Tfan-in,则将其置于候选横切关注点集合Rfan-in中;将保留下来的未置于Rfan-in的剩余方法根据方法调用的先后次序构建执行轨迹TP,并把对应的执行模式置入相应执行模式集S中;
所述的执行轨迹指程序一次运行所涉及到的所有方法点所组成的有序序列;
所述的孤立方法指该方法与前后相邻方法之间不存在执行语句;
所述的执行模式分为“相邻外之前”、“相邻外之后”、“相邻内最先”和“相邻内最后”四种;
若m是过滤掉的方法或者Rfan-in中的方法,则忽略m的“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”执行模式,保留对于m的“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”执行模式;
步骤(3).扩展方法执行模式集;
步骤(4).执行重复性约束检查,以过滤不一致的执行模式;
对扩展后的执行模式集合S*进行重复性约束检查,从S*中去掉不满足重复性约束的执行模式,得到重复性约束集U;
步骤(5).执行横切约束检查,以得到超过横切阈值的横切方法集;
从步骤(4)获得的重复性约束集U中去掉所有包含空方法的执行模式,得到横切约束集U*;对于U*中任一方法u,统计所有以u开始并且具有相同执行模式的执行模式数,如执行模式数大于事先设定的横切阈值,则把u作为候选方面,置入候选方面集Rexe-patt中;
步骤(6).合并步骤(2)和步骤(5)获得的方法集,得到最终的横切关注点集,并输出;合并Rfan-in和Rexe-patt,得到最终的横切关注点集Raspect=Rfan-in∪Rexe-patt,并输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110242121 CN102262588B (zh) | 2011-08-23 | 2011-08-23 | 执行模式分析和扇入分析相结合的横切关注点识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110242121 CN102262588B (zh) | 2011-08-23 | 2011-08-23 | 执行模式分析和扇入分析相结合的横切关注点识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102262588A CN102262588A (zh) | 2011-11-30 |
CN102262588B true CN102262588B (zh) | 2013-09-25 |
Family
ID=45009224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110242121 Expired - Fee Related CN102262588B (zh) | 2011-08-23 | 2011-08-23 | 执行模式分析和扇入分析相结合的横切关注点识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102262588B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298677B (zh) * | 2013-07-16 | 2017-10-10 | 中国移动通信集团浙江有限公司 | 一种关注点依赖关系识别方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373432A (zh) * | 2008-09-26 | 2009-02-25 | 中国科学院软件研究所 | 一种基于中间件的组件系统性能预测方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327341B2 (en) * | 2007-05-31 | 2012-12-04 | Red Hat, Inc. | Integrating aspect oriented programming into the application server |
-
2011
- 2011-08-23 CN CN 201110242121 patent/CN102262588B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373432A (zh) * | 2008-09-26 | 2009-02-25 | 中国科学院软件研究所 | 一种基于中间件的组件系统性能预测方法和系统 |
Non-Patent Citations (2)
Title |
---|
基于概念分析的软件横切关注点提取方法;康力等;《华南理工大学学报》;20060930;第34卷(第9期);第45-50页 * |
康力等.基于概念分析的软件横切关注点提取方法.《华南理工大学学报》.2006,第34卷(第9期),第45-50页. |
Also Published As
Publication number | Publication date |
---|---|
CN102262588A (zh) | 2011-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320679B (zh) | 一种数据表索引集合生成方法及装置 | |
Rasool et al. | Flexible design pattern detection based on feature types | |
Ekanayake et al. | Slice, mine and dice: Complexity-aware automated discovery of business process models | |
CN103559025B (zh) | 一种采用聚类方式进行软件重构的方法 | |
CN102609583B (zh) | 芯片寄存器信息管理方法 | |
CN102176200A (zh) | 一种软件测试用例自动生成方法 | |
CN102270137B (zh) | 一种获取体系结构描述语言的方法和一种建模工具 | |
CN102385505B (zh) | 针对面向对象程序设计语言源代码的软件可视化方法 | |
Biegel et al. | JCCD: a flexible and extensible API for implementing custom code clone detectors | |
Strüber et al. | Tool support for clustering large meta-models | |
CN102262588B (zh) | 执行模式分析和扇入分析相结合的横切关注点识别方法 | |
Noda et al. | Execution trace abstraction based on meta patterns usage | |
Sanchez et al. | Bigraphical modelling of architectural patterns | |
CN115170865A (zh) | 基于ufvgg16网络的油品识别方法、装置及计算机设备 | |
Zuberek et al. | Hierarchies of place/transition refinements in Petri nets | |
CN106096159A (zh) | 一种云平台下的分布式系统行为仿真分析系统的实现方法 | |
McFadden et al. | Aspect mining using model-based clustering | |
CN102521130A (zh) | 一种基于聚类不变式分析的错误定位方法 | |
CN107168848A (zh) | 一种多线程分析与运行可视化方法 | |
CN112069136A (zh) | 一种突发事件应急处置流程外包模型挖掘方法 | |
Carbonnel et al. | Variability Representation in Product Lines using Concept Lattices: Feasibility Study with Descriptions from Wikipedia's Product Comparison Matrices. | |
Streinu et al. | Sparsity-certifying graph decompositions | |
CN105893668B (zh) | 一种基于流语义的物料形态变化功能分解方法 | |
Kusel et al. | Common pitfalls of using QVT relations-graphical debugging as remedy | |
Lekić et al. | Discovering block–structured parallel process models from causally complete event logs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210630 Address after: 314400 room 609, block a, 128 Shuanglian Road, Haining Economic Development Zone, Haining City, Jiaxing City, Zhejiang Province Patentee after: Haining Dingcheng Intelligent Equipment Co.,Ltd. Address before: 310018 No. 2 street, Xiasha Higher Education Zone, Hangzhou, Zhejiang Patentee before: HANGZHOU DIANZI University |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130925 |