面向模型检测的Java多线程程序粗粒度自动建模方法研究

来源 :内蒙古大学 | 被引量 : 0次 | 上传用户:y58jm
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
Java多线程程序中存在并发、同步和交互行为,导致状态爆炸,算法错误检测难度较大。调试方法和测试方法都难以覆盖并发程序全部执行路径;软件模型检测方法自动搜索并发程序全部执行路径,但在状态爆炸时难以完成。本文针对Java多线程程序提出层次着色Petri网(Hierarchical Coloured Petri Net,HCPN)粗粒度自动建模方法,在不影响模型检测结果的前提下,实现了模型及其状态空间规模缩减,有利于模型检测效率的提升。工作如下:1.提出了属性公式处理策略。粗粒度模型必须保留属性公式中待检测的状态信息,待检测状态相关的源程序语句须采用细粒度描述。因此本文提出了包含关键变量注释方法、检测相关语句自动识别方法、相关模型片段提示方法的属性公式处理策略。2.提出了包含语句粗细粒度判定功能的程序预处理方法。以语句为单位读取源程序,为每个函数构建语句二叉树,依据本文提出的粒度判定策略实现源程序语句粒度判定并标注。3.提出了细粒度和粗粒度模型描述方法。源程序中函数映射为模型页面,语句则根据类型分别映射为不同的模型片段。针对并发、同步、交互、检测相关语句等特定语句,采用细粒度描述,将一条语句映射为一个模型片段;对其他语句采用粗粒度描述,将多条语句映射为一个模型片段,并运用复杂弧表达式实现单个模型片段与多条语句的功能等价性。4.提出了复杂弧表达式生成方法。HCPN弧表达式采用ML(Meta Language)语法规则,本文通过预定义函数模板及嵌套调用的方式,实现粗粒度模型片段中复杂弧表达式生成。特别地,源程序语句中的嵌套关系被映射为函数调用,ML语言不支持的循环被映射为函数递归调用。最后,通过实例对比分析,验证了粗粒度建模方法可有效缩减模型及其状态空间规模,且不影响模型检测结果。
其他文献
儿童的幼儿至童年时期,好的美术教育既能够开发儿童的创造力,又能将审美理念潜移默化的融入儿童的思维中,因此美术教育对于儿童的成长具有至关重要的作用。但在美术教育过程
随着信息技术的快速发展和互联网的普及,信息管理系统到现在已经发展的比较稳定了。但是随着各种系统的广泛应用,也产生了越来越多的数据。如何充分利用数据,进行数据分析和
近年来,关注生活自身的价值、“换一种活法”、过更有质量的生活已经越来越成为人们的心理诉求。对于青年群体来说,夜跑、马拉松、穷游、健身这样的活动越来越热;对于中年人
我国是海员劳务输出大国。截至2018年底,我国约有14万名海员通过海员外派机构被派往外国籍和港澳台地区籍船舶上工作。由于海员外派机构法律地位在相关法律法规中并不明确,导
随着信息产业的迅速发展,传统的调制以及复用技术已无法满足未来大容量、高速率的通信要求。为了进一步满足对信道容量和频谱利用率的要求,人们提出利用具有轨道角动量(Orbit
人工冻结法最早应用于我国煤矿立井施工中,20世纪70年代开始应用于地铁施工中,是克服复杂地质水文条件的一种重要方法。但是由于人工冻结时改变了地层原有的温度场,使土体产生冻胀对周边建(构)筑物产生一定影响,严重时易导致工程事故。因此冻结工程中如何釆取合适的冻结施工技术和冻胀控制方法,将冻胀量控制在允许范围内十分关键。本文针对上述存在的问题,以上海轨道交通18号线区间隧道穿越正在运营的轨道交通10号线
从中西方国家人们社会生存压力、社会诚信、社会安全感等方面进行了社会心态层面的论述,认为借鉴西方先进国家的发展理念,从深层次上解决人的全面发展的问题,从而真正体现中国特
乳酸类细菌(Lactic acid bacteria,LAB)是一类公认的对人体及动物无致病性和无定殖力的、在食品和医药医疗领域具有重要应用价值的食品级微生物,而革兰氏阳性菌(G+)乳酸乳球菌(Lac