CN101794224B - 一种基于性质规约模式的软件运行时性质监测方法 - Google Patents

一种基于性质规约模式的软件运行时性质监测方法 Download PDF

Info

Publication number
CN101794224B
CN101794224B CN2010101147236A CN201010114723A CN101794224B CN 101794224 B CN101794224 B CN 101794224B CN 2010101147236 A CN2010101147236 A CN 2010101147236A CN 201010114723 A CN201010114723 A CN 201010114723A CN 101794224 B CN101794224 B CN 101794224B
Authority
CN
China
Prior art keywords
monitoring
character
variable
action
property
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
CN2010101147236A
Other languages
English (en)
Other versions
CN101794224A (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN2010101147236A priority Critical patent/CN101794224B/zh
Publication of CN101794224A publication Critical patent/CN101794224A/zh
Application granted granted Critical
Publication of CN101794224B publication Critical patent/CN101794224B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于性质规约模式的软件运行时性质监测方法,目的是提供一种有利于故障发现和诊断的软件运行时性质监测方法。技术方案是将软件运行时性质监测需求划分为多种性质规约模式,为每种性质规约模式构造一个性质规约模版;提取待监测软件中的元信息数据,生成元信息文件;配置性质规约模版,生成待监测软件的监测脚本文件;解析监测脚本文件,生成监测代码;将待监测软件和方面监测文件进行编织,生成具有运行时性质监测能力的新软件;运行编织后生成的新软件,对软件性质进行监测并将监测结果进行显示。采用本发明可为软件故障发现、诊断和缺陷定位提供支持,降低软件失效和维护成本,降低了监测工作量和监测难度,提高了时效性。

Description

一种基于性质规约模式的软件运行时性质监测方法
技术领域
本发明涉及软件监测领域中的一种软件运行时性质监测方法,尤其指一种基于性质规约模式监测软件运行时性质违背的方法。 
背景技术
随着软件规模的扩大和复杂度的提高,软件运行表现出动态性、不可预测性、潜在不安全性等诸多特性。软件的质量问题越来越突出,给人们的工作生活带来许多不利影响,甚至给人类生命、财产和环境造成灾难性的损失。为应对这些挑战,人们希望尽可能了解软件系统运行过程中的内部状况。软件运行时性质监测是指在软件系统运行过程中,通过捕获其内部状态、行为交互等信息,来监测和验证软件的运行状态与行为是否符合预期性质约束的方法。这里的性质约束指为了分析软件系统的行为、定位故障、优化软件执行的关键路径、进行可信分析、保证正确执行而附加的限制条件,也称监测需求。软件运行时性质监测在软件开发、维护以及可信分析等方面都很有用途。 
软件的监测需求通常是一系列不准确的非形式化描述或高度抽象的形式化描述(如线性时序逻辑、分支时序逻辑等)。实施监测时,需要将监测需求准确映射为对软件代码中相关变量、方法等在运行时的信息采集需求并进行性质验证。早期的软件监测方法为:在软件开发阶段,将软件的监测需求作为非功能需求的一部分与软件的其他需求(如功能需求、性能需求等)一起进行分析、设计和编码,生成具有监测功能的软件。这种监测方法使得最终生成的软件系统中监测代码和其它功能代码相互交织,产生代码纠缠和功能分散的问题。这种方法只适于用在开发阶段就考虑监测需求且监测需求明确、固定的软件,不能对大量已经在使用的遗产软件进行监测。为此,提出了基于代码插装的软件监测方法。该方法主要包括以下几步: 
1.分析监测需求和待监测软件,将监测需求分解为面向待监测软件实现层的一系列监测点和各监测点的信息采集需求。监测点也称插装点,即为需要插入插装代码的地方。插装代码用于采集需要的信息。 
2.利用代码插装工具(如,Jtrek、BCEL、ASM等)提供的接口规范,将各监测点的信息采集需求编码为插装代码并插装到待监测软件中,生成具有监测功能的新 软件。 
3.运行新软件,输出需要的消息(即监测信息),供监测人员分析,查找故障。 
基于代码插装的软件监测方法以扩充的方式在待监测软件上迭加插装代码,效果上能达到对简单监测需求变更的响应。然而基于代码插装的软件监测方法没有改变监测逻辑与软件原有业务逻辑混杂的状态,需要开发人员找到所有的插装点,并对每一个插装点的信息采集需求和原有业务逻辑进行分析编写插装代码,极容易出错。一方面增加了软件的维护复杂性,另一方面使得监测的后续工作——故障分析和缺陷定位变得难以继续。 
然而,随着软件开发周期和版本更新节奏的加快,软件适应可变和演化的需求日益增多,对软件的不同关注点进行独立建模、封装和维护的开发要求越来越强。软件监测需求就是一个典型的横切关注点。随着近几年面向方面编程(AOP:Aspect-OrientedProgramming)技术的快速发展,由于其封装横切关注点的特性,AOP技术也逐渐进入软件运行时监测领域,为软件运行时监测提供了新的思路和途径。基于AOP技术对软件进行监测主要分为以下几步: 
1.仔细分析待监测软件和监测需求,将监测需求分解为面向待监测软件实现层的一系列监测点和各监测点的信息采集需求。 
2.按照AOP编程规范,将各监测点和各监测点的信息采集需求编码成监测代码,保存在方面文件中。监测点经过分析总结后被编码为方面程序中的切入点(pointcut)。切入点用来指示待监测软件中插装点。信息采集需求被编码为各切入点的通知(advice)代表各插装点处的插装代码。通知可以在软件运行时采集需要的信息。切入点和通知被保存在独立的文件中,称为方面文件。 
3.利用代码编织工具(如,AJDT、ACDT等)将方面文件和待测软件进行编织,生成具有监测功能的新软件。 
4.运行新软件,输出需要的消息(即监测信息),供监测人员分析,查找故障。 
基于AOP技术的软件监测方法将监测需求从其它软件需求中独立出来,实现了监测功能的独立建模和封装。但由于AOP技术从编程切入,直接面向待监测软件实现层的离散化的信息采集需求,降低了监测的抽象层次,模糊了监测需求的物理含义,使得监测实施与软件工程中的监测需求可跟踪链脱节,从而给故障发现和故障推断带来困难。 
发明内容
本发明要解决的技术问题是,针对现有软件运行时性质监测方法的不足,提出一种 基于性质规约模式的软件运行时性质监测方法,为软件故障发现、诊断和缺陷定位提供支持,以降低软件失效和维护成本。 
本发明的技术方案是基于性质规约模式生成表示软件监测需求的监测脚本文件,解析监测脚本文件,生成面向方面程序代码规范的监测代码,利用AOP编织工具将监测代码与待监测软件编织,生成具有监测功能的新软件,运行新软件,实时获取软件状态变化序列和行为序列,然后验证待监测软件性质是否满足,从而发现是否发生故障。 
具体技术方案包括下面的步骤: 
第一步,将软件运行时性质监测需求划分为11种性质规约模式,为每种性质规约模式定义一个性质规约模版,并将这些性质规约模版存储在性质规约模式库中。每种性质规约模式表示一类具有相似描述方式和实现方式的监测需求。这11种性质规约模式分别是:变量读跟踪模式、变量写跟踪模式、变量越权访问监测模式、变量阈值监测模式、多变量监测模式、无目标运行轨迹跟踪模式、动作时延监测模式、动作参数及其异常域监测模式、动作结果及其异常域监测模式、动作序列监测模式、事件监测模式。变量读跟踪模式表示的监测需求为:获取对变量进行读操作的所有对象和读操作发生的时间;变量写跟踪模式表示的监测需求为:获取对变量进行写操作的所有对象、写操作发生的时间、写入的变量值;变量越权访问监测模式表示的监测需求为:对于有访问权限限制的变量,监测并判断是否存在越权操作;变量阈值监测模式表示的监测需求为:监测并判断对变量的写操作是否超出变量的阈值范围;多变量监测模式表示的监测需求为:判断在软件运行过程中,多个变量之间的性质约束(包括算术表达式形式和逻辑表达式形式的约束条件)是否一直得到满足;无目标运行轨迹跟踪模式表示的监测需求为:获取待监测软件运行过程中的每一个动作(方法调用)信息,包括动作名称、动作参数以及动作上下文;动作时延监测模式表示的监测需求为:获取单个动作的操作时延,并判断操作时延是否超过时延阈值;动作参数及其异常域监测模式表示的监测需求为:判断单个动作的参数是否存在异常,如果存在异常则报警并阻止此动作执行;动作结果及其异常域监测模式表示的监测需求为:判断单个动作的操作结果是否正确,如果存在异常则报警;动作序列监测模式表示的监测需求为:判断动作序列中的动作是否按顺序依次执行;事件监测模式表示的监测需求为:判断多个方法调用事件的发生是否满足规定的时序性质约束。每种性质规约模式表示的一类监测需求可以用相同的语法格式描述。为性质规约模式定义性质规约模版,以XMI(XML Metadata Interchange)文件形式描述性质规约模式表示的一类监测需求的语法格式,并将性质规约模版存储在性质规约模版库中。 为每种性质规约模式生成的性质规约模版结构如下: 
为变量读跟踪模式定义的性质规约模版包括性质规约模式类型和变量名称两项。性质规约模式类型表示对应的性质规约模式,此处为变量读跟踪模式;监测变量为期望监测的变量的名称。每个性质规约模版的性质规约模式类型都表示对应的性质规约模式,下同。 
为变量写跟踪模式定义的性质规约模版包括性质规约模式类型和变量名称两项。性质规约模版类型为变量写跟踪模式;变量名称为期望对其监测的变量名称。 
为变量越权访问监测模式定义的性质规约模版包括性质规约模式类型、变量名称、授权列表和禁止列表。性质规约模式类型为变量越权访问监测模式;变量名称为期望监测的变量的名称;授权列表用于列出允许访问此变量的对象名称;禁止列表用于列出不允许对此变量访问的对象。 
为变量阈值监测模式定义的性质规约模版包括性质规约模式类型、变量名称,变量类型,阈值限制。性质规约模式类型为变量阈值监测模式;变量名称为期望监测的变量的名称;变量类型为数值型和字符串型两种,根据变量的类型选择其中一种。如果变量类型为数值型,则阈值约束为表达式形式的约束;如果变量类型为字符串型,则阈值约束字符串长度的限制的约束形式。 
为多变量监测模式定义的性质规约模版包括性质规约模式类型和性质约束两项。性质规约模式类型为多变量监测模式;性质约束是由多个变量组成的算术表达式形式或逻辑表达式表示性质约束条件。 
为无目标运行轨迹跟踪模式定义的性质规约模版只包括性质规约模式类型一项,且其值为无目标运行轨迹跟踪模式。 
为动作时延监测模式定义的性质规约模版包括性质规约模式类型、动作名称和时延三项。性质规约模式类型为动作时延监测模式;动作名称用于指明期望监测的动作(即类的方法)的名称。时延表示期望的时延阈值范围。此处所指的方法的名称包括方法所属的类和方法名。 
为动作参数及其异常域监测模式定义的性质规约模版包括性质规约模式类型、动作名称、参数名称、参数类型和正常域。性质规约模式类型为动作参数及其异常域监测模式;动作名称指出期望监测的参数所属的方法名称,包括方法所属的类和方法名;参数名称和参数类型指明期望监测的参数的信息;正常域指出参数的正常取值范围。 
为动作结果及其异常域监测模式定义的性质规约模版包括性质规约模式类型、动作 名称和返回值类型三项。性质规约模式类型为动作结果及其异常域监测模式;动作名称用于指明期望监测的动作(即类的方法)的名称;返回值类型用于指明动作返回值的正常取值范围。 
为动作序列监测模式定义的性质规约模版包括性质规约模式类型和动作序列列表两项。性质规约模式类型为动作序列监测模式;动作序列列表依次列出期望监测的动作。 
为事件监测模式定义的性质规约模版包括性质规约模式类型和性质约束两项。性质规约模式类型为事件监测模式;性质约束为方法调用事件的时序性质描述,用时序逻辑公式表示。 
第二步,提取待监测软件中的元信息数据,生成元信息文件。元信息数据包括类的名称、修饰符、继承关系;类所有属性的名称、类型、修饰符;方法的名称、参数、修饰符、返回值类型;全局变量的名称、类型、结构;软件的名称、版本号。提取的元信息数据以XMI形式存储,便于工具读取和共享。将待监测软件的元信息数据按照类的继承关系、属性或方法与类的从属关系,以树形方式和图形化方式同时显示,辅助监测脚本编写。 
第三步,配置性质规约模版,生成待监测软件的监测脚本文件。监测脚本文件由脚本头部和一个或多个监测项组成以XMI文件形式存储。脚本头部描述了监测脚本文件的基本信息,包括监测脚本名称,待监测软件名称,监测脚本建立时间。监测脚本名称标识此监测脚本文件。待监测软件名称指出此监测脚本描述的是此名称所对应的待监测软件的监测需求。监测脚本建立时间标识建立此监测脚本的时间。监测项由监测项名称、性质、描述信息组成,每一个监测项描述一个监测需求。监测项名称标识监测项。在监测脚本文件中,监测项的名称不能重复。性质指需要监测的软件运行时性质,由性质类型和性质约束组成。性质类型为11种性质规约模式中的一种;性质约束表示针对待监测软件的一个具体的监测需求,通过配置与性质规约模式对应的性质规约模版生成。描述信息使用自然语言对监测项进行描述,缺省为空。生成监测脚本文件的具体步骤为: 
3.1初始化监测脚本文件的头部。获取待监测软件的名称和监测脚本建立时间,生成缺省的监测脚本名称,并将这些信息填充到监测脚本头部。 
3.2依次生成监测项。根据待监测软件性质监测需求的类型,选择相应的性质规约模式作为监测项的性质类型,生成缺省的监测项名称和描述信息。选择待监测软件的元信息数据,配置与性质规约模式对应的性质规约模版生成针对待监测软件的性质约束。 
3.3将生成的所有监测项将按照XMI形式保存到监测脚本文件中。 
第四步,解析监测脚本文件,生成方面监测文件。方面监测文件是存储解析监测脚本文件生成的最终监测代码的文件。具体步骤为: 
4.1初始化,将软件监测脚本文件中的第一个监测项设为当前解析项,设临时文件和方面监测文件为空。临时文件用于存储解析当前解析项生成的监测代码,解析下一个监测项时需要将临时文件清空。 
4.2根据当前解析项的性质类型采用相应的解析方法对性质约束进行解析,生成监测代码,保存在临时文件中。监测项中性质约束的分类处理如下: 
A当前解析项的性质类型是变量读跟踪模式时:获取性质约束中的变量名称,按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:记录读此变量的对象名称和读操作发生的时间,并封装成消息发送。将切入点和通知保存到临时文件中。 
B当前解析项的性质类型是变量写跟踪模式时:获取性质约束中的变量名称,按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:记录写此变量的所有对象名称、刚写入的变量值和写操作发生的时间,并封装成消息发送。将切入点和通知保存到临时文件中。 
C当前解析项的性质类型是变量越权访问监测模式时:解析性质约束,获取性质约束中的变量名称和变量的访问权限约束。按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:记录访问此变量的对象名称,并根据变量的访问权限约束判断是否为越权访问。如果越权,则将访问此变量的对象名称、操作发生时间,封装成警告信息发送;否则,不做处理。将切入点和通知保存到临时文件中。 
D当前解析项的性质类型是变量阈值监测模式时:解析性质约束,获取性质约束中的变量名称和变量的阈值约束。按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:读取刚写入的变量值,判断这个变量的值是否在阈值范围之内,如果超出了阈值范围就记录访问变量的对象名称、操作发生时间、变量当前值,封装成警告信息,并在阈值范围内选择一个随机值代替对此变量重新进行设置;否则,不做处理。将切入点和通知保存到临时文件中。 
E当前解析项的性质类型是多变量监测模式时:解析性质约束,获取性质约束中所有变量的名称。按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:在待测软件中对这些变量进行写操作的每一个地方读取刚写入的变量值,计算此时表达式的值,并判断是否违反表达式性质约束。如果违反性质约束就记录
写变量的对象名称、操作发生时间、被写变量的当前值,封装成警告信息发送;否则,不做处理。将切入点和通知保存到临时文件中。 
F当前解析项的性质类型是无目标运行轨迹跟踪模式时:根据待监测软件的元信息数据获得待监测软件中所有方法的名称。将这些方法都编码为切入点。编码与此切入点对应的通知:记录程序运行中所有的操作调用,并将操作调用的调用者名称、被调用者名称和操作发生时间封装成消息发送。将切入点和通知保存到临时文件中。 
G当前解析项的性质类型是动作时延监测模式时:解析性质约束,获取性质约束中动作(即方法调用)的名称和动作的时延阈值约束。按照AOP规范,将动作的开始处和返回处分别编码为切入点,得到两个切入点:checkpoint1和checkpoint2。编码与切入点对应的通知:与checkpoint1对应的通知记录系统时钟t1,与checkpoint2相对应的通知记录系统时钟t2并计算动作的时延T=t2-t1。当需要监测操作时延是否超过阈值时,checkpoint2对应的通知还要比较操作时延和阈值。当操作的延时超过阈值时,记录操作名称、时延封装成警告信息发送;否则,不做处理。将切入点和通知保存到临时文件中。 
H当前解析项的性质类型是动作参数及其异常域监测模式时:解析性质约束,获取性质约束中动作参数的名称、此参数的类型和正常域。按照AOP编程规范,根据性质类型和动作参数的名称构造切入点。编码与此切入点对应的通知:在动作被调用的地方截获操作参数,并与参数的类型和正常域相比较。如果存在异常,则发送异常消息;否则,不做处理。将切入点和通知保存到临时文件中。 
I当前解析项的性质类型是动作结果及其异常域监测模式时:解析性质约束,获取性质约束中动作的名称、返回值的类型。对动作的代码进行封装,向动作代码的前后增加异常捕获代码。按照AOP编程规范,根据性质类型和动作名称将改造后的动作返回处作为插装点构造切入点。编码与此切入点对应的通知:捕获动作执行时的异常。如果发现了异常,则将捕获的这个异常封装成消息发送,否则说明操作正常结束,不处理。将切入点和通知保存到临时文件中。 
J当前解析项的性质类型是动作序列监测模式时:解析性质约束,获取性质约束中所有动作的名称。按照AOP编程规范,根据性质类型和动作的名称构造切入点。编码与此切入点对应的通知:在对动作序列中每一个动作调用的地方获取动作的名称,动作发生时间,连同监测项名称封装成消息发送。将动作序列的性质约束抽象成有限状态机和性质验证算法,供软件运行时接收此监测项的动作消息并验证性质。将切入点和通知保存到临时文件中。 
K当前解析项的性质类型是事件监测模式时:首先对监测性质约束进行语法解析,提取需要监测的事件。按照AOP编程规范,根据性质类型为方法调用事件构造切入点。编码与切入点对应的通知:捕获符合条件的方法调用事件作为事件流,将事件名称、事件发生时间连同监测项名称封装成消息发送。将性质约束抽象成有限状态机和性质验证算法。捕获的事件流作为性质验证算法的输入,有限状态机根据输入的事件流进行推理,并利用事件触发一些状态转换,来对约束进行同步的验证。将切入点和通知保存到临时文件中。 
4.3如果当前解析项为监测脚本文件中的第一个监测项,则直接将临时文件中的监测代码加入方面监测文件中,清空临时文件,转步骤4.5。否则,执行步骤4.4。 
4.4利用方面冲突检测工具对临时文件中的监测代码和方面监测文件中的监测代码进行方面冲突检测。如果存在方面冲突,则给出提示信息,忽略当前解析项,清空临时文件。如果不存在方面冲突,则将临时文件中的监测代码加入方面监测文件中,清空临时文件。 
4.5判断软件监测脚本文件中的所有监测项是否解析完毕,如果没有,则将下一个监测项作为当前解析项,转步骤4.2;否则,执行下一步; 
第五步,选用方面代码编织工具(如,AspectJ)将待监测软件和方面文件进行编织,生成具有运行时性质监测能力的新软件。 
第六步,运行编织后生成的新软件,对软件性质进行监测并将监测结果进行图形化显示。具体包括以下步骤: 
6.1实时接收新软件发送的消息,并记录在日志文件中。 
6.2对接收的消息进行解析,按照消息的类型进行不同的处理。如果是监测结束消息,则给出提示信息,结束监测过程;如果是动作序列监测模式和事件监测模式的消息,则转步骤6.3;如果是其他模式的消息,则转步骤6.4。 
6.3按照监测项的名称将解析之后的消息依时间顺序保存。运行此监测项对应的性质验证算法(此算法在监测脚本解析过程中生成),如果存在性质违背,则给出报警显示,并通知性质验证算法,以后接收到此监测项的消息则忽略,不处理。转步骤6.2。 
6.4按照时序关系分类显示解析之后的消息,给出报警显示。转步骤6.2。 
采用本发明可以达到以下技术效果: 
1.本发明将软件的运行时性质监测需求划分为11种性质规约模式,每一种性质规约模式代表一类性质监测需求,为它们分别构造性质规约模版。相对于用形式语言(如线性时序逻辑、分支时序逻辑等)描述软件运行时性质监测需求的监测方法,本发明不仅克服了形式语言描述监测需求不直接,难于阅读和理解的问题,还扩展了监测需求的描述能力,可以对形式语言不能描述的某些性质进行监测。 
2.本发明第4步根据监测脚本中监测项的性质类型对性质约束分类解析生成监测代码,无需编程即可实现监测代码的生成,不需要关心插装点(监测点)的选择和插装代码(监测信息的存储、传输和显示)的编写,消除了编写监测代码的技术门槛,降低了监测工作量和监测难度。 
3.本发明第4步利用AOP规范生成监测代码,第5步利用AOP技术将监测代码和待监测软件进行编织,很好地实现了监测逻辑和待监测软件业务逻辑的分离。使待监测软件的代码结构和模块性得到了保证,提高了待监测软件的可读性和可复用性,降低了故障发现、诊断和缺陷定位的难度。 
4.当监测需求发生改变时,本发明可以很容易生成新的具有监测能力的软件。只需要重新配置监测脚本并解析生成新的方面文件,利用编织工具将新的方面文件与待监测软件重新编织即可得到具有监测能力的新软件满足监测需求。 
5.本发明图形化显示监测结果,并实时验证监测的性质是否得到满足,降低了对监测人员专业性的要求,提高了时效性。 
附图说明
图1是本发明总体流程图。 
图2是本发明第3步生成的监测脚本结构示意图。 
图3是本发明第4步解析软件监测脚本、生成方面监测文件流程图。 
具体实施方案
图1是本发明的总体流程图。主要包括以下六个步骤: 
第一步,将软件运行时性质监测需求划分为11种性质规约模式,为每一种性质规约模式构造一个性质规约模版。将这些性质规约模版编号并保存在性质规约模版库中。 
第二步,提取待监测软件中的元信息数据,生成元信息文件。 
第三步,配置性质规约模版,生成待监测软件的监测脚本文件。 
第四步,解析监测脚本文件,生成方面监测文件。 
第五步,将待监测软件和方面文件进行编织生成具有监测功能的新软件。 
第六步,运行编织后生成的新软件,对软件性质进行监测并将监测结果进行显示。 
图2为监测脚本文件的结构示意图。监测脚本文件由脚本头部和多个监测项组成。脚本头部描述了监测脚本文件的基本信息,包括监测脚本名称(Mon_name),待监测软件名称(Software_name),监测脚本建立时间(Time)。Mon_name标识此监测脚本文件。Software_name指出此监测脚本描述的是此名称所对应的待监测软件的监测需求。Time记录建立此监测脚本的时间。每一个Mon_item由监测项名称(Mon_item_name)、性质(property)、描述信息(Desp_info)组成。Mon_item_name标识监测项,一般情况下按一定的规则自动生成,但也可以人为指定(一般此时对应软件的某种物理含义)。Desp_info对监测项进行说明,包含性质违背是的警告信息。每一个property由性质类型(type)和性质约束(formula)组成。type用于标识此性质的类型,为性质规约模式中的一种。formula描述了期望的软件性质。 
图3为本发明第四步解析软件监测脚本、生成方面监测文件流程图,主要包括下面的步骤: 
1初始化,将软件监测脚本文件中的第一个监测项设为当前解析项,设临时文件和方面监测脚本文件为空。临时文件用于存储解析当前解析项生成的监测代码,解析下一个监测项时需要将临时文件清空。 
2根据当前解析项的性质类型采用相应的解析方法对性质约束进行解析,生成监测代码,保存在临时文件中。监测项中性质约束的分类处理如下: 
A当前解析项的性质类型是变量读跟踪模式时:获取性质约束中的变量名称,按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:记录读此变量的对象名称和读操作发生的时间,并封装成消息发送。将切入点和通知保存到临时文件中。 
B当前解析项的性质类型是变量写跟踪模式时:获取性质约束中的变量名称,按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:记录写此变量的所有对象名称、刚写入的变量值和写操作发生的时间,并封装成消息发送。将切入点和通知保存到临时文件中。 
C当前解析项的性质类型是变量越权访问监测模式时:解析性质约束,获取性质约束中的变量名称和变量的访问权限约束。按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:记录访问此变量的对象名称,并根据变量的访问权限约束判断是否为越权访问。如果越权,则将访问此变量的对象名称、操作发生时间,封装成警告信息发送;否则,不做处理。将切入点和通知保存到临时文件中。 
D当前解析项的性质类型是变量阈值监测模式时:解析性质约束,获取性质约束中的变量名称和变量的阈值约束。按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:读取刚写入的变量值,判断这个变量的值是否在阈值范围之内,如果超出了阈值范围就记录访问变量的对象名称、操作发生时间、变量当前值,封装成警告信息,并在阈值范围内选择一个随机值代替对此变量重新进行设置;否则,不做处理。将切入点和通知保存到临时文件中。 
E当前解析项的性质类型是多变量监测模式时:解析性质约束,获取性质约束中所有变量的名称。按照AOP编程规范,根据性质类型和变量名称构造切入点。编码与此切入点对应的通知:在待测软件中对这些变量进行写操作的每一个地方处读取刚写入的变量值,计算此时表达式的值,并判断是否违反表达式性质约束。如果违反性质约束就记录写变量的对象名称、操作发生时间、被写变量的当前值,封装成警告信息发送;否则,不做处理。将切入点和通知保存到临时文件中。 
F当前解析项的性质类型是无目标运行轨迹跟踪模式时:根据待监测软件的元信息数据获得待监测软件中所有方法的名称。将这些方法都编码为切入点。编码与此切入点对应的通知:记录程序运行中所有的操作调用,并将操作调用的调用者名称、被调用者名称和操作发生时间封装成消息发送。将切入点和通知保存到临时文件中。 
G当前解析项的性质类型是动作时延监测模式时:解析性质约束,获取性质约束中动作(即方法调用)的名称和动作的时延阈值约束。按照AOP规范,将动作的开始处和返回处分别编码为切入点,得到两个切入点:checkpoint1和checkpoint2。编码与切入点对应的通知:与checkpoint1对应的通知记录系统时钟t1,与checkpoint2相对应的通知记录系统时钟t2并计算动作的时延T=t2-t1。当需要监测操作时延是否超过阈值时,checkpoint2对应的通知还要比较操作时延和阈值。当操作的延时超过阈值时,记录操作名称、时延封装成警告信息发送;否则,不做处理。将切入点和通知保存到临时文件中。 
H当前解析项的性质类型是动作参数及其异常域监测模式时:解析性质约束,获取性质约束中动作参数的名称、此参数的类型和正常域。按照AOP编程规范,根据性质类型和动作参数的名称构造切入点。编码与此切入点对应的通知:在动作被调用的地方截获操作参数,并与参数的类型和正常域相比较。如果存在异常,则发送异常消息;否则,不做处理。将切入点和通知保存到临时文件中。 
I当前解析项的性质类型是动作结果及其异常域监测模式时:解析性质约束,获取性质约束中动作的名称、返回值的类型。对动作的代码进行封装,向动作代码的前后增加异常捕获代码。按照AOP编程规范,根据性质类型和动作名称将改造后的动作返回处作为插装点构造切入点。编码与此切入点对应的通知:捕获动作执行时的异常。如果发现了异常,则将捕获的这个异常封装成消息发送,否则说明操作正常结束,不处理。将切入点和通知保存到临时文件中。 
J当前解析项的性质类型是动作序列监测模式时:解析性质约束,获取性质约束中所有动作的名称。按照AOP编程规范,根据性质类型和动作的名称构造切入点。编码与此切入点对应的通知:在对动作序列中每一个动作调用的地方获取动作的名称,动作发生时间,连同监测项名称封装成消息发送。将动作序列的性质约束抽象成有限状态机和性质验证算法,供软件运行时接收此监测项的动作消息并验证性质。将切入点和通知保存到临时文件中。 
K当前解析项的性质类型是事件监测模式时:首先对监测性质约束进行语法解析,提取需要监测的事件。按照AOP编程规范,根据性质类型为方法调用事件构造切入点。编码与切入点对应的通知:捕获符合条件的方法调用事件作为事件流,将事件名称、事件发生时间连同监测项名称封装成消息发送。将性质约束抽象成有限状态机和性质验证算法。捕获的事件流作为性质验证算法的输入,有限状态机根据输入的事件流进行推理,并利用事件触发一些状态转换,来对约束进行同步的验证。将切入点和通知保存到临时文件中。 
3如果当前解析项为监测脚本文件中的第一个监测项,则直接将临时文件中的监测代码加入方面文件中,更新方面文件,清空临时文件,转步骤5。否则,执行步骤4。 
4利用方面冲突检测工具对临时文件中的监测代码和方面文件中的监测代码进行方面冲突检测。如果存在方面冲突,则给出提示信息,忽略当前解析项,清空临时文件。如果不存在方面冲突,则将临时文件中的监测代码加入方面文件中,更新方面文件,清空临时文件。 
[0090] 5判断软件监测脚本文件中的所有监测项是否解析完毕,如果没有,则将下一个监测项作为当前解析项,,转步骤2;否则,监测脚本文件解析完。 

Claims (7)

1.一种基于性质规约模式的软件运行时性质监测方法,其特征在于包括以下步骤: 
第一步,将软件运行时性质监测需求划分为多种性质规约模式,为每种性质规约模式构造一个性质规约模版,将这些性质规约模版编号并保存在性质规约模版库中;每种性质规约模式表示一类具有相似描述方式和实现方式的监测需求; 
第二步,提取待监测软件中的元信息数据,生成元信息文件;元信息数据包括类的名称、修饰符、继承关系;类所有属性的名称、类型、修饰符;方法的名称、参数、修饰符、返回值类型;全局变量的名称、类型、结构;软件的名称、版本号; 
第三步,配置性质规约模版,生成待监测软件的监测脚本文件;监测脚本文件由脚本头部和一个或多个监测项组成,脚本头部包括监测脚本名称,待监测软件名称,监测脚本建立时间,监测脚本名称标识此监测脚本文件,待监测软件名称指出此监测脚本描述的是此名称所对应的待监测软件的监测需求,监测脚本建立时间标识建立此监测脚本的时间;监测项由监测项名称、性质、描述信息组成,每一个监测项描述一个监测需求;监测项名称标识监测项,监测项的名称不能重复;性质指需要监测的软件运行时性质,由性质类型和性质约束组成,性质类型为性质规约模式中的一种,性质约束表示针对待监测软件的一个具体的监测需求,通过配置与性质规约模式对应的性质规约模版生成;描述信息使用自然语言对监测项进行描述,缺省为空;生成监测脚本文件的具体步骤为: 
3.1初始化监测脚本文件的头部:获取待监测软件的名称和监测脚本建立时间,生成缺省的监测脚本名称,并将这些信息填充到监测脚本头部; 
3.2依次生成监测项:根据待监测软件性质监测需求的类型,选择相应的性质规约模式作为监测项的性质类型,生成缺省的监测项名称和描述信息;选择待监测软件的元信息数据,配置与性质规约模式对应的性质规约模版生成针对待监测软件的性质约束; 
3.3将生成的所有监测项保存到监测脚本文件中; 
第四步,解析监测脚本文件,生成监测代码,具体步骤为: 
4.1初始化,将软件监测脚本文件中的第一个监测项设为当前解析项,将临时文件和方面监测文件清空,临时文件用于存储解析当前解析项生成的监测代码; 
4.2根据当前解析项的性质类型采用相应的解析方法对性质约束进行解析,生成监测代码,保存在临时文件中; 
4.3如果当前解析项为监测脚本文件中的第一个监测项,则直接将临时文件中的监测代码加入方面监测文件中,清空临时文件,转步骤4.5,否则,执行步骤4.4; 
4.4利用方面冲突检测工具对临时文件中的监测代码和方面监测文件中的监测代码进行方面冲突检测,如果存在方面冲突,则给出提示信息,忽略当前解析项,清空临时文件,如果不存在方面冲突,则将临时文件中的监测代码加入方面监测文件中,清空临时文件; 
4.5判断软件监测脚本文件中的所有监测项是否解析完毕,如果没有,则将下一个监测项作为当前解析项,转步骤4.2;否则,执行下一步; 
第五步,选用方面代码编织工具将待监测软件和方面监测文件进行编织,生成具有运行时性质监测能力的新软件; 
第六步,运行编织后生成的新软件,对软件性质进行监测并将监测结果进行显示。 
2.如权利要求1所述的一种基于性质规约模式的软件运行时性质监测方法,其特征在于所述性质规约模式共有11种,分别是:变量读跟踪模式、变量写跟踪模式、变量越权访问监测模式、变量阈值监测模式、多变量监测模式、无目标运行轨迹跟踪模式、动作时延监测模式、动作参数及其异常域监测模式、动作结果及其异常域监测模式、动作序列监测模式、事件监测模式;变量读跟踪模式表示的监测需求为:获取对变量进行读操作的所有对象和读操作发生的时间;变量写跟踪模式表示的监测需求为:获取对变量进行写操作的所有对象、写操作发生的时间、写入的变量值;变量越权访问监测模式表示的监测需求为:对于有访问权限限制的变量,监测并判断是否存在越权操作;变量阈值监测模式表示的监测需求为:监测并判断对变量的写操作是否超出变量的阈值范围;多变量监测模式表示的监测需求为:判断在软件运行过程中,多个变量之间的性质约束包括算术 表达式形式和逻辑表达式形式的约束条件是否一直得到满足;无目标运行轨迹跟踪模式表示的监测需求为:获取待监测软件运行过程中的每一个动作信息,包括动作名称、动作参数以及动作上下文;动作时延监测模式表示的监测需求为:获取单个动作的操作时延,并判断操作时延是否超过时延阈值;动作参数及其异常域监测模式表示的监测需求为:判断单个动作的参数是否存在异常,如果存在异常则报警并阻止此动作执行;动作结果及其异常域监测模式表示的监测需求为:判断单个动作的操作结果是否正确,如果存在异常则报警;动作序列监测模式表示的监测需求为:判断动作序列中的动作是否按顺序依次执行;事件监测模式表示的监测需求为:判断多个方法调用事件的发生是否满足规定的时序性质约束。 
3.如权利要求2所述的一种基于性质规约模式的软件运行时性质监测方法,其特征在于为每种性质规约模式生成的性质规约模版结构是: 
为变量读跟踪模式定义的性质规约模版包括性质规约模式类型和变量名称两项,性质规约模式类型表示对应的性质规约模式为变量读跟踪模式;监测变量为期望监测的变量的名称; 
为变量写跟踪模式定义的性质规约模版包括性质规约模式类型和变量名称两项,性质规约模版类型为变量写跟踪模式,变量名称为期望对其监测的变量名称; 
为变量越权访问监测模式定义的性质规约模版包括性质规约模式类型、变量名称、授权列表和禁止列表;性质规约模式类型为变量越权访问监测模式;变量名称为期望监测的变量的名称;授权列表用于列出允许访问此变量的对象名称;禁止列表用于列出不允许对此变量访问的对象; 
为变量阈值监测模式定义的性质规约模版包括性质规约模式类型、变量名称,变量类型,阈值限制;性质规约模式类型为变量阈值监测模式;变量名称为期望监测的变量的名称;变量类型为数值型和字符串型两种,根据变量的类型选择其中一种,如果变量类型为数值型,则阈值约束为表达式形式的约束;如果变量类型为字符串型,则阈值约束字符串长度的限制的约束形式; 
为多变量监测模式定义的性质规约模版包括性质规约模式类型和性质约束两项,性质规约模式类型为多变量监测模式;性质约束是由多个变量组成的算术表达式形式或逻辑表达式表示性质约束条件; 
为无目标运行轨迹跟踪模式定义的性质规约模版只包括性质规约模式类型 一项,其值为无目标运行轨迹跟踪模式; 
为动作时延监测模式定义的性质规约模版包括性质规约模式类型、动作名称和时延三项;性质规约模式类型为动作时延监测模式;动作名称用于指明期望监测的动作的名称;时延表示期望的时延阈值范围; 
为动作参数及其异常域监测模式定义的性质规约模版包括性质规约模式类型、动作名称、参数名称、参数类型和正常域;性质规约模式类型为动作参数及其异常域监测模式;动作名称指出期望监测的参数所属的方法名称,包括方法所属的类和方法名;参数名称和参数类型指明期望监测的参数的信息;正常域指出参数的正常取值范围; 
为动作结果及其异常域监测模式定义的性质规约模版包括性质规约模式类型、动作名称和返回值类型三项;性质规约模式类型为动作结果及其异常域监测模式;动作名称用于指明期望监测的动作的名称;返回值类型用于指明动作返回值的正常取值范围; 
为动作序列监测模式定义的性质规约模版包括性质规约模式类型和动作序列列表两项;性质规约模式类型为动作序列监测模式;动作序列列表依次列出期望监测的动作; 
为事件监测模式定义的性质规约模版包括性质规约模式类型和性质约束两项;性质规约模式类型为事件监测模式;性质约束为方法调用事件的时序性质描述,用时序逻辑公式表示。 
4.如权利要求1所述的一种基于性质规约模式的软件运行时性质监测方法,其特征在于将元信息数据按照类的继承关系、属性或方法与类的从属关系,以树形方式和图形化方式同时显示。 
5.如权利要求1或2所述的一种基于性质规约模式的软件运行时性质监测方法,其特征在于所述采用解析方法对性质约束进行解析,生成监测代码的方法是: 
A当前解析项的性质类型是变量读跟踪模式时:获取性质约束中的变量名称,按照AOP编程规范,根据性质类型和变量名称构造切入点;编码与此切入点对应的通知:记录读此变量的对象名称和读操作发生的时间,并封装成消息发送;将切入点和通知保存到临时文件中; 
B当前解析项的性质类型是变量写跟踪模式时:获取性质约束中的变量名称,按照AOP编程规范,根据性质类型和变量名称构造切入点;编码与此切入 点对应的通知:记录写此变量的所有对象名称、刚写入的变量值和写操作发生的时间,并封装成消息发送;将切入点和通知保存到临时文件中; 
C当前解析项的性质类型是变量越权访问监测模式时:解析性质约束,获取性质约束中的变量名称和变量的访问权限约束;按照AOP编程规范,根据性质类型和变量名称构造切入点;编码与此切入点对应的通知:记录访问此变量的对象名称,并根据变量的访问权限约束判断是否为越权访问;如果越权,则将访问此变量的对象名称、操作发生时间,封装成警告信息发送;否则,不做处理;将切入点和通知保存到临时文件中; 
D当前解析项的性质类型是变量阈值监测模式时:解析性质约束,获取性质约束中的变量名称和变量的阈值约束;按照AOP编程规范,根据性质类型和变量名称构造切入点;编码与此切入点对应的通知:读取刚写入的变量值,判断这个变量的值是否在阈值范围之内,如果超出了阈值范围就记录访问变量的对象名称、操作发生时间、变量当前值,封装成警告信息,并在阈值范围内选择一个随机值代替对此变量重新进行设置;否则,不做处理;将切入点和通知保存到临时文件中; 
E当前解析项的性质类型是多变量监测模式时:解析性质约束,获取性质约束中所有变量的名称;按照AOP编程规范,根据性质类型和变量名称构造切入点;编码与此切入点对应的通知:在待测软件中对这些变量进行写操作的每一个地方读取刚写入的变量值,计算此时表达式的值,并判断是否违反表达式性质约束;如果违反性质约束就记录写变量的对象名称、操作发生时间、被写变量的当前值,封装成警告信息发送;否则,不做处理;将切入点和通知保存到临时文件中; 
F当前解析项的性质类型是无目标运行轨迹跟踪模式时:根据待监测软件的元信息数据获得待监测软件中所有方法的名称;将这些方法都编码为切入点;编码与此切入点对应的通知:记录程序运行中所有的操作调用,并将操作调用的调用者名称、被调用者名称和操作发生时间封装成消息发送;将切入点和通知保存到临时文件中; 
G当前解析项的性质类型是动作时延监测模式时:解析性质约束,获取性质约束中动作的名称和动作的时延阈值约束;按照AOP规范,将动作的开始处和返回处分别编码为切入点,得到两个切入点:checkpoint1和checkpoint2;编码 与切入点对应的通知:与checkpoint1对应的通知记录系统时钟t1,与checkpoint2相对应的通知记录系统时钟t2并计算动作的时延T=t2-t1;当需要监测操作时延是否超过阈值时,checkpoint2对应的通知还要比较操作时延和阈值;当操作的延时超过阈值时,记录操作名称、时延封装成警告信息发送;否则,不做处理;将切入点和通知保存到临时文件中; 
H当前解析项的性质类型是动作参数及其异常域监测模式时:解析性质约束,获取性质约束中动作参数的名称、此参数的类型和正常域;按照AOP编程规范,根据性质类型和动作参数的名称构造切入点;编码与此切入点对应的通知:在动作被调用的地方截获操作参数,并与参数的类型和正常域相比较;如果存在异常,则发送异常消息;否则,不做处理;将切入点和通知保存到临时文件中; 
I当前解析项的性质类型是动作结果及其异常域监测模式时:解析性质约束,获取性质约束中动作的名称、返回值的类型;对动作的代码进行封装,向动作代码的前后增加异常捕获代码;按照AOP编程规范,根据性质类型和动作名称将改造后的动作返回处作为插装点构造切入点;编码与此切入点对应的通知:捕获动作执行时的异常;如果发现了异常,则将捕获的这个异常封装成消息发送,否则说明操作正常结束,不处理;将切入点和通知保存到临时文件中; 
J当前解析项的性质类型是动作序列监测模式时:解析性质约束,获取性质约束中所有动作的名称;按照AOP编程规范,根据性质类型和动作的名称构造切入点;编码与此切入点对应的通知:在对动作序列中每一个动作调用的地方获取动作的名称,动作发生时间,连同监测项名称封装成消息发送;将动作序列的性质约束抽象成有限状态机和性质验证算法,供软件运行时接收此监测项的动作消息并验证性质;将切入点和通知保存到临时文件中; 
K当前解析项的性质类型是事件监测模式时:首先对监测性质约束进行语法解析,提取需要监测的事件;按照AOP编程规范,根据性质类型为方法调用事件构造切入点;编码与切入点对应的通知:捕获符合条件的方法调用事件作为事件流,将事件名称、事件发生时间连同监测项名称封装成消息发送;将性质约束抽象成有限状态机和性质验证算法;捕获的事件流作为性质验证算法的输入,有限状态机根据输入的事件流进行推理,并利用事件触发一些状态转换,来对约束进行同步的验证;将切入点和通知保存到临时文件中。 
6.如权利要求1或2所述的一种基于性质规约模式的软件运行时性质监测方 法,其特征在于运行编织后生成的新软件,对软件性质进行监测并将监测结果进行显示的具体步骤为: 
6.1实时接收新软件发送的消息,并记录在日志文件中; 
6.2对接收的消息进行解析,按照消息的类型进行不同的处理;如果是监测结束消息,则给出提示信息,结束监测过程;如果是动作序列监测模式和事件监测模式的消息,则转步骤6.3;如果是其他模式的消息,则转步骤6.4; 
6.3按照监测项的名称将解析之后的消息依时间顺序保存;运行此监测项对应的性质验证算法,如果存在性质违背,则给出报警显示,并通知性质验证算法,以后接收到此监测项的消息则忽略,不处理;转步骤6.2;
6.4按照时序关系分类显示解析之后的消息,给出报警显示;转步骤6.2。 
7.如权利要求1所述的一种基于性质规约模式的软件运行时性质监测方法,其特征在于所述监测脚本文件、元信息数据、性质规约模版均以XMI文件形式存储。 
CN2010101147236A 2010-02-26 2010-02-26 一种基于性质规约模式的软件运行时性质监测方法 Expired - Fee Related CN101794224B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101147236A CN101794224B (zh) 2010-02-26 2010-02-26 一种基于性质规约模式的软件运行时性质监测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101147236A CN101794224B (zh) 2010-02-26 2010-02-26 一种基于性质规约模式的软件运行时性质监测方法

Publications (2)

Publication Number Publication Date
CN101794224A CN101794224A (zh) 2010-08-04
CN101794224B true CN101794224B (zh) 2013-11-13

Family

ID=42586936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101147236A Expired - Fee Related CN101794224B (zh) 2010-02-26 2010-02-26 一种基于性质规约模式的软件运行时性质监测方法

Country Status (1)

Country Link
CN (1) CN101794224B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622258A (zh) * 2011-01-31 2012-08-01 国际商业机器公司 获取软件工程中的业务信息的装置和方法
US9069897B2 (en) 2011-11-23 2015-06-30 Microsoft Technology Licensing, Llc Capturing telemetry data by dynamic language engine
CN103294596B (zh) * 2013-05-23 2016-11-16 西安电子科技大学 一种基于程序不变量的合约式软件故障预警方法
US9740363B2 (en) * 2013-10-02 2017-08-22 Velocity Technology Solutions, Inc. Methods and systems for managing community information
CN103714290B (zh) * 2013-12-26 2016-08-17 北京工业大学 一种软件行为获取、监控与验证方法
US9959324B2 (en) * 2015-03-26 2018-05-01 International Business Machines Corporation Bootstrapping the data lake and glossaries with ‘dataset joins’ metadata from existing application patterns
CN107145422B (zh) * 2017-03-14 2020-08-28 卡斯柯信号有限公司 一种软件故障报警监测方法
CN107465667B (zh) * 2017-07-17 2019-10-18 全球能源互联网研究院有限公司 基于规约深度解析的电网工控安全协同监测方法及装置
CN108965282B (zh) * 2018-07-05 2021-05-07 珠海许继芝电网自动化有限公司 一种非入侵式跨安全区消息跟踪与监测的系统及方法
CN110263004A (zh) * 2019-05-08 2019-09-20 北京字节跳动网络技术有限公司 日志记录方法、装置、电子设备和存储介质
CN110377383B (zh) * 2019-07-02 2023-02-03 上海上湖信息技术有限公司 一种查看应用软件性能参数的方法、装置及存储介质
CN110457063B (zh) * 2019-07-15 2024-04-16 中国平安人寿保险股份有限公司 脚本程序的封装方法及装置、电子设备、可读存储介质
CN113947334A (zh) * 2021-11-11 2022-01-18 昆明电力交易中心有限责任公司 可配置的电力交易风险监测方法、装置和计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162428A (zh) * 2007-11-22 2008-04-16 上海交通大学 软件动态演化中构件运行时状态的获取和转换方法
CN101571828A (zh) * 2009-06-11 2009-11-04 北京航空航天大学 基于约束分析和模型检验的代码安全漏洞检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162428A (zh) * 2007-11-22 2008-04-16 上海交通大学 软件动态演化中构件运行时状态的获取和转换方法
CN101571828A (zh) * 2009-06-11 2009-11-04 北京航空航天大学 基于约束分析和模型检验的代码安全漏洞检测方法

Also Published As

Publication number Publication date
CN101794224A (zh) 2010-08-04

Similar Documents

Publication Publication Date Title
CN101794224B (zh) 一种基于性质规约模式的软件运行时性质监测方法
Szvetits et al. Systematic literature review of the objectives, techniques, kinds, and architectures of models at runtime
Lo et al. SMArTIC: Towards building an accurate, robust and scalable specification miner
US8739129B1 (en) Multi-domain unified debugger
Shi et al. Integration testing of software product lines using compositional symbolic execution
CN105528295B (zh) 移动应用程序异常行为检测方法及装置
Hegedüs et al. Back-annotation of simulation traces with change-driven model transformations
Duo et al. Formal analysis of smart contract based on colored petri nets
Ng et al. Identification of behavioural and creational design motifs through dynamic analysis
CN107111544A (zh) 生产诊断中的历史控制流可视化
US9367428B2 (en) Transparent performance inference of whole software layers and context-sensitive performance debugging
CN103714290A (zh) 一种软件行为获取、监控与验证方法
CN105278945A (zh) 程序可视化装置、程序可视化方法及程序可视化程序
CN115080448B (zh) 一种软件代码不可达路径自动检测的方法和装置
CN111367786A (zh) 一种符号执行方法、电子设备以及存储介质
WO2017023299A1 (en) Composing future tests
CN102385511B (zh) 跨动态边界的运行时分析的可视化
CN116756021A (zh) 基于事件分析的故障定位方法、装置、电子设备及介质
CN109542444A (zh) Java应用的监控方法、装置、服务器和存储介质
Behrends Simulation-based debugging of active databases
US11119899B2 (en) Determining potential test actions
CN104778087B (zh) 一种信息处理方法以及信息处理装置
Li et al. Soncraft: A tool for construction, simulation, and analysis of structured occurrence nets
CN112784417B (zh) 一种基于SysML的航电分布式联合仿真方法及系统
de Jong et al. Process-mining based dynamic software architecture reconstruction

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
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: 20131113

Termination date: 20190226