UML行为图驱动的面向对象程序运行时验证

来源 :南京大学 | 被引量 : 0次 | 上传用户:shanon0577
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件质量作为软件工程中的一个重要课题,受到大量的关注和广泛的研究。目前保障软件质量的方法可分为测试和验证两大类。软件测试通过定义各种测试充分性,可以提高我们对被测软件质量的信心,但无法回答系统一定没有错误这样一类问题,因而无法从根本上确保系统的可靠性。而软件验证则可以从某一个角度回答系统一定没有错误这样一类问题,提高我们对系统可靠性的信心,往往被应用于一些关键领域的软件系统。运行时验证简单地说可以看作软件测试和形式化验证的结合。它是一种保证程序可靠性的轻量化方法,其基本思想是收集程序运行中的相关信息并得到与程序相关的测试或操作中的某些性质。对于一个给定的程序执行轨迹,我们可以验证该轨迹是否满足程序规约,如不满足,则报告存在的缺陷。 本文提出了一种UML行为图驱动的运行时验证技术。它首先对被测程序进行插装,记录与UML动态行为规约相关的事件;然后根据被测程序的输入域模型,随机生成测试用例集合,并以此驱动插装后的待测程序运行,在运行过程中记录程序的运行轨迹。最后对运行轨迹和满足UML行为规约的事件序列进行自动比较,检查被测程序行为与给定的行为规约之间的一致性。该技术可以接受UML状态机图、顺序图、交互概观图描述的行为规约,对Java程序进行验证。 UML是一种标准的可视化建模工具,被广泛运用于软件系统的描述、可视化、构建和建立文档。统一建模语言UML的提出是为了消除各种面向对象建模方法之间的差异性,提供一个统一的标准。它的主要特点是与程序设计语言无关。UML状态机图用于对有限状态系统中的离散行为建模。UML顺序图是最常用的一种UML交互图,它通过描述消息交换的顺序以及相应的事件描述来描述一个交互场景。交互概观图是UML2.0中一种新的交互图,主要描述以各种交互场景作为节点的控制流。本文用UML交互概观图描述了五种动态行为规约:对象行为一致性规约、安全一致性规约、向前强制一致性规约、向后强制一致性规约和双向强制一致性规约。 本文提出的自动化验证技术包括三个主要的步骤:随机测试用例生成、程序插装和一致性检查。用一种通用的技术或工具来为程序自动化地牛成随机输入是相当困难的,因此该技术中的随机测试用例生成部分没有完全自动化,需 要在用户的交互下为简单的程序生成随机测试用例。待验证的程序经过插装,在运行时可以将动态的事件序列记录下来。记录的信息包括事件的类型、调用方法名、发送(接收)对象等。一致性检查是该技术中的核心步骤,它通过对程序运行轨迹和基于UML行为图的动态行为规约的比较,完成运行时验证。本文分别给出了检查对象行为一致性、安全一致性、向前/向后强制一致性和双向强制一致性的算法。 本文根据这种运行时验证技术,我们实现了一个面向Java程序的运行时验证原型工具,并针对一些开源程序实例进行了研究。根据这些实例研究,对该技术的可用性和有效性进行了讨论。实验表明,本文提出的UML行为图驱动的运行时验证技术不仅可以发现程序中对象交互中发生的错误,还可以对这类错误定位,为程序排错提供指导。
其他文献
作为主流的分布式软件系统运行支撑平台,J2EE中间件封装了一组公共服务以提高分布应用的开发、部署、维护和演化的效率与质量。Internet的普及、中间件标准化的完善以及开源
随着嵌入式系统越来越广泛的使用,嵌入式系统中的数据存储和管理成为一个新的研究热点。Flash存储器拥有速度快,功耗低和价格便宜等众多优点,在嵌入式系统中被广泛用作数据存储
指代大量地出现在自然语言文本中,它对于简化表达、衔接上下文起着重要的作用,文本的概念关联性在很大程度上就是通过指代关系来刻画的。指代消解已成为许多自然语言处理应用中
随着信息技术的不断发展,软件产品被应用到社会的每个角落。在软件开发过程中,保证软件的质量和保持软件的高效对于软件开发人员是一个巨大的挑战。软件质量是通过软件测试和
近年来,在不断涌现的数字视频应用需求的推动下,数字视频编解码技术获得了突飞猛进的发展。为了使不同厂家生产的多媒体产品交换或接受来自公共信源的信息,国际上相关的研究组织
WebLab是北京大学生物信息中心开发的一个生物信息网上实验室,它集成了包括Blast等共计194个程序及所需的数据库。用户无需安装任何软件,即可通过浏览器使用这个基因计算平台,选
多Agent自动协商技术已经在分布式计算,电子商务等领域中得到了广泛的使用,研究者提出了各种协商方法,这些方法主要分为三个类别:基于对策论的协商方法,启发式的协商方法和基于辩
随着互联网的高速发展和搜索引擎的出现,人们从互联网上获取信息比以往任何时候都变得快捷和高效。随着各种应用的丰富,越来越多的数据存在于后台数据库中,由服务器端程序自动生
本文对Linux内核动态侧面支持框架的设计与实现进行了探讨。本研究在总结已有研究成果的基础上,提出的一种新的动态侧面编排技术。新的编排技术将动态编排过程分为两个阶段:第
热部署是现今主流应用服务器的典型特性之一。然而,这些主流应用服务器在部署过程中将每个模块看作一个独立的应用。因此,当模块化应用仅仅对被依赖模块进行热部署更新时,原