CN102262588B - 执行模式分析和扇入分析相结合的横切关注点识别方法 - Google Patents

执行模式分析和扇入分析相结合的横切关注点识别方法 Download PDF

Info

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
Application number
CN 201110242121
Other languages
English (en)
Other versions
CN102262588A (zh
Inventor
俞东进
殷昱煜
闫大强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haining Dingcheng Intelligent Equipment Co ltd
Original Assignee
Hangzhou Dianzi University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Dianzi University filed Critical Hangzhou Dianzi University
Priority to CN 201110242121 priority Critical patent/CN102262588B/zh
Publication of CN102262588A publication Critical patent/CN102262588A/zh
Application granted granted Critical
Publication of CN102262588B publication Critical patent/CN102262588B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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 对于程序                                               
Figure 2011102421213100002DEST_PATH_IMAGE002
及其上所有方法签名的集合记为
Figure 2011102421213100002DEST_PATH_IMAGE004
,方法的执行开始点和结束点称为方法点(function points)。方法点
Figure 2011102421213100002DEST_PATH_IMAGE006
可表示为一个包含方法名和进入/退出标识的二元组,即
Figure 2011102421213100002DEST_PATH_IMAGE008
,其中
Figure 2011102421213100002DEST_PATH_IMAGE010
表示进入方法的执行,
Figure 2011102421213100002DEST_PATH_IMAGE014
表示退出方法
Figure 391826DEST_PATH_IMAGE012
的执行。
定义2 记执行轨迹
Figure 2011102421213100002DEST_PATH_IMAGE016
为程序一次运行所涉及到的所有方法点所组成的有序序列,即:,其中
Figure DEST_PATH_IMAGE020
分别表示执行序列的开始和结束,
Figure 527141DEST_PATH_IMAGE006
Figure DEST_PATH_IMAGE024
后发生,并且对于同一循环内的同一方法点只记1次。如
Figure 432780DEST_PATH_IMAGE006
Figure 214398DEST_PATH_IMAGE024
间不存在其他执行语句,则称
Figure 926002DEST_PATH_IMAGE006
为相邻方法点(neighboring function points),记
Figure DEST_PATH_IMAGE026
。反之,若
Figure 638109DEST_PATH_IMAGE024
之间都存在其他执行语句,则称为孤立方法点(isolated function points)。
定义3 若
Figure 810781DEST_PATH_IMAGE016
中包含相邻方法点
Figure DEST_PATH_IMAGE030
Figure DEST_PATH_IMAGE032
Figure 2011102421213100002DEST_PATH_IMAGE034
Figure 2011102421213100002DEST_PATH_IMAGE036
,则分别称
Figure 2011102421213100002DEST_PATH_IMAGE038
对于
Figure 2011102421213100002DEST_PATH_IMAGE040
满足方法“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”执行模式,且分别记为
Figure 2011102421213100002DEST_PATH_IMAGE042
Figure 2011102421213100002DEST_PATH_IMAGE044
Figure DEST_PATH_IMAGE046
Figure DEST_PATH_IMAGE048
。记
Figure DEST_PATH_IMAGE050
Figure DEST_PATH_IMAGE054
Figure DEST_PATH_IMAGE056
分别为
Figure 642512DEST_PATH_IMAGE016
中所有
Figure 713237DEST_PATH_IMAGE042
Figure DEST_PATH_IMAGE058
Figure 455059DEST_PATH_IMAGE046
Figure 294839DEST_PATH_IMAGE048
构成的执行模式集,即:
Figure DEST_PATH_IMAGE060
Figure DEST_PATH_IMAGE062
Figure DEST_PATH_IMAGE064
定义4 对于执行轨迹
Figure 837816DEST_PATH_IMAGE016
中出现的方法
Figure DEST_PATH_IMAGE068
,定义
Figure 815743DEST_PATH_IMAGE068
的扇入度:
Figure DEST_PATH_IMAGE070
,其中方法
Figure DEST_PATH_IMAGE072
表示方法
Figure DEST_PATH_IMAGE074
被调用的次数。
定义5 对于执行模式
Figure DEST_PATH_IMAGE076
,
Figure DEST_PATH_IMAGE078
,若
Figure DEST_PATH_IMAGE080
,都有,则称满足重复性约束,其中
Figure DEST_PATH_IMAGE086
为相应的执行模式集。
定义6 对于执行模式,
Figure 242493DEST_PATH_IMAGE078
,若
Figure DEST_PATH_IMAGE090
,则称
Figure 831737DEST_PATH_IMAGE076
Figure DEST_PATH_IMAGE092
满足横切约束,其中为相应的执行模式集。
本发明所提供的执行模式分析和扇入分析相结合的横切关注点识别方法的具体实施方式如下:
(1)读入待识别的程序代码包。
(2)获取程序中方法的执行模式集。
选取覆盖程序核心业务功能的用例,收集执行用例时得到的执行轨迹。在记录执行轨迹的同时,过滤掉预先定义的不可能成为横切关注点的具有固定结构的方法(如get*()、set*()、toString()等)、并且去掉所有孤立方法点中的方法。保留下来的其他方法每调用一次,其扇入度值加1(循环内相同方法的连续调用,只记1次)。若
Figure 532266DEST_PATH_IMAGE068
的扇入度大于预设阀值
Figure DEST_PATH_IMAGE094
,则将其置于候选横切关注点集合
Figure DEST_PATH_IMAGE096
中。将保留下来的未置于
Figure 986250DEST_PATH_IMAGE096
的剩余方法根据方法调用的先后次序构建执行轨迹
Figure 122834DEST_PATH_IMAGE016
,并把对应的执行模式(分为:“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”四种执行模式)置入相应执行模式集
Figure DEST_PATH_IMAGE098
中;
需要指出的是,孤立方法点虽然也可能成为候选方面,但是现有的AOSD重构技术并不能将其作为方面进行织入,也就是说没有重构价值。将这些方法过滤掉,可进一步提高挖掘的精确率。
是过滤掉的方法或者
Figure 473492DEST_PATH_IMAGE096
中的方法,则需要进一步处理与
Figure 165504DEST_PATH_IMAGE068
相关的执行模式,即忽略所有的
Figure DEST_PATH_IMAGE100
,保留
Figure DEST_PATH_IMAGE102
,其中
Figure DEST_PATH_IMAGE106
。这样处理后,
Figure 712636DEST_PATH_IMAGE068
不会影响剩余其他方法的执行模式特征,只是方法执行模式集元素数量的减少。
(3)扩展方法执行模式集。
用空方法签名
Figure DEST_PATH_IMAGE108
对执行轨迹进行扩展,用以标记嵌套方法之间、方法执行的进入和退出之间没有其他方法执行。这里,引入的空方法并不真正存在,仅仅起到了占位符的作用。采用空方法扩展方法执行集之后,可使得不同的方法调用序列之间保持可比性。表1给出了对于不同执行轨迹的空方法扩展规则,加星号
Figure DEST_PATH_IMAGE110
的执行模式表示由于空方法的引入而增加的执行模式。
表 1 空方法扩展规则
执行轨迹
Figure DEST_PATH_IMAGE112
扩展后的方法执行模式
Figure DEST_PATH_IMAGE114
Figure DEST_PATH_IMAGE118
Figure DEST_PATH_IMAGE120
Figure DEST_PATH_IMAGE122
Figure DEST_PATH_IMAGE124
Figure DEST_PATH_IMAGE126
Figure DEST_PATH_IMAGE128
Figure DEST_PATH_IMAGE130
Figure DEST_PATH_IMAGE132
Figure DEST_PATH_IMAGE134
(4)执行重复性约束检查。
对扩展后的执行模式集合
Figure 478915DEST_PATH_IMAGE114
进行重复性约束检查,从
Figure 140447DEST_PATH_IMAGE114
中去掉不满足重复性约束的执行模式,得到重复性约束集
Figure DEST_PATH_IMAGE136
。通过重复性约束检查得到的重复性约束集
Figure 618833DEST_PATH_IMAGE136
中不存在不一致的执行模式。
(5)执行横切约束检查。
Figure 262304DEST_PATH_IMAGE136
中去掉所有包含空方法
Figure 784421DEST_PATH_IMAGE108
的执行模式,得到横切约束集
Figure DEST_PATH_IMAGE138
,即:
Figure DEST_PATH_IMAGE140
,其中
根据系统规模,同时对应4种不同的执行模式,选取合适的横切阈值
Figure DEST_PATH_IMAGE142
(相邻外之前横切阈值)、
Figure DEST_PATH_IMAGE144
(相邻外之后横切阈值)、(相邻内最先横切阈值)和
Figure DEST_PATH_IMAGE148
(相邻内最后横切阈值)。对于
Figure 342889DEST_PATH_IMAGE138
中任一方法
Figure 840867DEST_PATH_IMAGE038
,统计所有以
Figure 284617DEST_PATH_IMAGE012
开始并且具有相同模式的执行模式数,将总数大于对应横切阈值的执行模式作为候选方面,置入候选方面集
Figure DEST_PATH_IMAGE150
中。通过横切约束检查得到的候选方面都以同一种方式横切了超过横切阈值数的不同方法。
(6)合并步骤(2)和步骤(5)获得的方法集,得到最终的横切关注点集,并输出。
合并
Figure 186321DEST_PATH_IMAGE096
Figure 68826DEST_PATH_IMAGE150
,得到最终的横切关注点集
Figure DEST_PATH_IMAGE152
,并输出。

Claims (1)

1.执行模式分析和扇入分析相结合的横切关注点识别方法,其特征在于该方法的具体步骤是:
步骤(1).设置独立的通用计算机,通过外接装置读入待识别的程序代码包;
步骤(2).选取覆盖程序核心业务功能的用例,收集执行该用例的程序实际执行轨迹,同时获得超过扇入阈值的方法集;
记录执行轨迹时,需要过滤掉预先定义的不可能成为横切关注点的具有固定结构的方法、以及孤立方法;保留下来的其他方法m每调用一次,其扇入度值加1,其中循环内相同方法的连续调用,只记一次;若m的扇入度大于预设阀值Tfan-in,则将其置于候选横切关注点集合Rfan-in中;将保留下来的未置于Rfan-in的剩余方法根据方法调用的先后次序构建执行轨迹TP,并把对应的执行模式置入相应执行模式集S中;
所述的执行轨迹指程序一次运行所涉及到的所有方法点所组成的有序序列;
所述的孤立方法指该方法与前后相邻方法之间不存在执行语句;
所述的执行模式分为“相邻外之前”、“相邻外之后”、“相邻内最先”和“相邻内最后”四种;
若m是过滤掉的方法或者Rfan-in中的方法,则忽略m的“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”执行模式,保留对于m的“相邻外之前”,“相邻外之后”,“相邻内最先”,“相邻内最后”执行模式;
步骤(3).扩展方法执行模式集;
使用空方法签名
Figure FDA00003396620000011
对执行轨迹TP进行扩展,用以标记嵌套方法之间、以及方法执行的进入和退出之间没有其他方法执行;记扩展后的方法执行模式为S*
步骤(4).执行重复性约束检查,以过滤不一致的执行模式;
对扩展后的执行模式集合S*进行重复性约束检查,从S*中去掉不满足重复性约束的执行模式,得到重复性约束集U;
步骤(5).执行横切约束检查,以得到超过横切阈值的横切方法集;
从步骤(4)获得的重复性约束集U中去掉所有包含空方法
Figure FDA00003396620000012
的执行模式,得到横切约束集U*;对于U*中任一方法u,统计所有以u开始并且具有相同执行模式的执行模式数,如执行模式数大于事先设定的横切阈值,则把u作为候选方面,置入候选方面集Rexe-patt中;
步骤(6).合并步骤(2)和步骤(5)获得的方法集,得到最终的横切关注点集,并输出;合并Rfan-in和Rexe-patt,得到最终的横切关注点集Raspect=Rfan-in∪Rexe-patt,并输出。
CN 201110242121 2011-08-23 2011-08-23 执行模式分析和扇入分析相结合的横切关注点识别方法 Expired - Fee Related CN102262588B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298677B (zh) * 2013-07-16 2017-10-10 中国移动通信集团浙江有限公司 一种关注点依赖关系识别方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101373432A (zh) * 2008-09-26 2009-02-25 中国科学院软件研究所 一种基于中间件的组件系统性能预测方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101373432A (zh) * 2008-09-26 2009-02-25 中国科学院软件研究所 一种基于中间件的组件系统性能预测方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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