1.1.5 与使用软件的控制器中避免错误相关的定义
【内容】
动态分析 dynamic analysis
动态分析是把输入到控制器的信号模拟化,并检查电路节点处的逻辑信号是否具有正确的值和定时的一种分析方法。
故障率统计 failure rate calculation
对于某一给定类型的故障,单位时间内的理论统计值为故障率统计。
硬件分析 hardware analysis
硬件分析是在规定的偏差和额定值范围内考核控制器的布线与元件是否具有正确功能的一个评价过程。
硬件模拟 hardware simulation
硬件模拟是通过利用计算机模型考核线路功能和元件偏差的一种分析方法。
检查 inspection
检查是为了鉴别可能出现的错误,是由除设计者或编程者以外的个人或小组详细地考核硬件或软件的规范、设计或代码的一个评价过程。
操作试验 operational test
操作试验是控制器在预期操作条件(如循环速率、温度、电压)的极端情况下操作,以发现在设计或结构上的错误的一个评价过程。
静态分析-硬件 static analysis-hardware
静态分析-硬件是系统地评估硬件模型的一个评价过程。
静态分析-软件 static analysis-software
静态分析-软件是无须执行程序而系统地评估软件程序的评价过程。
系统测试 systematic test
系统测试是通过引入所选择的测试数据来评估一个系统或软件程序是否能正确执行的一种分析方法。
黑盒测试 black box test
黑盒测试是将功能规范上的测试数据引入功能单元,以评价其是否正确操作的一个系统测试。
白盒测试 white box test
白盒测试是把以软件规范为基础的测试数据引入程序,以评价程序的子部分是否正确的一个系统测试。
预审 walk-through
预审是为了鉴别可能出现的错误,是由设计者或编程者引导项目评价组成员全面评价由该设计者或编程者开发的硬件设计、软件设计和/或软件代码的一个评价过程。
软件故障/错误发现时间 software fault/error detection time
从故障/错误发生到软件引起的规定的控制器响应启动的时间称为软件故障/错误发现时间。
【注释】
本节给出了使用软件的控制器避免错误的各种方法。这些方法主要是使用软件的控制器在研发过程中避免控制器硬件/软件设计或实现错误而采取的各种测试和验证。这些测试和验证是检测使用软件的控制器中缺陷的有效的和必不可少的手段与措施,也是使用软件的控制器研发周期中不可或缺的一部分。
1.动态分析与静态分析
动态分析与静态分析是检测和识别使用软件的控制器中的软件或硬件错误的有效方法。静态分析又分为使用软件的控制器的软件静态分析(静态分析-软件)和硬件静态分析(静态分析-硬件)。
从分析的对象来说,软件静态分析的对象是软件编码结束后、软/硬件集成之前的软件代码,硬件静态分析的对象是硬件设计结束后形成的电子部件及电路布局布线硬件模型;而动态分析的对象大多是软件和硬件集成的控制器。
动态分析和静态分析的主要区别就是动与静的区别,即是否需要把被分析的对象运行起来,若需要把被分析的对象运行起来,就是动态分析;若不需要把被分析的对象运行起来,就是静态分析。
硬件静态分析主要是使用计算机辅助工具对硬件的布局布线、时序和接口等的分析与功能的检查。
软件静态分析主要使用计算机工具软件对被测软件源代码进行控制流分析、数据流分析、接口分析、表达式分析和局部数据结构分析等。例如,常使用软件静态分析工具LDRA Testbed对软件源代码进行静态分析等。
动态分析主要是对软件和硬件集成后的控制器的分析与测试,主要包括功能测试、接口测试、容错性测试和性能测试等。动态测试主要是把被测控制器运行起来,通过人员操作或信号模拟的手段向被测控制器输入信号,检测控制器的输出信号或响应是否满足设计要求。
2.故障率统计
设备故障一般是指设备失去或降低其规定功能的事件或现象,表现为设备的某些零件失去原有的精度或性能,使设备不能正常运行、技术性能降低,致使设备中断生产或效率降低而影响生产。简单地说,就是一台装置(或其零部件)丧失了它应达到的功能。
前面提到,故障率统计是指某一给定类型的故障在单位时间内的统计值,如每小时故障数或每一操作周期的故障数。
设备故障率也可通过计算事故(故障)停机时间与设备应开动时间的百分比得到,是考核设备技术状态、故障强度、维修质量和效率的一个指标。
3.硬件分析与硬件模拟
前面提到,硬件分析是在规定的偏差和额定值范围内考核控制器的布线与元件是否具有正确功能的一个评价过程。硬件分析主要适用于静态分析方法,也可借助计算机软件辅助完成。
前面提到,硬件模拟是利用计算机模型考核线路功能和元件偏差的一种分析方法,可用计算机建模的方法将硬件运行起来,分析可能存在的错误或偏差。例如,MATLAB Simulink就是一种常用的和有效的模型分析仿真工具。
4.检查和预审
检查和预审都是为了排查或鉴别软件控制器中可能存在的错误而详细地审查与评价控制器硬件或软件规格说明、硬件设计、软件设计或软件代码的过程。
不同的是,检查和预审的实施主体不同,在预审中,控制器的设计者或编码者处于主动位置,由他们引导项目评价组成员实施评价和审核,是实施主体;在检查中,活动实施的主体是项目评价组成员,由项目评价组成员主导评价和审核过程,设计者或编程者在评价期间处于被动位置。
5.操作试验与系统测试
操作试验是使控制器运行在可预期的极端操作条件(如循环速率、温度、电压)下,用来发现控制器在设计或结构上错误的评价过程。在此意义上,操作试验主要是指控制器的运行极限测试或强度测试。如果要求某一款控制器可在一定的电压值或电流值区间正常工作,那么操作试验就需要测试该控制器在电压值(或电流值)区间的最大值和最小值处能否正常工作。
系统测试的对象是软件控制器系统或系统软件,测试的目的是验证系统或软件是否满足系统需求或软件需求中描述的系统功能、性能等指标,同时查找系统或软件中存在的错误和缺陷,以便修复这些缺陷,从而提高系统或软件的质量。系统测试需要设计一些测试用例(测试数据)。测试用例主要说明系统在某种工作状态下,在某些输入或激励下应该(预期)有某些输出或响应。测试人员执行这些测试用例,会得到系统的实际输出和响应,若系统的实际输出和响应与预期一致,则该项测试是通过的;若不一致,则可能是系统中存在某些问题,需要具体分析和排查。
6.黑盒测试与白盒测试
黑盒测试和白盒测试都属于软件的动态测试,就是把软件运行起来,检查软件在某些输入激励下的输出是否正确。黑盒测试又称黑箱测试,即把被测软件看作一个黑盒子,主要关注软件在输入激励下的输出与预期输出是否一致,不关心软件的内部运行逻辑和结构;而白盒测试则不同,它不仅关注软件的实际输出与预期输出是否一致,还关注软件的内部运行与软件设计是否一致,以及软件的内部运行逻辑和结构。黑盒测试与白盒测试如图1.1所示。
图1.1 黑盒测试与白盒测试
黑盒测试方法一般包括功能分解、边界值分析、判定表、因果图、随机测试、猜错法和正交试验法等。白盒测试方法一般包括控制流测试(语句覆盖测试、分支覆盖测试、条件覆盖测试、条件组合覆盖测试、路径覆盖测试)、数据流测试、程序变异、程序插桩、域测试和符号求值等。
在软件动态测试过程中,应采用适当的测试方法实现测试要求。配置项测试和系统测试一般采用黑盒测试方法;部件测试一般主要采用黑盒测试方法,辅助以白盒测试方法;单元测试一般采用白盒测试方法,辅助以黑盒测试方法。
7.软件故障/错误发现时间
对于使用软件的控制器,故障/错误发现时间是一个与安全相关的重要指标,直接关系控制器安全相关功能能否实现。例如,在家用电热泵超温超压控制中,要求当超温或超压情况出现时,控制器应在规定的时间(如5s)内停止加热,防止因温度或压力过高而出现管道爆裂,导致危险。