软件分析技术进展

软件分析技术进展

ID:11606521

大小:268.00 KB

页数:16页

时间:2018-07-12

软件分析技术进展_第1页
软件分析技术进展_第2页
软件分析技术进展_第3页
软件分析技术进展_第4页
软件分析技术进展_第5页
资源描述:

《软件分析技术进展》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《计算机学报》2009年9期Vol.32,No.9软件分析技术进展*资助项目:国家重点基础研究发展规划973项目(No.2009CB320703);国家自然科学基金委创新研究群体研究科学基金项目(No:60821003);国家863高技术项目(No.2006AA01Z175)梅宏1王千祥1张路1王戟21.北京大学信息科学技术学院,高可信软件教育部重点实验室,北京1008712.国防科技大学计算机学院,并行与分布处理国防科技重点实验室,长沙410073摘要软件分析技术的研究已有较长历史,相关成果也在软件生命周期的不同阶段中得到了广泛应用。软件生命周期中不同活动所需要的软件分析技术既不完全相同

2、,又有许多交叠,且不同的分析技术之间互相影响。文章在讨论了软件分析的基本概念之后,主要从静态分析与动态分析两个方面介绍了一些主要的软件分析技术,以及部分相关分析工具。结合软件的质量问题,文章还探讨了一些分析技术与软件质量属性的相关性,以便于人们在分析特定的软件质量属性时,选取合适的技术与工具。最后,文章展望了软件分析技术的发展趋势。关键词软件分析,静态分析,动态分析,软件质量中图法分类号TP3011.引言软件是一种十分特殊的人工制品:它是人类“智力活动”的产物,是对客观事物的虚拟反映,是知识的固化与凝练。尽管软件迄今已有50多年的发展历史,但目前人们对于软件的许多认识还十分有限。例如:对于

3、任何一个给定的软件,我们能否完全了解它的特性?软件分析就是一个以软件特性为关注点的研究领域。“分析”,通俗来说,是以某种方式将复杂对象分解为更小的部分,以更好地理解该对象的过程。分析技术很早就被应用于数学、逻辑等方面的研究,近代以来逐步被更多的学科(例如:化学、物理等)所大量采用。软件作为一个新发展起来的学科,在研究过程中引入分析技术是十分自然的。目前软件生命周期中的许多活动(分析、设计、实现、测试、部署、维护等)都离不开分析技术。然而,软件分析的能力是有限的:对于任何一个有一定规模的软件,希望获得关于它的完备描述通常是不现实的[18]。特别是,对于自动分析而言,许多问题是不可判定的。其中

4、最典型的例子是停机不可判定问题:不存在一个这样的算法,对于任意的图灵机以及任意的输入,可以判断该图灵机是否停机[64]。但从软件分析这么多年所取得的进展可以看出,尽管软件分析的能力有限,它仍然是软件领域十分有用的技术:将程序从高级语言向机器语言的翻译过程需要分析,判断一个程序是否符合需求规约需要分析技术,想了解程序是否存在安全漏洞需要分析技术,维护过程更是需要大量的分析技术,等等。本文将软件分析定义为“对软件进行人工或者自动分析,以验证、确认、或发现软件性质(或者规约、约束)的过程或活动”。下面对上述定义中几个术语进行解释。首先是“软件”:软件最初主要是指程序,后来逐步扩大到文档等其它形态

5、软件制品。软件分析也从程序分析发展到了更大的范围,例如:对文档(含需求规约、设计文档、代码注释等)的分析、对运行程序的分析,等等。“自动”也是很重要的概念:软件分析的历史几乎与软件的历史一样长:自从有了软件就有了软件分析。最初的分析主要是人工进行的,但人工分析往往需要花费大量的时间与精力,因此,后来人们越来越多地关注自动分析。其中,编译技术的发展大大带动了软件的自动分析技术,目前的许多分析技术都可以在编译技术中找到基本雏形。所谓“验证”(Verification),是要回答“软件制品是否与软件需求规约一致”的问题,而“确认”(Validation)则要回答“软件的特性是否符合用户需求”的问

6、题。在英文中,人们经常用“Dothethingright”来解释“验证”,而用16《计算机学报》2009年9期Vol.32,No.9“Dotherightthing”来解释“确认”。“发现”(Discover)是指在没有事先设定软件某个性质的前提下,通过分析发现软件的某种性质。之所以强调“性质”,是因为分析的结果通常表示为软件是否符合或者具有某种性质(或者规约、约束),而这种性质不是软件本身自明的。在本文讨论的软件分析中,分析对象仅限于软件制品,不涉及对软件过程、软件人员与软件组织等的分析。目前与软件分析相关的综述性文献中,多数只对软件分析的一个子集进行比较深入的介绍。例如[1]集中在对源

7、代码分析的介绍,[2]主要介绍形式化的分析方法,[53]着重从语义的角度介绍程序分析,[54]集中在模型为中心的程序分析上。本文在这些工作的基础之上,尝试对软件分析涉及的主要方法进行尽可能全面的总结、分类。另外,考虑到近年来软件质量为人们所热切关注,本文在介绍分析技术之外,特别关注那些与质量相关的分析技术,并结合不同的软件质量属性,探讨不同的质量属性适合运用什么类型的分析技术。最后,文章结合软件形态、软件运行环境等几个驱

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。