地磅嵌入式软件可信性的设计和验证方法
地磅嵌入式软件可信性的设计和验证方法
目前,嵌入式系统已广泛地应用于控制系统部件和智能仪表中,在控制系统部件对嵌入式系统依赖性增强的同时,对嵌入式软件质量的要求也越来越高,尤其是可靠性的要求。为此,IEC61508 等功能安全标准通过严格规定软件安全生命周期中各阶段应采用的技术和措施,以期提高软件的可靠性,保证软件质量。本文给出一般性的地磅嵌入式软件可信性的设计和验证方法。
1.引言
微机和通信技术的发展使得越来越多制造业、流程工业过程采用 DCS、FCS 等数字化控制系统,传统的模拟仪表也逐步为智能化的仪器仪表和执行机构所替代,从而极大地提高了工业过程的自动化水平。考虑到现今的数字化控制系统部件和智能仪表均采用嵌入式系统作为控制核心,其控制功能的可靠安全实现极大地依赖于嵌入式软件的正确执行,而其中的嵌入式软件部分的可靠性一般都是被忽略的。而国外仪表能达到较高的可靠性水平,一方面也是因为其考虑了软件系统的可靠性,如 Rosemount 公司的 305IC 差压变送器的硬件 SIL 等级达到 SIL3 级,软件为 SILZ 级。因此,要想实现国内智能仪表的高可靠性,研究嵌入式软件高可靠性的分析、设计和验证方法和技术就显得尤为重要。
2.嵌入式软件可靠性特点
2. 1 实时性对嵌入式软件可靠性的影响
实时软件与其他软件不同,它的正确性不仅由功能和行为决定,还依赖于其时间特性。如何对软件的时间特性进行验证成为嵌入式软件可靠性的核心问题之一。对软件的时间测试可分为两种方法: 即静态时间分析和动态实时检测。
动态实时检测就是通过执行程序来测试程序的时间特性。在线仿真器 ICE、指令仿真器和插桩工具是三种最常用的方法。
实时性使得嵌入式软件的测试用例编写更为困难测试用例不仅要测试软件的功能和行为特性,还要测试其时间特性,因为同样的输入在不同时可能有不同的输出,这给传统的测试用例生成方法带来了新问题。
2. 2 嵌入性对嵌入式软件可靠性的影响
嵌入式软件的开发环境和运行环境的不一致性同样给嵌入式软件可靠性的测试带来了不少麻烦。
( 1) 测试工具运行在宿主机上,测试所需要的信息在目标机上产生,并通过一定的物理 / 逻辑连接传输到宿主机上,由测试工具接受。因此,嵌入式软件测试的一个重要问题是建立宿主机与目标机之间的物理 / 逻辑连接,解决数据信息的传输问题。
( 2) 即使在宿主机环境下测试再充分,也不能说明在目标机环境下该软件运行不出问题。因而,嵌入式软件还面临着目标环境的测试。这不仅增加了测试的代价,而且还带来了嵌入式软件测试策略问题,即哪些测试分配在宿主环境进行,哪些测试分配到目标环境下运行。
2. 3 反应性对嵌入式软件可靠性的影响
反应性系统 ( Reactive System) 在任何时刻都要对可能出现的时间作出适当反应。由于 “激励 - 响应”在反应式系统中占主要地位,因此这类系统常常包含大量复杂的控制行为。
3.地磅嵌入式软件可信性的验证方法
3. 1 优化系统设计方案
嵌入式系统最大的特点是以控制为主,软硬件结合较多,功能性操作较多,模块互相调用较多,外部工作环境复杂容易受到干扰或干扰别的设备,且执行错误的后果不仅仅是数据错误而且有可能导致系统崩溃等不可估量的灾难。所以在嵌入式软件设计过程中需注意软硬件接口之间的冗余和预防性设计。另外,在设计过程中,可采用看门狗电路、状态保存等恢复技术; 软件锁设计、程序陷阱设计等抗干扰技术以及备份技术有效的进行系统容错设计。
3. 2 严格的软件测试
( 1) 黑盒测试方法
黑盒测试 ( Black 一 boxTesting) 是一种从软件需求出发,根据软件需求说明设计测试用例,并按照测试用例的各项要求运行被测程序的测试方法。它不考虑程序内部的实现过程,仅侧重于程序的执行结果。它将被测程序看成是不可见的黑箱,因此,被称为黑盒测试。
黑盒测试,也称功能测试,其方法主要有输入等价类划分。边界值分析、因果图法、正交试验方法和判定表驱动法等。
( 2) 白盒测试方法
白盒测试又称为结构测试或基于程序的测试。这种测试方法是把测试对象看作打开的盒子,它允许测试人员根据程序内部的逻辑结构及相关信息,设计测试用例,对程序的逻辑路径进行测试。它对软件的结构性细节做出细致的检查。根据测试的精确程度,即测试充分性,可将白盒测试分为入口覆盖、语句覆盖、判定覆盖和修正条件 / 判定覆盖等。
4.结束语
随着嵌入式系统技术的不断进步,在嵌入式系统中占重要地位的嵌入式软件的质量保证问题也越来越引起人们的关注。软件测试是软件可靠性的保证,它在整个软件开发过程中占据了将近一半的时间和资源。通过在测试过程中合理地引入软件测试工具、选择适当的测试用例,能够缩短软件开发的时间,提高测试质量,从而更快、更好地为用户提供他们需要的软件产品。