- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试学术交流论文集
面向软件缺陷检测的静态分析技术
马培军,王甜甜,苏小红,王宇颖
(哈尔滨工业大学。计算机科学与技术学院)
摘要软件开发过程中的一个重要原则就是缺陷发现的时间越早越好,如果能控
制软件缺陷,就可以得到高质量的软件.静态分析工具根据软件的结构,内容或文
档来评价软件系统,而不需要执行程序.因此,可以较早地发现程序代码中的缺陷,
使得后面的软件开发阶段可以着重分析复杂功能以及算法上的错误.本文主要对使
用静态分析技术检测软件缺陷的方法进行研究,讨论静态分析技术的现状和进展情
况以及静态分析的特点.
关键词软件质量保障,缺陷检测,静态分析
1.引言
随着软件应用规模的日益扩大和软件应用环境的日益复杂,因为软件质量导致的事故
给人们造成的损失越来越多,后果也越来越严重,比如IBM360操作系统的失败,阿丽亚
娜号航天火箭的爆炸等。因此软件质量成为人们关注的焦点。
软件质量保障是个系统的活动,贯穿整个软件开发过程,它的一个重要原则就是缺陷
发现的时间越早越好,缺陷被遗漏到下一阶段将使得修复缺陷的成本扩大到原来的5一lO倍,
甚至造成无法修复的局面。如果能控制软件缺陷,就可以得到高质量的软件。
静态分析工具根据软件的结构、内容或文档来评价软件系统,而不需要执行程序。因
此,可以较早地发现程序代码中的缺陷,这使得后面的软件开发阶段可以着重分析复杂功
能上以及算法上的错误。静态分析工具可以在软件工程人员审查、测试之前查找软件中的
缺陷,也可结合到整个软件开发过程中。
本文主要研究用于检测软件缺陷的静态分析技术。第2节比较静态分析和人工审查以
及动态测试技术。第3节讨论静态分析技术的现状和进展情况。第4节讨论静态分析的局
限性。第5节讨论静态分析的研究热点。最后,第6节给出结论。
2.静态分析和人工审查、动态测试的比较
检测代码缺陷有多种方法,人工审查是其中的一种有效的方法。但是人工审查很耗时,
而且审查人员必须首先了解软件缺陷是什么样然后才能很好地检查软件代码。相比之下,
静态分析工具就更受欢迎了,因为它们的执行速度要快得多。而且静态检查工具可以自动
检查软件缺陷,因此可以大大节省人工劳动,并且工具使用者不需要像审查人员那样具有
很多专业知识。一个好的静态检查工具还可以帮助使用者了解软件缺陷。
检查软件缺陷的另一种方法是在程序的执行过程中动态检测缺陷。这样的工具有
软件测试学术交流论文集
起执行期间过度的开销,并且它们只能发现执行路径上的bug,大多数动态工具不能检测
操作系统中的缺陷。相比之下,静态工具不会增加程序执行过程的开销。并且可以发现不
在常规执行路径上的缺陷,尤其是对检测存在于很难到达的状态下的与安全相关的缺陷很
有效。动态测试必须在程序完成后进行,而静态分析不必执行程序,因此可以较早地发现
软件缺陷。
静态分析技术与工具
静态分析工具可以自动识别特定类型的异常。通常采用的方法是扫描并分析程序的源
代码来查找代码中特定模式集合。静态分析工具的一个最大优点在于,它们不必执行目标
程序,就可以推论出可应用于所有可能执行路径上的结果。有很多应用于软件缺陷检测的
静态分析工具,它们在检测或消除缺陷的能力上都有差别。按照采用的分析技术可以分为
四类。
第一类静态分析工具基于字符串匹配技术。如,Unix
utilitygrep。grep有一个搜索字符
串列表,可以检测库函数调用的缺陷。它把注释、字符、声明以及函数调用都当作字符流
进行匹配,不能理解所扫描的文件,因此准确率很低。
有了很大的进步,但它们仍然没有考虑源代码的语义,不能理解程序的执行行为,因此误
检率仍然很高。
第三类静态分析工具采用了程序语义分析方法。这些工具通过分析程序的控制流和数
据流,以及函数调用关系等考虑程序的基本语义。这些工具有的专用于检查某种缺陷。有
的比较灵活,可以通过读取预先定义好的所支持的缺陷检测模式进行检测。基于语义的静
态分析工具主要有以下几个:
(1)BOONtq应用整数范围分析,确定C程序中是否有数组越界。尽管它能检测到很
多词法工具检测不到的缺陷,但没有考虑语句顺序和指针别名,也
文档评论(0)