CN104820588A - 一种避免行为层组合时行为变体重复编织的处理方法 - Google Patents
一种避免行为层组合时行为变体重复编织的处理方法 Download PDFInfo
- Publication number
- CN104820588A CN104820588A CN201510197953.6A CN201510197953A CN104820588A CN 104820588 A CN104820588 A CN 104820588A CN 201510197953 A CN201510197953 A CN 201510197953A CN 104820588 A CN104820588 A CN 104820588A
- Authority
- CN
- China
- Prior art keywords
- node
- behavior
- call
- relation
- attribute
- 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
- 238000009941 weaving Methods 0.000 title abstract description 10
- 238000003672 processing method Methods 0.000 title abstract 2
- 238000000034 method Methods 0.000 claims abstract description 125
- 238000001514 detection method Methods 0.000 claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims abstract description 6
- 238000004458 analytical method Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 6
- 230000015572 biosynthetic process Effects 0.000 claims description 5
- 230000003213 activating effect Effects 0.000 claims description 4
- 230000004913 activation Effects 0.000 abstract description 7
- 238000009954 braiding Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 11
- 239000007858 starting material Substances 0.000 description 10
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000001965 increasing effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种面向上下文编程中避免行为层组合时行为变体重复编织的处理方法。例如,JCOP声明式行为层组合,虽然支持对程序中多个方法编织行为层激活语句,但现有的编织方法通常采用向每个指定的方法调用处插入激活语句来实现此能力。如果两个方法在运行时刻存在调用关系,则会造成激活语句的重复编织,从而有可能导致程序不能正常运行,甚至发生不可预期的错误。本发明首先基于抽象语法树构造源程序的调用关系图,并在此基础上提供了一个调用关系检测方法,用于判断两个行为变体对应的方法之间是否存在调用关系,通过在有调用关系的行为变体相应语句中插入监控语句,来有效地避免行为变体重复编织的问题。
Description
技术领域
本发明涉及一种面向上下文编程中避免行为层组合时行为变体重复编织的处理方法,特别是避免JCOP声明式行为层组合的行为变体重复编织,基于抽象语法树结构构造源程序的静态调用关系图,进一步采用基于调用关系图的调用关系检测方法,检测方法之间是否存在调用关系,从而决定是否插入监控语句,最终避免行为变体的重复编织,降低对现有JCOP运行支撑环境的影响。
背景技术
随着上下文在软件系统中发挥着越来越大的作用,开发和设计上下文敏感软件逐渐形成一种趋势。为了高效地进行上下文敏感软件的设计与开发,学者们提出了不同抽象级别的方案,其中既有软件体系架构级别,又有基于组件的设计。面向上下文编程(Context Oriented Programming,COP)方法为开发上下文敏感软件提供了语言级别的解决方案。
JCOP语言采用基于块结构的激活机制,是面向上下文编程中的主流语言之一。为了解决行为层激活语句在程序中散布(scattering)的问题,JCOP引入了声明式行为层组合。声明式行为层组合中,开发人员只需定义何时应该进行激活,以及激活哪个行为层。JCOP编译器以面向剖面编程的方式将激活语句插入到程序中的指定位置。
通常情况下,激活语句的插入位置是指定的方法调用前。JCOP语言也支持对程序中多个方法调用前编织行为层激活语句。然而,当两个方法之间在运行时刻存在调用关系时,现有编织方法会造成一条激活语句的重复编织。进一步地,激活语句中的行为变体对应的方法可能会重复执行,程序不能按照程序员预期的方式运行,发生不可预期的错误。
为了解决该问题,需要对现有编织方法进行修改,保证在运行时刻可能存在调用关系的方法之间不会重复编织同一条激活语句,从而保证程序按照开发人员的预期运行。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种面向上下文编程中避免行为层组合时行为变体重复编织的处理方法。
技术方案:一种面向上下文编程中避免行为层组合时行为变体重复编织的处理方法,包括如下部分:
1)避免行为层组合时行为变体重复编织的解决方案;
2)基于抽象语法树结构的调用关系图构造方法;
3)基于调用关系图的调用关系检测方法。
在抽象语法树上构造源程序的调用关系图,进而检测行为变体对应的方法之间的调用关系。面向剖面编程支持监控运行时刻控制流的关注点,借助面向剖面编程的这个功能,根据是否存在调用关系决定是否插入监控语句,避免激活语句的重复编织引起的行为层重复激活的问题。
静态调用关系图建立在程序的抽象语法树中,是抽象语法树的一部分,可通过抽象语法树的根节点进行访问。静态调用关系图基于类(继承)结构分析的结果,借助JastAdd框架的属性文法实现:利用综合属性收集调用关系图的入口信息,利用非终结属性构建调用关系图中的节点,利用非终结属性以及JastAddJ编译器现有的名字分析(Name Analysis)建立表示方法调用关系的有向边。
调用关系检测方法,使用传递闭包算法,以广度优先遍历为基础,逐步求解调用关系图中节点的传递闭包;利用节点的传递闭包,可以判别节点之间是否可达,也即方法之间是否存在调用关系。若不存在调用关系,则不必插入监控控制流的语句,避免引入不必要的加在JCOP运行支撑环境上的负担;若存在,则继续插入相应的监控语句。
有益效果:与现有技术相比,本发明提供的避免行为层组合时行为变体重复编织的解决方案,该方案首先基于抽象语法树结构构造源程序的调用关系图,并在此基础上提供调用关系检测方法,通过对有调用关系的行为变体相应语句中插入面向剖面编程的监控语句,从而高效地解决行为层组合时行为变体重复编织的问题。
附图说明
图1为避免行为变体重复编织的解决方案的整体模块图;
图2为ClassDecl等节点的starter()属性计算过程;
图3为MethodDecl节点的callees()属性计算过程;
图4为Block、WhileStmt、TryStmt节点的callees()属性计算过程;
图5为Assign节点的属性callees()计算过程;
图6为ClassInstanceExpr、AbstractDot节点的callees()属性计算过程;
图7为一个简单的代码样例;
图8为代码样例的简单抽象语法树与调用关系图;
图9为节点可达性算法;
图10为简单下载器的核心代码;
图11为JCOP编译器和解决方案产生的关注点代码。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
1、避免行为层组合时行为变体重复编织的解决方案
为了解决行为层激活语句在程序中散布的问题,JCOP语言引入声明式行为层组合。声明式行为层组合在指定方法前激活某个行为层。JCOP语言也支持对程序中多个方法调用前编织行为层激活语句。然而,如果两个方法之间存在调用关系,便会造成行为变体的重复编织。为了解决这个问题,可利用面向剖面编程中的cflow关注点(poincut)。如果运行时刻,方法之间不存在调用关系,即使没有cflow关注点,程序仍然能够正确执行。cflow关注点监控运行时刻的控制流,存在额外开销。为了消除不必要的cflow关注点引入的额外开销,本解决方案基于抽象语法树构造源程序的静态调用关系图,借此来预估运行时刻的方法之间的调用关系,从而舍弃部分cflow关注点,消除不必要的运行开销。
JCOP编译器基于JastAdd框架进行开发,JastAdd框架的核心数据结构是抽象语法树。本发明的解决方案在抽象语法树上进行扩展,由三个模块组成(如图1):调用关系图构造模块,调用关系检测模块,监控语句编织模块。
调用关系图构造模块,在抽象语法树上增加新节点和必要属性,构造调用关系图。
调用关系检测模块,基于构造好的调用关系图,采用有向图中顶点的传递闭包算法,判断方法之间是否调用关系。
监控语句编织模块,根据调用关系检测模块的结果,决定是否插入cflow关注点。
2、基于抽象语法树结构的调用关系图构造方法
调用关系图是一种表示程序中各个方法调用关系的有向图。其中,图中顶点i表示程序中的某一个方法i,而边(i,j)表示方法i调用了方法j。调用关系图与一般有向图的不同之处在于,调用关系图中存在一个(多个)入口节点,这些入口节点表示程序中调用关系的起点。
调用关系图的入口节点
为了构造调用关系图,需要知道调用图的入口,也即每个线程的最开始执行的方法。
不管是单线程程序还是多线程程序,整个程序的入口都只能是main方法。main方法是主线程的开始方法。多线程程序中,其他线程的开始方法一般是run方法。因而,线程的开始方法有两类,一类是main方法,另一类是run方法。
为了获取线程开始方法,我们需要在抽象语法树的节点上定义一些属性。第一类属性指明了哪些树节点是线程开始方法,显然这些属性应该定义在表示方法的树节点上。在MethodDecl节点上定义综合属性isMain()和isRun(),这两个属性的默认值为假。isMain()属性表示的是该节点是否为前文提到的main方法,即验证方法签名是否一致。isRun()属性表示的是该节点是否为前文提到的run方法,这时需要验证两点:
1.方法签名是否一致;
2.该方法所在类是否继承自java.lang.Thread或其子类,或者实现了java.lang.Runnable或其子接口。
第二类属性的作用是从MethodDecl节点开始向抽象语法树根(Program节点)传递线程开始方法这一信息。一般而言,从MethodDecl节点回溯到抽象语法树根节点,依次经过ClassDecl节点,CompilationUnit节点,最后到达Proram节点。在这些节点上定义综合(聚集)starter()属性,如图2。Program节点将其所有孩子节点CompilationUint的starter()属性值合并得到自身starter属性的值。CompilationUnit节点则将所有孩子节点ClassDecl的starter()属性值合并得到自身starter()属性值。由于内部类的存在,ClassDecl节点的starter属性值包括两部分,一部分是isMain||isRun为真的孩子节点MethodDecl,另一部分是其内部类的starter()属性。内部类由MemberClassDecl节点表示,是ClassDecl的子类。MemberClassDecl节点的starter()属性定义与ClassDecl一样,得益于JastAdd框架的有效机制,不需要再定义。
类(继承)结构分析(Class Hierarchy Analysis,CHA)
调用关系图中,各个顶点表示的是方法,有向边表示的是方法之间的调用关系。为了确定方法之间的调用关系,需要知道各个方法调用处调用的是哪个方法。在面向对象的多态机制下,调用的方法需要在运行时刻才能确定。通过静态分析技术,可以预估出方法调用时调用了哪些方法中的某一个。
为了预估方法调用时可能指向的方法,本发明采用类结构分析。类结构分析的作用是确定声明为类型T的变量t,在运行时刻可以引用哪些类型hierarchy_type(T)。利用hierarchy_type(T)这个信息,t.m这个方法调用就只能限定在hierarchy_type(T)中。
针对Java的类结构分析主要分为类(C)和接口(I)两个部分。声明类型为类C,在运行时刻可以引用类型C以及C的子类;声明类型为接口I,在运行时刻可以引用实现接口I或者I的子接口的类型,以及这些类型的子类。
JastAdd框架中的属性文法是声明式的,需要以声明式的方式描述属性hierarchy_type(T)。声明式的hierarchy_type(T)定义如下:
hierarchy_type(C)={C}∪hierarchy_type(direct_extend(C))
hierarchy_type(I)=hierarchy_type(direct_implement(I))∪hierarchy_type(direct_extend(I))
hierarchy_type(C)表示类型C可以引用C以及C的直接子类可以引用的类型。
hierarchy_type(I)表示类型I可以引用:
●直接实现接口I的类可以引用的类型;
●直接继承接口I的接口可以引用的类型。
依照声明式定义,在ClassDecl节点上定义聚集属性directSubclass()和环(综合)属性hierarchyType()。directSubclass()属性计算出ClassDecl节点对应的类的所有直接子类;hierarchyType()属性则将directSubclass()属性指明的ClassDecl节点的hierarchyType()属性合并。在InterfaceDecl节点上定义聚集属性implementedBy(),extendedBy()以及环(综合)属性hierarchyType()。implementedBy()属性计算出InterfaceDecl节点对应的接口的所有直接实现类;extendedBy()属性计算出InterfaceDecl节点对应的接口的所有直接继承接口;hierarchyType()属性将implementedBy()和extendedBy()属性指向的节点的hierarchyType()属性合并。
构造调用关系图
根据类结构分析的结果,我们可以预估运行时刻,方法调用可能调用的方法。JCOP编译器在抽象语法树中的MethodAccess节点(表示方法调用)上定义了decl()属性,指明声明了MethodAccess节点对应的方法的MethodDecl节点。利用MethodAcess节点的decl()属性,可以定义decls()属性。decls()属性表示的是表示运行时刻可能的被调用的方法的MethodDecl节点。decls()属性计算过程是,从decl()属性得到MethodDecl节点,进而得到包含该MethodDecl节点的ClassDecl或InterfaceDecl节点;根据前文定义的hierarchyType()属性,在对应的ClassDecl节点下查找对应的MethodDecl节点,最后将这些MethodDecl节点合并。
构造调用关系图,利用了JastAdd框架的非终结属性这一特色。调用关系图的存在不影响原有抽象语法树的已有功能。调用关系图中有CGRoot,CGNode,CGCallee这三种节点。它们都是ASTNode的子类,也是一种抽象语法树节点。CGRoot节点表示的是调用关系图的唯一入口节点,CGRoot节点会指向前文计算得到的线程开始方法对应的CGNode节点。CGNode节点表示的是调用关系图中的方法顶点,CGNode节点会包含零个或多个CGCallee节点,表示一个方法执行过中执行的多个方法调用。CGCallee节点表示的是方法调用,CGCallee节点会指向多个CGNode节点,这些CGNode节点表示运行时刻可能被调用的方法。
调用关系图的构造过程分为如下几步:
1.在Proram节点上定义非终结属性getCGRoot()
2.在MethodDecl节点上定义非终结属性getCGNode()
3.在MethodAccess节点上定义非终结属性getCGCallee()
4.在CGRoot节点上定义综合属性CGNodes(),指向多个CGNode节点
5.在CGNode节点上定义综合属性CGCallees(),指向多个CGCallee节点
6.在CGCallees节点上定义综合属性CGEdges(),指向多个CGNode节点
其中,第4步利用Program节点的starter()属性计算CGNodes()属性;第5步利用MethodDecl节点的callees()属性计算CGCallees()属性;第6步利用MethodAccess节点的decls()属性计算CGEdges()属性。
除MethodDecl节点的callees()属性外,其他属性已在前文提及,不再赘述。MethodDecl节点的callees()属性表示MethodDecl节点下所有的MethodAccess节点。
除MethodDecl节点外,Stmt节点及其子类型节点,Expr节点及其子类型节点,Access节点及其子类型节点都定义了callees()属性,callees()属性的计算过程就是合并孩子节点的callees()属性的过程。MethodDecl节点,Stmt节点,Expr节点,Access节点自顶向下构成了callees()属性的4级定义结构。
MethodDecl节点的callees()由孩子节点Block的callees()属性确定(如图3)。
Stmt节点的callees()属性默认为空集合。不同类型的Stmt节点(如Block节点,WhileStmt节点,TryStmt节点)通过合并孩子节点的callees()属性得到自身的callees()属性。Block节点表示语句块,其callees()属性由其多个孩子节点Stmt节点的callees()属性合并得到(如图4-a);WhileStmt节点表示While语句,其callees()属性由表示循环条件的Expr节点和表示循环体的Block节点的callees()属性合并得到(如图4-b);TryStmt节点表示try语句,其callees()属性由表示try语句块的Block节点,一组表示Catch语句的CatchClause节点以及表示可选的finally语句块的Block节点的callees()属性合并得到(如图4-c)。
Expr节点的callees()属性默认为空集合。不同类型的Expr节点(如AssignExpr节点)通过合并孩子节点的callees()属性得到自身的callees()属性。Assign节点表示的赋值语句,其callees()属性由表示源表达式的Epxr节点和表示目标表达式的Expr节点的callees()合并得到(如图5)。
Access节点的callees()属性默认为空集合。不同类型的Access节点(如ClassInstanceExpr节点,AbstractDot节点)通过合并孩子节点的callees()属性得到自身的callees()属性。ClassInstanceExpr节点表示new表达式。ClassInstanceExpr节点的第一个孩子节点Access表示的是实例化的类的名称,肯定不存在MethodAccess节点,所以ClassInstanceExpr节点的callees()属性仅由一组表示实例化的参数的Expr节点的callees()属性合并得到(如图6-a)。AbstractDot节点表示点操作符,其callees()属性由表示左操作数的Expr节点和右操作数的Expr节点的callees()属性合并得到(如图6-b)。
定义好上述属性,JastAdd框架会在需要时进行属性的计算,最终会在原有抽象语法树的基础上,生成一个调用关系图。
以图7中的代码为例,生成调用关系图(如图8三)。整个图中,箭头表示普通抽象语法树节点的父子关系;无箭头不加粗直线表示属性的取值;无箭头加粗折线表示调用关系图中的边(含非调用边)。调用关系图的入口节点是CGRoot节点,指向一个CGNode节点(Z.main方法)。Z.main方法中有三个方法调用,x.m,y.m,i.m;因此,Z.main方法的CGNode节点指向了3个CGCallee节点x.m,y.m,i.m。由MethodAccess节点的decls()属性可知,x.m可能是指X.m,Y.m,Z.m这三个。因此,x.m方法调用的CGCallee节点指向了3个CGNode节点X.m,Y.m,Z.m。y.m,i.m方法调用也指向对应的CGNode节点。X.m方法的CGNode节点因为没有任何方法调用,所以并未指向任何CGCallee节点,Y.m,Z.m同理。
调用关系图中,CGCallee节点因当被视为CGNode的内部节点,用于连接一个方法调用对应的多个方法的CGNode节点。调用关系图中的方法是指CGNode节点,调用边是指从CGCallee节点指向CGNode节点的引用。
3、基于调用关系图的调用关系检测方法
调用关系图构造结束后,方法A是否直接或间接调用方法B的问题可以转化为调用关系图中的节点A是否到达节点B的问题。节点可达性问题可以使用Dijkstra算法,Bell-Ford算法或者Floyd–Warshall算法来解决。其中,对Dijstra算法进行少量修改就可以很好地解决本问题。本发明采用求节点的传递闭包来判断节点可达性。
求有向图中某节点的传递闭包,可以按照深度优先或者广度优先的顺序进行计算。本检测方法采用的是广度优先的顺序,如图9,说明:步骤4中,caller的后继节点node是通过CGNode类型的节点包含的CGCallee节点的CGEdges()属性指明,不是直接后继节点(见构造调用关系图一节),所以实现时需要两重循环。
为了确认方法A调用方法B,仅仅依赖调用关系图中节点A到节点B可达这一点是不够的,还要考虑方法A是否能够在运行时刻被调用,也即调用关系图的入口节点到节点A也必须是可达的。所以,方法A调用了方法B的判断过程分成两步:入口节点到节点A可达;节点A到节点B可达。
4、使用案例
图10描述的是一个简单的下载程序。该下载程序可以用于下载单个任务,也可用于批量下载任务(如图10-e)。批量下载任务batchDownload方法会为每个任务调用download方法,也即运行时刻batchDownload方法会调用download方法(如图10-b)。
为了记录下载任务相关的信息,引入了Logging行为层(如图10-c),该行为层有两个部分方法(partial method),一个是针对download方法,在其下载前记录任务的名称等信息;另一个是针对batchDownload方法,在其进行批量下载前记录任务的数目信息。
为了避免with(new Logging())这种行为层激活语句散布在程序中,引入一个contextclass结构ForLog(如图10-d),在其中指明何处插入with(new Logging())这样的激活语句。插入语句的位置是调用download方法或者batchDownload方法时,利用JCOP的on关键字即可。
现有编织方法会产生如图11-a的关注点代码,上述代码会在batchDown方法和download方法前均插入with(new Logging())语句。由于运行时刻batchDownload方法会调用download方法,由batchDownload方法调用的download方法在执行时,会存在两个Logging行为层,也即行为变体的重复编织。而本发明的应对方法则会产生如图11-b的关注点代码,上述代码仅在处于控制流的外层的batchDownload方法和download方法前插入with(new Logging())语句,由batchDonwload方法调用的download方法在执行时,只存在一个Logging行为层,不会出现非预期的程序错误。
综上所述,本发明提出了一种避免行为层组合时行为变体重复编织的解决方案,该方案首先基于抽象语法树构造源程序的调用关系图,并在此基础上提供调用关系检测方法,判断两个行为变体对应的方法之间是否存在调用关系,通过对有调用关系的行为变体相应语句中插入监控语句,从而高效地解决了行为变体重复编织的问题。
Claims (4)
1.一种避免行为层组合时行为变体重复编织的处理方法,其特征在于,包括:
避免行为层组合时行为变体重复编织的解决方案:在源程序的抽象语法树上构造静态的调用关系图,基于此调用关系图检测行为变体对应的方法之间是否存在调用关系,借助面向剖面编程的监控运行时刻控制流功能,避免了行为变体重复编织的问题;
基于抽象语法树结构的调用关系图构造方法:基于类结构分析的结果,借助JastAdd框架的属性文法实现;
基于调用关系图的调用关系检测方法:按照广度优先方式遍历调用关系图,逐步建立节点的传递闭包,判断方法之间是否存在调用关系。
2.如权利要求1所述的避免行为层组合时行为变体重复编织的处理方法,其特征在于,在源程序的抽象语法树上构造整个程序的静态调用关系图,进而检测方法之间的调用关系;面向剖面编程支持监控运行时刻控制流的关注点(pointcut),借助面向剖面编程的这个功能,根据是否存在调用关系决定是否插入监控语句,避免激活语句的重复编织引起的行为层重复激活的问题。
3.如权利要求1所述的避免行为层组合时行为变体重复编织的处理方法,其特征在于,静态调用关系图建立在程序的抽象语法树中,是抽象语法树的一部分,可通过抽象语法树的根节点进行访问;静态调用关系图基于类(继承)结构分析的结果,借助JastAdd框架的属性文法实现:利用综合属性收集调用关系图的入口信息,利用非终结属性构建调用关系图中的节点,利用非终结属性以及JastAddJ编译器现有的名字分析建立表示方法调用关系的有向边。
4.如权利要求1所述的避免行为层组合时行为变体重复编织的处理方法,其特征在于,调用关系检测方法,使用传递闭包算法,以广度优先遍历为基础,逐步求解调用关系图中节点的传递闭包;利用节点的传递闭包,可以判别节点之间是否可达,也即方法之间是否存在调用关系;若不存在调用关系,则不必插入监控控制流的语句,避免引入不必要的加在JCOP运行支撑环境上的负担;若存在,则继续插入相应的监控语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510197953.6A CN104820588B (zh) | 2015-04-23 | 2015-04-23 | 一种避免行为层组合时行为变体重复编织的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510197953.6A CN104820588B (zh) | 2015-04-23 | 2015-04-23 | 一种避免行为层组合时行为变体重复编织的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104820588A true CN104820588A (zh) | 2015-08-05 |
CN104820588B CN104820588B (zh) | 2018-06-05 |
Family
ID=53730892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510197953.6A Active CN104820588B (zh) | 2015-04-23 | 2015-04-23 | 一种避免行为层组合时行为变体重复编织的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104820588B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515423A (zh) * | 2021-04-21 | 2021-10-19 | 香港理工大学深圳研究院 | 基于执行轨迹信息的安卓应用行为表征构造方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446899A (zh) * | 2008-12-31 | 2009-06-03 | 西安交通大学 | 一种基于本体的上下文感知应用平台框架模型 |
CN101694629A (zh) * | 2009-10-23 | 2010-04-14 | 北京邮电大学 | 一种基于本体的上下文感知应用平台及其工作方法 |
US8769656B2 (en) * | 2008-05-29 | 2014-07-01 | Nxp B.V. | Method and trusted service manager for providing fast and secure access to applications on an IC card |
CN104461566A (zh) * | 2014-12-25 | 2015-03-25 | 南京大学 | 一种基于对象实例的行为变体的jcop扩展实现方法 |
-
2015
- 2015-04-23 CN CN201510197953.6A patent/CN104820588B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769656B2 (en) * | 2008-05-29 | 2014-07-01 | Nxp B.V. | Method and trusted service manager for providing fast and secure access to applications on an IC card |
CN101446899A (zh) * | 2008-12-31 | 2009-06-03 | 西安交通大学 | 一种基于本体的上下文感知应用平台框架模型 |
CN101694629A (zh) * | 2009-10-23 | 2010-04-14 | 北京邮电大学 | 一种基于本体的上下文感知应用平台及其工作方法 |
CN104461566A (zh) * | 2014-12-25 | 2015-03-25 | 南京大学 | 一种基于对象实例的行为变体的jcop扩展实现方法 |
Non-Patent Citations (1)
Title |
---|
陈智勇等: "一个基于COP的控制软件安全性增强方法", 《计算机工程与应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515423A (zh) * | 2021-04-21 | 2021-10-19 | 香港理工大学深圳研究院 | 基于执行轨迹信息的安卓应用行为表征构造方法 |
CN113515423B (zh) * | 2021-04-21 | 2023-05-23 | 香港理工大学深圳研究院 | 基于执行轨迹信息的安卓应用行为表征构造方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104820588B (zh) | 2018-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5768480A (en) | Integrating rules into object-oriented programming systems | |
Xu et al. | Regression test selection for AspectJ software | |
US8312440B2 (en) | Method, computer program product, and hardware product for providing program individuality analysis for source code programs | |
Tahvildari et al. | Improving design quality using meta‐pattern transformations: a metric‐based approach | |
Xie et al. | A framework and tool supports for generating test inputs of AspectJ programs | |
JP2021535477A (ja) | フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法 | |
JP7218793B2 (ja) | プログラムの機能を向上するための制御フローシステム、非一時的可読媒体、および方法 | |
CN104573503B (zh) | 一种内存访问溢出的检测方法及装置 | |
JPH10509258A (ja) | コンピュータプロセスのリソースのモデル化方法及び装置 | |
Polo Usaola et al. | Reduction of test suites using mutation | |
Endo et al. | Model-based testing of service-oriented applications via state models | |
US11921621B2 (en) | System and method for improved unit test creation | |
Miyazawa et al. | Refinement-oriented models of Stateflow charts | |
Kanstrén et al. | Using built-in domain-specific modeling support to guide model-based test generation | |
CN104820588A (zh) | 一种避免行为层组合时行为变体重复编织的处理方法 | |
Bubel et al. | Analysis of executable software models | |
US7685571B2 (en) | Interactive domain configuration | |
Jezek et al. | Software components compatibility verification based on static byte-code analysis | |
Lauret et al. | Detection of interferences in aspect-oriented programs using executable assertions | |
Watanabe et al. | A technique for analysing and testing object-oriented software using coloured petri nets | |
Bakhirkin et al. | Finding recurrent sets with backward analysis and trace partitioning | |
Bagge et al. | Testing with Axioms in C++ 2011. | |
Tsantalis | Evaluation and improvement of software architecture: Identification of design problems in object-oriented systems and resolution through refactorings | |
US7685586B1 (en) | Global escape analysis using instantiated type analysis | |
US6792597B1 (en) | Automatic consistency checking of computer programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |