用于软件的自动化误差检测和验证的方法

文档序号:6358196阅读:185来源:国知局
专利名称:用于软件的自动化误差检测和验证的方法
技术领域
本发明涉及用于软件的自动化误差检测和验证的方法。
背景技术
飞行关键(flight-critical)软件是包括传感器和致动器的飞机系统的一部分, 并且将物理过程与计算相集成。此软件控制许多不同的混合关键度(mixed-criticality) 子系统并与之相交互,该子系统诸如引擎、制导和导航、燃料管理、飞行控制、通信、冲突检测和解决、气候控制以及娱乐。软件底层的算法是基于诸如代数学、分析、几何学和三角学的数学原理。计算常常涉及由于所需计算的复杂性而未被正式工具充分地支持的非线性算术。通常,使用分立软件系统来实现基于连续数学的模型。在此类模型中,用引入误差(error)的浮点表示来近似数值。浮点计算可能同样地引入误差。另外,在由于抖动、传感器精度和外部机械或功能误差而引入数值和定时误差的分布式平台上执行软件本身。这些误差可以累积,并且可以在质量方面改变系统的行为(behavior)。任何时间, 系统必须作出将两个值(在一定程度上,那些值中的一者或两者可能偏移了误差)比较的判定(例如,如果_则_否则或循环结构)。这可以促使系统执行与在精确地表示值的情况下不同的行为。执行在其周围改变的值称为“行为枢纽(Pivot)值”。取决于行为枢纽值的判定能够影响由软件控制的系统的定时行为和物理性能。然而,当前工具未将这些误差考虑在内,或者未可缩放到到足以支持工业级问题。

发明内容
提供了一种用于软件的自动化误差检测和验证的方法和系统。该方法包括提供软件的模型,其中该模型包括一个或多个模型输入和一个或多个模型输出,以及被嵌入模型中的、每个具有相关区块类型的多个区块,所述区块类型每个都具有多个相关区块级(block-level)要求。所述方法还包括通过(across)所有区块的计算语义学 (computational semantics)从模型输入向模型输出拓扑地传播(propagate) —定范围的信号值或变量值及误差界(error bound)。识别用于给定区块的每个行为枢纽值并进行检验以确定以该误差界来修改或扩展传播范围是否将或可能促使信号值落在行为枢纽值的任一侧。报告将或可能落在行为枢纽值的任一侧的信号值的所有出现(occurrence)。


参考附图通过以下说明,本发明的特征将变得对于本领域的技术人员来说显而易见。应理解的是附图仅描绘典型实施例,并且因此不应将其视为范围方面的限制,将通过使用附图以附加的特殊性和细节来描述本发明,在附图中
图1是示出根据一种方法的用于软件的自动验证的过程的一般概述的过程流程图;以

图2是示出用于软件的自动验证的过程步骤的更多细节的过程流程图。
具体实施例方式在以下详细说明中,足够详细地描述实施例以使得本领域的技术人员能够实施本发明。应理解的是在不脱离本发明的范围的情况下可以利用其它实施例。因此,不应以限制性意义理解以下详细说明本发明涉及一种用于软件误差的自动检测的方法和系统;软件误差特别是由以下的组合引起的缺陷(i)被要求的系统行为影响和变换的操作范围,(ii)行为枢纽值,以及 (iii)数值误差。本方法提供模型的符号分析,其基于对范围算术(range arithmetic)的扩展将计算、控制和实时性质组合在统一分析框架中。本方法还利用基于模型的方法进行软件设计和结果代码的验证。到本方法的输入是(i)系统行为要求的模型,(ii)模型的计算元素的行为语义学,(iii)数据类型和平台相关约束/特性,以及(iv)模型输入处的正常和最大操作信号范围。所述输出是可能由于数值误差而出现的潜在误差的报告,所述数值误差促使特定的信号值与行为枢纽值交叉 (cross).这导致行为枢纽值周围的不确定的行为。这种方法与基于模拟的验证相比提供优良的结果质量,并且与传统模型检查方法相比提供优良的可缩放性。因此,本发明在使用基于模型的方法开发的商用航空电子软件的自动可缩放验证中特别有用。特别地,本发明提供用于诸如飞行控制和引擎控制的复杂商用航空电子应用的认证的航空电子系统的自动验证。通过利用本方法,在保持对复杂现实问题的可缩放性的同时,与传统分析和测试方法相比可以实现平均的认证成本方面的显著改善。在以下说明中,将计算元素称为“区块”,其为数据流程图中的基本计算单元,并且在实施例中,可以用直接插入码和函数调用的组合来表示。在模型中例示的所有区块具有定义其输入、输出和多个功能要求的相关“区块类型”。本技术将现有范围传播和分析技术扩展至允许由于表示限制及其它误差源而引起的值的不确定性。当前技术通过行为系统规范来传播范围并分析这些范围对附带 (incident)计算的影响。例如,此类技术可以识别除法运算的分母的范围是否与零交叉, 并因此存在除以零的异常的可能性。当前技术未用误差界来扩展传播范围(propagated range)ο本方法分析相对于误差值而言在行为模型中检测的行为枢纽值,所述误差值扩展区块输入的传播范围以确定任何行为枢纽值是否可以落在误差界内。当此类情况出现时, 通常难以且可能不可能先验地预测判定的结果。此不可预知性可能导致延迟、抖动、等待时间、行为和计算误差。本方法检测此类不可预知性的可能性。在本方法中,执行前向传播以确定用于所有模型的内部和外部信号的值的可能范围。这种方法是基于模型的功能元素的计算语义学,并且从模型输入向模型输出拓扑地执行。在本方法中,将信号值的范围建模为具有附加性质的复杂区间,所述附加性质诸如为数据类型和平台相关约束和特性,包括与数据类型或平台相关联的误差。适当地执行区间运算以通过模型的计算元素的语义学来投射值范围。在计算了附带在特定区块上的所有输入范围之后,进行检查以确定每个计算元素的行为枢纽值是否在允许容差的情况下显现在输入/输出处的范围内。区块在数据流程图中可以被示为节点,并且可以具有不同的形状。每个区块具有由其区块类型定义的一定数目的输入和/输出端口。输入端口呈现被区块计算用作输入的信号值。输出端口呈现由区块计算作为结果产生的信号值。在其中区块被实现为函数调用的一个实施例中,输入端口类似于被传递至函数调用的参数,并且输出端口载送函数调用的结果(返回值)。
可以使用诸如MATLAB Simulink或其它建模程序的各种技术来创建在本方法中利用的软件模型。Simulink是用于对多域(multi-domain)动态系统进行建模、模拟和分析的商用工具,并表示能够用数据流语义学来表示的一大类模型。在另一实施例中,可以使用源代码分析程序由现有源代码自动地生成模型。如下参考附图来描述本方法的更多细节。图1描绘了根据一种方法的用于软件的自动误差检测和验证的过程的一般概述。 最初,提供指定软件的行为的模型,其具有一个或多个模型输入和一个或多个模型输出。在一个实施例中,此模型是设计模型。在另一实施例中,此模型是要求模型。在另一实施例中, 这是由源代码分析程序由源代码自动产生的模型。模型的语法包括从输入到输出被连接在一起的多个区块,在模型输入处开始并在模型输出处结束。例如,如果标记为A的区块被其输出中的一个或多个连接到标记为B的另一区块的一个或多个输入,则将区块A称为在区块B的“上游”。同样地,区块B在区块A的“下游”。图1所示的过程从模型输入开始,具有可选地指定的信号值范围,被通过由所有后续区块的语义学指定的模型拓扑地传播至模型输出(110)。在传播期间,识别每个行为枢纽值并进行检验以确定以该误差界来修改或扩展传播范围是否将或可能促使信号值落在行为枢纽值的任一侧(120)。然后报告行为枢纽值的所有此类所检测的出现(130)。图2描绘了用于软件的自动误差检测和验证的过程的更多细节。最初,在210处提供一个或多个模型输出处的可选外部约束作为可以使用区间来表达的正常和最大工作范围。可以用实现无关和实现相关的数据类型表示信息来增加(augment)该区间。如果在一个或多个模型输入处未提供约束,则在一个实施例中可以使用默认值。另一实施例可以使用由数据类型实现施加的限制。此结果数据被输入到前向信号传播模块240以进行进一步操纵。在前向信号传播模块240中,过程在120处从(可选)模型输入范围开始。对于每个模型输入而言,识别所有直接下游区块。对于每个此类区块而言,在242处基于输入值的范围来确定区块输出的可能范围。然后在244处将所确定的输出值范围作为区块输入范围传播至所有直接下游区块,并计算可能输出值的范围。此传播继续直到在246处到达模型输出。在前向信号传播过程期间,在232处识别用于给定区块的行为枢纽值。在一个实施例中,识别行为枢纽值的函数可以通过检验保护模型控制流中的判定的所有表达(诸如 If-Then语句的条件)来这样做。该函数可以检验该表达以确定其是否包括对信号变量的参考。如果是这样,则该函数可以计算条件从TRUE (真)转移至FALSE (假)的枢纽值。例如,给定表现为语句IF (χ > 2) THEN y:=5的区块,该函数可以确定信号χ具有二的枢纽值。在一个实施例中,还在232处检测单值范围。单值范围是其中最小值等于最大值的范围。对于所有单值范围而言,然后在232处确定以该误差界来修改或扩展传播范围是否将或可能促使信号值落在行为枢纽值的任一侧。然后在234处报告所有此类所检测的出现。在另一实施例中,可以通过向范围的最大值加上误差界并从范围的最小值减去误差界来执行以该误差界来修改或扩展范围。在其中已知两个不同的误差界的另一实施例中,可以通过向范围的最大值加上高端(high-end)误差界并从范围的最小值减去低端误差界来执行以该误差界来修改或扩展范围。
在一个实施例中,可以另外在232处确定以误差界修改或扩展非单值传播范围是否将或可能促使信号值落在行为枢纽值的任一侧。然后在234处报告所有此类所检测的出现。在另一实施例中,可以另外在232处确定以误差界修改包含在给定范围内的任何特定值是否将或可能促使信号值落在行为枢纽值的任一侧。然而,此分析通常是更加计算密集的,导致完成验证所需的更长运行时间。然后在234处报告所有此类所检测的出现。在另一实施例中,还可以将其中以误差界修改包含在给定范围内的任何特定值是否将或可能促使信号值落在行为枢纽值的任一侧的情况的出现报告给测试生成器,诸如自动化测试生成工具。此信息可以允许测试生成器计算大于用于自动生成的测试的误差界的安全裕度,所述自动生成的测试需要用所识别的行为枢纽点来指导特定判定的结果。可以使用软件验证工具来实现本方法,该工具诸如Honeywell Integrated Lifecycle Tools & Environment (HiLiTE)验证工具,其可以应用于诸如飞行控制、引擎控制和环境控制系统的多个飞行关键系统的验证。HiLiTE工具执行综合分析(例如,范围和类型传播、可到达性分析、模型正确性等)并在数据流程图上自动生成基于要求的测试向量。可以使用如本领域的技术人员所已知的软件、固件、硬件或其任何适当组合来实现在本系统和方法中使用的计算机或处理器。这些可以补充以专门设计的专用集成电路 (ASIC)或现场可编程门阵列(FPGA)或被结合在其中。计算机或处理器还可以包括用于执行在本方法和系统中使用的各种过程任务、计算和控制功能的软件程序、固件或其它计算机可读指令或用其来运行。可以用由至少一个处理器执行的、诸如程序模块或组件的计算机可执行指令来实现本方法。通常,程序模块包括例行程序、程序、对象、数据组件、数据结构、算法等,其执行特定任务或实现特定抽象数据类型。可以在软件、固件或其它计算机可读指令中实现用于执行在本文所述的方法的操作中所使用的各种过程任务、计算和其它数据的生成的指令。这些指令通常被存储在任何适当的计算机程序产品上,其包括被用于存储计算机可读指令或数据结构的计算机可读介质。此类计算机可读介质可以是可以被通用或专用计算机或处理器或任何可编程逻辑器件访问的任何可用介质。适当的计算机可读存储介质可以包括例如非易失性存储器件,包括诸如EPR0M、EEPROM、闪速存储器件的半导体存储器件;磁盘,诸如内部硬盘或可移动磁盘;磁光盘;CD、 DVD、蓝光盘或其它光学存储盘;非易失性ROM、RAM及其它类似介质;或可以用来 承载或存储采取计算机可执行指令或数据结构形式的期望程序代码的任何其它介质。
在不脱离本发明的本质特性的情况下,可以以其它特定型式来体现本发明。所述实施例将在所有方面仅被视为说明性而非限制性的。因此,由所附权利要求而不是前述说明来指示本发明的范围。在权利要求的等价物的意义和范围内的所有修改将被涵盖在其范围内。
权利要求
1.一种用于软件的自动误差检测和验证的方法,该方法包括提供软件的模型,该模型包括一个或多个模型输入和一个或多个模型输出,以及被嵌入模型中的、每个具有相关区块类型的多个区块,所述区块类型每个都具有多个相关区块级要求;通过所有区块的计算语义学从模型输入向模型输出拓扑地传播一定范围的信号值或变量值及误差界;识别并检验用于给定区块的每个行为枢纽值以确定以该误差界来修改或扩展传播范围是否将或可能促使信号值落在行为枢纽值的任一侧;以及报告将或可能落在行为枢纽值的任一侧的信号值的所有出现。
2.权利要求1的方法,其中,从模型输入拓扑地传播包括提供输入值的一个或多个范围和误差界。
3.权利要求2的方法,其中,使用增加了实现无关和实现相关的类型信息的区间来表达输入值的误差界和范围。
全文摘要
本发明涉及用于软件的自动化误差检测和验证的方法。一种用于软件的自动误差检测和验证的方法包括提供软件模型,该模型包括一个或多个模型输入和一个或多个模型输出,以及被嵌入模型中的、每个具有相关区块类型的多个区块,所述区块类型每个都具有多个相关区块级要求。所述方法还包括通过所有区块的计算语义学从模型输入向模型输出拓扑地传播一定范围的信号值或变量值及误差界。识别用于给定区块的每个行为枢纽值并进行检验以确定以该误差界来修改或扩展传播范围是否将或可能促使信号值落在行为枢纽值的任一侧。报告将或可能落在行为枢纽值的任一侧的信号值的所有出现。
文档编号G06F11/36GK102262586SQ20111009651
公开日2011年11月30日 申请日期2011年4月18日 优先权日2010年4月19日
发明者D.V.奥格勒斯比, D.巴特, G.马德尔, K.A.施勒格尔 申请人:霍尼韦尔国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1