程序不变性的分析与应用研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:kc1223
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序的不变性(Immumbility)是指类的实例对象的状态在其生命周期内不会发生改变。分析程序的不变性主要有两种技术:一种是采用静态分析技术分析程序的类、属性和方法等,获得不变性信息;另一种是采用动态分析技术,观察程序运行时各个对象的状态变化来判断程序的不变性信息。静态分析具有可自动化、效率高等优点,但是采取保守的分析策略,分析精度不高。动态分析可以准确地观察对象的状态变化,但是分析结果不完备,而且需要多次运行程序,开销高。现有分析不变性的技术主要集中于对程序的静态分析,动态分析方面的工作很少。本文在分析了静、动态分析技术各自的优缺点后,提出了静动态结合的混合分析技术,首先对程序进行静态分析获得初步的静态分析结果,然后对静态分析结果中不确定的部分再进行动态分析,获得最终的分析结果。静动态结合的分析技术比单纯的静态分析提高了分析精度,同时也降低了单纯用动态分析的开销,提高了效率。   本文在提出了静动态结合的不变性分析技术后,采用案例研究(Case Study)的方式讨论了几种不变性信息应用的可能场景。在类级单元测试中,有时需要测试该类的对象在各种状态下对外界的响应情况,因此需要将该类的所有成员方法进行组合生成测试用例,当该类的成员方法较多时,那么组合数将会非常大,如果分析发现某些成员方法的执行小改变对象的状态,则可以在生成测试用例时不考虑这些方法,从而减少测试用例数目。初级程序员在设计程序时,经常忽视程序当中有很多不变的成分,造成程序效率的低下,分析程序的不变性可以辅助程序员优化代码。另一方面,程序员有时没有注意到程序中很多成分是可变的,在使用这些可变成分时不加判断,使得程序中隐藏了潜在的异常,分析程序的不变性可以辅助程序员发现这些程序中的异常。   本文主要工作包括如下三个方面:   (1)完整地定义了不变性的规约,提出了静动态结合的不变性分析技术,提高了分析的精度,首次提出在静态分析过程中加入预处理技术;   (2)用案例研究的方式讨论了不变性信息应用的几个可能场景;   (3)设计了一组支撑静动态结合的分析技术和不变性应用的原型工具。  
其他文献
概念知识是根据面向对象原理定义词汇涵义。本文提出此方法,以属性名及属性值定义一个词,将某一领域内的词汇构成层次或继承关系图,并按照表的形式将此图存储于数据库中,由此
本文以提高回归测试成本效益为目标,对黑盒测试集优先化技术展开研究。成功软件在整个生命周期中会经历持续变更,造成回归测试频繁发生且开销巨大。提高回归测试成本效益一直是
随着数据库的广泛应用和发展,人们不再仅仅满足于一般的数据存储和业务处理,而对系统提出了更高的要求:提供决策支持。目前,数据库已经广泛投入到了各行各业的应用当中,作为数据库
学位
随着信息技术的发展,计算机网络已经成为人们日常学习和工作中必不可少的一部分,其安全性得到了越来越多的重视。然而由于计算机系统的复杂性以及利益的驱使,攻击始终没有间断过
Skyline计算就是从一个数据集中找到不被其他数据点支配的所有点的集合。如果一个数据a支配另一个数据b,那么a的每一维属性值都不比b对应属性值“差”,而且必须至少有一个属
在建筑结构设计领域,随着CAD技术的发展和广泛应用,设计的过程和方式发生了根本的变化。CAD技术的出现极大的提高了设计的效率,减轻了建筑结构设计师的设计负担。建筑结构设计CA
分布式仿真是一种形成可参与的综合性仿真环境的仿真技术,它采用协调一致的结构、标准、协议等手段,通过网络环境将部署于各地的仿真系统进行互联。这种技术的出现使得构建大
数据挖掘是从海量数据中获取新颖的、潜在有用知识的过程,目前已经得到了广泛的应用。数据共享给用户带来好处的同时,也带来了泄密的风险。伴随着数据共享而来的隐私保护数据挖
分布式虚拟环境的研究需要解决可扩展性问题,主动兴趣管理技术将主动路由技术和基于内容的发布-订购模式相结合,使用双向共享组播树作为兴趣管理的通讯结构,在一定程度上提高了
伴随着计算机技术的高速发展,数字图像处理成为了一门新兴学科,并且在生活中的各个领域得以广泛应用。图像边缘检测技术则是数字图像处理和计算机视觉等领域最重要的技术之一