基于数据库的简单非函数依赖程序不变量动态检测
南华大学
硕士学位论文
基于数据库的简单非函数依赖程序不变量动态检测
姓名:***
申请学位级别:硕士
专业:计算机应用技术
指导教师:***
20070501
摘要
迄今为止,计算机软件系统虽然仅仅只有短短的几十年历史,但是已经成为最广泛、最重要的应用系统之一。从而软件的质量成为人们目前广泛关注、高度重视的热点问题之一。基于合约的程序设计是提高软件质量的一种重要技术,已经得到了很大的发展。合约描述了程序内部的基本属性,良性运行的保证
条件以及运行后的期望结果。程序不变量一般包含类不变量、前置条件和后置条件,它是一种基本的合约。
本文研究并且建立了程序不变量动态生成系统的理论模型。在此理论模型中,针对函数依赖程序不变量和简单非函数依赖程序不变量动态生成理论、方法和技术进行了阐述;重点对简单非函数依赖程序不变量进行分析,基于数据库的理论提出了一种新的简单非函数依赖程序不变量动态检测的技术,针对各种的简单非函数依赖程序不变量类型建立了一系列检测方法。本文的不变量检测技术通过数据库中提供的SQL条件查询功能,灵活多变的检测各种常见类型的简单非函数依赖程序不变量,并且可以根据用户的实际需要随时指定新的程序不变量查询条件。
最后,本文设计实现了一个简单非函数依赖程序不变量原型系统。该系统与现有的其它程序不变量检测工具(例如Daikon)比较具有明显的特和优势:第一,基于关系数据库技术,具有良好的可扩展性;第二,使用SQL 条件查询功能实现简单非函数依赖程序不变量检测,检测方法具有很好的灵活性。
关键词:程序不变量;非函数依赖;动态检测;软件质量;条件查询
Dynamical Detecting Technique of Simple Non-functional Dependence Program Invariant Based on Database
ABSTRACT
The computer software system has been more and more popular and important today, so the quality of software has been a significant and hot issue. In order to improve software quality, DBC (Design By Contract) has been developed. Contracts describe properties, expectations and guarantees of a program. Program invariant, which includes class invariants, pre-condition and post-condition, is a common kind of contracts.
In this paper, a theory model for dynamically generating program invariant is built. Based on the model, the dynamical generating technique of program invariant, both function dependent invariant and non- function dependent invariant, is discussed. Furthermore, a new method of dynamically generating non- functional dependent program invariant is presented. The method, which comprises of series of detecting measures of specific non-functional dependent program invariants by using SQL query, takes the advantage of database. So, we can dynamically discover any kind of non-function dependent program invariants by giving the query conditions.
Finally, a prototype system for dynamically generating program invariant is implemented. Comparing with other tools, e.g. Daikon, the system has two excellent features. First, it is expansible; second, it can detect program invariants in a nimble way.
Liu shukun(Computer Application Technology)
Directed by Yang Xiaohua Key words:program invariant; non-functional dependence; dynamically detect; quality of software; condition query
原创性声明
本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南华大学或其他单位的学位或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。
作者签名:日期:年月日
关于学位论文使用授权说明
本人同意南华大学有关保留、使用学位论文的规定,即:学校有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用复印、缩印或其它手段保留学位论文;学校可根据国家或湖南省有关部门规定送交学位论文。
作者签名:导师签名:日期:年月日
麻省理工申请条件
第一章绪论
当今信息社会中,计算机软件系统迄今为止虽然仅仅只有短短的几十年历史,但是已经成为最广泛、最重要的应用系统之一。但是由于软件系统的缺陷所带来的损失有时是十分巨大的,甚至是灾难性的(例如Arine 5仅仅由于程序中隐含的一个缺陷结果导致机毁人亡)[1],从而软件的质量成为人们目前广泛关注、高度重视的热点问题之一[27]。
1.1研究背景
计算机软件系统在整个软件发展过程中已经取得了划时代的成就。但是问题也随之而来,即软件项目的规模越来越庞大,所需的开发团队需要越来越多的人参与其中。软件行业的人员高度流动性以及国内软件项目管理的混乱,造成了代码和文档的严重不一致,使得程序的可重用性,可维护性比较差,软件维护费用开销太大。因此,软件质量成为一个人们不得不关注的问题。目前针对这种状况,大量的科学研究一直在不断的进行,并且其中很多技术得到了深入的发展和成功的应用,如软件工程化开发方法[26]、程序验证[12]、测试技术等。基于合约[23]的程序设计就是其中十分重要的一种技术。
一般的讲,软件系统可以有四种合约类型[39][40]。它们分别是语法合约、数据(行为)合约、控制(行为)合约和服务质量合约[11][2]。
语法合约是基本的一级合约,包含在几乎所有的软件系统中。无论是通常的程序设计语言还是构件开发的界面定义语言(Interface Definition Language, IDL)都提供了数据类型机制,以便设计者指定程序中每个过程能够进行的操作、所需的输入输出参数及类型、运行时可能产生的意外等。语法合约是强迫性的,这种强迫性通过静态的(在编译时进行)或动态的(在运行时进行)类型检查来实现。
数据合约是二级合约,是一种用于数据流的行为约束,其目的是保证程序在顺序运行环境中的可靠性。数据合约通常由一些Boolean断言组成[3],称为程序不变量。这些断言通常位于操作的入口或出口,被称为操作的前置条件或后

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。