软件缺陷检测与分析方法研究

来源 :浙江大学 | 被引量 : 0次 | 上传用户:mazhiqianggege
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件缺陷普遍存在于软件系统中,影响其可靠性。自动化的软件缺陷检测方法可以帮助人们尽早发现缺陷的存在。按照实现原理的不同,目前主要的软件缺陷检测方法有基于静态分析的缺陷检测技术和基于统计学习的缺陷预测技术。前者通过对软件程序语法和语义特征的静态分析来发现其中的缺陷;后者基于机器学习的方法,利用度量元和历史缺陷数据预测存在缺陷的软件模块。另一方面,对于软件缺陷的实证研究,可以帮助人们全面理解软件缺陷的各种特性,有助于改进缺陷检测工具的设计,为软件质量控制提供参考和帮助。目前,软件缺陷检测与分析方法依然面临一些困难和挑战:1)静态缺陷检测工具受制于软件语言和平台而难以通用,由于非开源政策,iOS这样的热门平台上的检测工具却很少,相关研究也不够充分;2)现有缺陷预测方法很多,然而缺乏全面合理的性能评估体系;3)非开源软件多应用在重要领域,对其缺陷的实证研究却很少,其缺陷特性人们无从了解。  针对上述困难和挑战,本文重点研究了软件缺陷检测与分析方法,提出了一种全新的基于静态模型检验的安全缺陷检测技术,并对软件缺陷预测方法的性能评估和非开源软件缺陷的实证分析展开研究,主要工作和贡献如下:  1.针对移动软件安全缺陷,即安全漏洞的检测问题,本文结合软件逆向工程、静态分析、模型检验等技术,提出了全新的iOS安全漏洞检测方法。由于苹果公司的非开源政策,使得面向iOS这一热门移动平台的软件安全漏洞检测研究非常少。已有的工作,使用可达性分析检测iOS软件漏洞,但扩展能力较差,仅能用以检测有限种类的软件漏洞。本文采用标签迁移系统(LTS)对软件程序进行建模。与已有相关工作不同,首次提出了将系统库和GUI定义纳入软件程序建模,增加了模型的完整性,以使得模型对于软件行为的描述更为准确。同时,为解决模型检验状态空间爆炸的问题,本文采用了三种抽象技术,以减少模型的状态数量。通过对CTPL的扩展,本文提出了更适合表示软件安全属性的逻辑语言SE-CTPL,以确保检验方法的灵活性和可扩展性,从而可以对多种安全性质进行描述。基于上述方法,本文实现了一个自动化检测工具VeriForge,并对实际发布的iOS软件进行检测,找到了多个安全漏洞,从而证明了方法的有效性。  2.首次提出了使用大规模指标集,对软件缺陷预测方法的性能进行评估。目前人们在评估比较缺陷预测方法的时候,往往只是选择某些特定的评估指标,且缺乏选择依据,从而导致评估结果存在片面性。为此,本文选取包括recall、F-measure、G-mean和AUC在内的14个评估指标,对6个重要且常用的预测方法,即朴素贝叶斯、决策树、逻辑回归、K阶段近邻、随机森林和贝叶斯网络,进行性能评估。本文选取了10个软件缺陷数据集进行实验分析,这些数据集一共包含了5305个实例。对14个指标的综合分析结果显示,贝叶斯网络在绝大部分的数据集上表现出了更好的性能。其中,在9个数据集中,贝叶斯网络取得了最好的recall、FNR、G-mean1和balance等指标值;在7个数据集上,它取得了最好的F-measure和J-coefficient指标值。此外,本文还通过聚类方法,研究指标之间的相关性,得到了{AUC}、{MCC,J-coeff、{precision}、{accuracy,error rate,specificity,FPR}和{G-mean2,F-measure,recall,FNR,G-mean1,balance}5个群组,为将来工作中选取评估指标提供了依据。  3.首次实现了对于金融系统软件缺陷的半自动化的实证研究。由于非开源软件的缺陷数据获取难度大、获取成本高等原因,目前鲜有对于非开源软件缺陷的实证研究工作,这使得人们难以了解非开源软件,尤其是应用于关键领域的非开源软件系统的缺陷特征。为此,通过与某金融机构合作,本文对PMS、β-Analyzer和OrderPro三个金融软件系统的缺陷进行了实证研究,从而更好的理解了非开源的金融软件系统。由于金融软件具有较多模块,且大多依据复杂的业务逻辑而实现,因而系统十分复杂。本文作者从项目的代码库和缺陷报告库中收集数据,随机挑选了300个缺陷报告,并对其进行准确的分类,讨论并分析了缺陷密度、缺陷检测时间分布、缺陷类别分布以及缺陷类别与缺陷严重度之间的关系,深入理解了金融软件缺陷的特性。结果显示,19.00%的缺陷属于内部接口类,17.67%的缺陷属于算法/方法类,15.00%的缺陷属于逻辑类,这三个类别是本文所研究的金融系统中存在最多的三种缺陷。本文的研究结果有助于项目经理、开发工程师和质保工程师检测和管理金融软件系统中存在的缺陷。
其他文献
针对多级安全系统中主体客体安全级副氏形成层次结构的特点,提出用单向哈希函数解决系统强制访问控制的新方法.该方法的基本思想是基于访问密钥的,系统中的主体和客体都有自
随着网络技术多样性的增长以及网络应用的飞速发展,原有的网络协议不足以支持新的应用需求和网络特征,因此,必须扩展已有的协议或提出全新的协议。本文考虑把面向对象的思想运用
随着通信技术的发展和人们对通信需求的增加,网络生存性技术已成为通信网络的关键支撑技术之一。本文主要介绍了通信网络生存性的研究背景、研究现状等,重点对基于洪泛路由(flo
近年来,随着Windows操作系统的普及,各文种的Windows平台文字处理软件也纷纷出台.在蒙文信息处理方面也取得了一定成果,但是随着Internet的发展以及用户需求的增长,希望能够
随着智能CAD技术的发展及其在产品设计中日益深入的应用,产品的创新设计逐步向智能化发展。现有的产品设计系统大都采用单一的智能推理方法,或者将各种智能技术简单集成,存在实
该文对储网络的体系结构、分层存储管理以及网络数据管理协议深入分析后,详细讨论了构建一个统一的存储网络的关键技术——存储虚拟化,并完成了统一存储网中的虚拟化实现方案
随着摩尔定律一再被验证,已经进入了众核时代,不久的未来将会看到含有数以百计甚至千计的核数的芯片。一个普遍达到的共识是缓存一致性将继续在将来的大规模系统中使用并发挥重
基于规则的自动分词和取词系统是针对这一问题而提出的一个可行的解决方案.它同样以词库作为各项处理的基础,通过分词和取词两个自动过程,利用与词语自身相关的规律,在较少人
人脸检索在军事国防、民政司法、刑侦执法、游戏互动等领域有广阔应用前景,具有重大的研究意义与实用价值。机器视觉技术以快速的计算能力在大规模人脸库检索中取得巨大成功,然
作为分布式软件的开发标准和体系结构之一,CORBA技术在不断的发展和完善,因而对CORBA技术的研究也具有实际的意义和商业价值。本课题首先学习和研究了CORBA的基本理论和体系结