请输入您要查询的百科知识:

 

词条 PolySpace
释义

软件运行时错误检测工具

PolySpace

什么是运行时错误

运行时错误(Run-time Errors)就是软件在动态运行时出现的错误,是所有的软件错误中最具风险的。在Windows操作系统上,运行时错误出现的现象如图1

图1 Windows和UNIX操作系统上发生运行时错误的现象

通过图1也可以看出,运行时错误能够导致不正确的计算、数据崩溃、不可决定的行为以及处理器宕机。

根据ANSI C的定义,C语言中的典型运行时错误主要是:

运行时错误属于潜在的威胁,广泛的存在各种软件中。根据Berkeley大学与 IBM Watson的研究报道指出所有IBM大型软件的漏洞中,30%-40%是运行时错误引起的。

普通软件测试技术的限制

传统的软件测试技术一般分成静态测试和动态测试,这两种测试方法在检测软件动态运行时错误方面有着很多的限制,如图2。

图2 普通测试技术的限制

静态测试技术可以检查软件代码的编程规范,分析程序的静态结构,对软件的质量进行度量。借助于静态测试技术,可以使软件代码更加规范,结构更加清晰,但由于静态测试技术不分析代码的动态行为,不分析各个变量之间的关系,因此普通的静态测试技术不能有效的检查出只有动态运行才会出现的错误,即运行时错误。

动态测试技术需要将被测的程序运行起来,放到实际的软硬件环境中。动态测试技术主要有以下的不足:

        不完全:测试的步骤一般是:测试计划——测试用例——测试执行——发现并提交BUG。这种方法只能发现一部分运行时错误,即测试用例所能覆盖到的错误,但是完全的测试是不可能的(软件测试的原则之一),即不可能穷尽所有的输入,所以依赖于测试用例的测试最终只能保证测试过的输入不会导致运行时错误,不能保证其他大部分的输入也能正常工作。

        效率低:动态测试技术能发现一部分运行时错误,但它发现的只是现象,类似于图1这样的现象,而不是问题的根源。测试人员提交BUG后,开发人员还需要重现BUG,然后使用传统的调试工具来定位问题所在。对于一般的错误,定位并修复一个错误大约需要10个小时,而对于偶尔死机这样的错误,则需要更多的时间去调试。

PolySpace的解决方法

PolySpace使用的是目前最新的语义分析技术,它依靠大量的数学定理提供的规则分析软件的动态行为。语义分析技术没有使用简单的穷举法,却有能力在更普通的模式下表达程序的状态,还能提供规则进行巧妙的处理。简单来说,语义分析技术可以通过静态的方法,能够发现动态的运行时错误。

在以前的软硬件环境下,这个问题会非常复杂,很难去解决。随着计算机处理能力的不断增强,在当前的硬件条件下,语义分析技术已经完全可以高效的实现。当应用运行时错误的检测时,语义分析技术会对所有危险的操作,进行一个详细的分析,在程序动态运行之前,最早在编码阶段,就能够发现其中的运行时错误。

使用了语义分析技术的PolySpace有很多优势。

        完全自动化分析,只需要源代码

——不需要测试用例,

——不需要代码插装

——不需要运行程序

因此传统的测试活动可以完全省略,如图3

图3 有了PolySpace,传统的测试活动完全可以省略

        代码写完就可以分析,无论处在任何软件开发的阶段

用PolySpace分析只需要代码,不会改变软件开发的过程。如图4

图4 PolySpace可以用在软件开发的任何阶段

        直接找到错误的根源,而不是错误的现象,排错更快

图5 PolySpace的测试结果:用不同的颜色提示不同的含义

图6 PolySpace直接找到错误的根源,不需要调试

图7 PolySpace分析结果中的多任务共享变量访问关系图

        分析所有变量组合,比普通的技术找到更多的运行时错误

图8 PolySpace能够找到更多的运行时错误

PolySpace的价值

使用PolySpace来检查运行时错误,不仅能节省大量的时间成本,还能够节省大量的开发成本。

图9 PolySpace可以节省的时间成本

在软件开发的不同阶段修复一个错误需要的成本如图10。

图10 修复一个错误的经济成本

根据马里兰州大学与南加州大学的研究报道,每千行代码中至少有一个运行时错误。以一个5万行的程序为例,50千行代码 × 1个错误/千行代码 = 50 错误。

图11 PolySpace可以节省的经济成本

标准和认证

在使用嵌入式系统的行业,其软件的运行时错误所造成的后果往往是很严重的,可以导致产品交货的延期,产品的取消,公司名誉受到伤害等等。因为语义分析是唯一有效的找出运行时错误的技术,正逐渐成为工业标准所需求的技术。

汽车工业软件可靠性协会MISRA(The Motor Industry Software Reliability Association)已经明确,用于汽车的软件必须经过运行时错误的检查。他们的结论,PolySpace可以帮助:

图12 MISRA对PolySpace的评价

使用PolySpace的组织还有:美国食品及药物管理局FDA(Food and Drug Administration)、CENELEC(the European Committee for Electrotechnical Standardization)等。

PolySpace的应用领域和客户

PolySpace主要面向高可靠性的嵌入式软件行业,特别是在航空、航天、国防、汽车以及医疗等领域得到了广泛的应用。下面是PolySpace的部分知名客户。

航空、航天和国防

汽车电子

医疗

成功案例

1 德尔福柴油机系统

突破性的方法检测软件错误

Frédéric Retailleau是DDS位于法国Blois的软件验证组的负责人。他正在寻找更好的软件分析工具,希望在帮助他提高软件可靠性的同时,还能提高开发的工作效率。听了PolySpace的介绍后,他对这个新的工具产生了兴趣。事实上,PolySpace的分析方法和传统的测试方法绝然不同。区别于传统的通过测试用例分析软件状态的方法,PolySpace根据软件的源代码,对软件进行抽象,这种突破性的方法使得程序员在写代码的同时,就能精确的而且自动的查明软件的运行时错误。

Delphi Diesel Systems Blois决定评估PolySpace来分析它们自己的应用,这些应用对于传统的测试技术是一个很大的难题。“燃油喷射控制软件的开发涉及到大量的校准标记(calibrations)”,Frédéric Retailleau说,“在典型的200 000行代码中就含有几千甚至上万个校准点。在软件发布后,校准组可能会修改这些校准常量,相当于潜在的修改了这个应用的行为。这些特点使得在执行测试时变得异常的困难”。

Delphi Diesel Systems Blois对PolySpace进行了两周的技术评估。在评估期间,PolySpace在被认为是进行了完全测试的高级应用中发现了错误。他们对评估结果非常满意,决定将PolySpace集成到他们的测试过程中。Frédéric Retailleau和PolySpace的技术顾问一起定义了PolySpace最佳的使用方式。他们得出结论,在开发过程中越早使用、在功能测试前使用PolySpace,会最大程度的提高开发的效率,以及尽早排除校准标记的问题。

“能够比传统的耗时的测试方法更快的发现错误,本身就是很大的价值。在此基础之上,代码刚刚写完,PolySpace就能更早的帮助我们抓到错误,因此成本更低。” Retailleau总结时说。

更进一步:提高质量…和效率

现在,Delphi Diesel Systems Blois正在系统的使用PolySpace。等软件模块刚完成后,他们马上就使用PolySpace分析。“我们已经用PolySpace取代了以前的健壮性测试,以前的测试结果不完全并且特别的耗费时间。” Retailleau说,“动态测试仅仅能检测错误的现象。PolySpace可以直接指出错误的根源,节省了大量的调试成本。由于分析过程完全自动化,对软件小的修改的结果的评估也更迅速。”

由于PolySpace出色的工作,Delphi Diesel Systems Blois甚至使用PolySpace作市场宣传。Retailleau解释说:“我们想让我们的客户知道,我们正在使用艺术级(state-of-the-art)的工具检测运行时错误。我们尽我们的最大努力来确保柴油机燃油喷射控制软件的高可靠。”

2 PolySpace确保更快的满足FDA的要求

FDA在它的“General Principles of Software Validation”中,要求设备提供商实现完整的缺陷预防策略,包括在每次变更后的额外测试和验证。作为领先的静态验证技术,PolySpace能够提供FDA要求的所有类型的额外分析,并且相对于传统的覆盖率测试和代码检查技术,PolySpace需要更少的时间和成本。

PolySpace和FDA要求

基于FDA General Principles of Software Validation(详细信息参考www.fda.gov)

3.1 SOFTWARE VERIFICATION

“Software testing is one of many verification activities intended to

confirm that software development output meets its input

requirements. Other verification activities include various static

and dynamic analyses, code and document inspections,

walkthroughs and other techniques.”

PolySpace能够静态分析代码的动态属性,可以实现FDA的需求

4.3. TIME AND EFFORT

“Preparation for software validation should begin early,

i.e., during design and development planning and design input.”

在软件开发过程中,只要代码完成,PolySpace就可以马上进行分析,加快测试的进度,降低调试的成本。

4.4. SOFTWARE LIFE CYCLE

“The software life cycle contains software engineering tasks and

documentation necessary to support the software validation effort.”

PolySpace能够自动生成部分文档,节省大量的时间和成本。

4.7. SOFTWARE VALIDATION AFTER A CHANGE

“Whenever software is changed, a validation analysis should be

conducted not just for validation of the individual change, but also

to determine the extent and impact of that change(…).”

在最初的分析结果中,PolySpace能够准确的标示代码在什么时候、什么地方以及怎样失效。配置完全可以重用,可以快速方便的重新运行分析。

4.9. INDEPENDENCE OF REVIEW

“ Self-validation is extremely difficult. When possible, an

independent evaluation is always better, especially for higher risk

applications.”

PolySpace不依赖于测试用例,代码插装和人工代码走查。因此,它可以产生一致的,可靠的和可重现的结果。

3 EADS-LV

测试并且修正每一处错误

为了确保发射的安全,必须要进行无数次的测试,模拟软件的实行环境。 所有这些测试都是在地面进行,因此,所有的代码都必须被非常小心的精确细察,不允许有一点误差。测试过程中的主要困难是集成第三方承包的外部软件,所有的软件必须在同一种嵌入的环境中协同工作。错误经常在各个软件接口的地方出现。这是EADS-LV的最关注的:保证软件错误决不能危害发射。传统基于测试用例的方法是不完全的。他们不能保证所有的错误都已经被发现。

《This is where PolySpace Ada Verifier's solution is unique - it detects run-time errors without execution and also has the advantage of being exhaustive》。它可以在不需要一个测试用例的前提下,检测所有的运行时错误(overflow, non-initialized variables, access conflicts, etc)。

它检测的错误分两类,确定的错误和潜在的错误。EADS-LV强调《Even the detection of potential errors is appreciated》。在软件的开发阶段修复一个错误的成本大约是1个小时,集成阶段是10个小时,而在最后的验证阶段是100个小时,一旦发布以后再修复就要超过1000个小时了。PolySpace Verifier让程序员不放过一个错误,并且,它还可以精确的定位错误,节省相当可观的时间。

PolySpace Verifier确保软件的质量和安全

EADS-LV使用PolySpace Verifier作为最终的质量控制工具(《final quality control》),所有使用ADA语言编写的软件,不论是承包商开发还是自己开发,都必须系统的使用PolySpace的工具,从装备上的应用软件到操作平台上的集成各个应用的核心软件。

EADS-LV在测试过程的开始阶段使用PolySpace Verifier,能够加快了错误检测的过程,降低了最终的成本,缩短上市的时间。

EADS-LV正在考虑另外一种使用PolySpace的方法。把PolySpace的技术等同于EADS-LV设计的软件测试用例,这样更加快了市场的反应,更加节省成本。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/16 1:18:43