嵌入式软件可靠性设计研究

时间:2022-05-23 03:08:02

嵌入式软件可靠性设计研究

【摘要】本文总结了影响嵌入式软件可靠性的因素;分析了提高嵌入式软件可靠性的设计方法;探究了测试嵌入式软件的核心技术及系统。旨在提高嵌入式软件的可靠性。

【关键词】嵌入式软件;可靠性;设计研究

嵌入式系统是监视、控制或者辅助设备、及其、装备正常运行的一种装置,是硬件与软件的综合体。嵌入式软件是电子系统的主要组成部分,也是电子设备硬件系统的有益补充,其应具备容错、纠错、判错、防错等功能。如果嵌入式软件的安全性失去作用的话,会造成严重后果。这就需要对软入刑软件形象规范的验证、确认及测试,以确保嵌入性系统及软件的可靠性。

一、影响嵌入式软件可靠性的因素

嵌入式软件的可靠性受多种因素的影响,主要包括以下几个因素:

第一,实时性。实时软件的时间特性、行为、功能等因素共同决定了其正确性。怎样合理验证嵌入式软件的时间特性,成为决定嵌入式软件可靠性的主要问题之一。测试嵌入式软件的时间,有两种方法:动态实时检测及静态时间分析。对静态时间的分析指的是,不直接执行需要检测的程序,而是借助对程序结构的合理分析来推测其子程序及程序执行时间的具体方法,其未明确知道子程序具体运行过程中的循环次数及分支走向等不稳定因素,所以不能准确得出程序的真实执行时间。而静态分析则可以准确获得该程序在不利情况中的实际执行时间,也就是说可明确知道程序的最大执行时间能不能满足时间约束。因为实时系统要求程序不管在什么情况下均可在具体的时间期限之前圆满完成任务,准确计算具体程序的最大执行时间对提高嵌入式软件的可靠性有重大积极意义。

动态实时监测是借助执行程序以准确测试相关程序的真实事件特性,在具体检测中常用的方法有插桩工具、指令仿真器、在线仿真器等。

第二,嵌入性。如果嵌入式软件的运行环境与开发环境不相符的话,也会给测试该软件可靠性的工作带来很多麻烦。首先,测试工具史载宿主机上运行的,而测试过程需要用到的信息产生在目标机上,并借助具体的逻辑/物理连接传输给宿主机,并最终让测试工具全部接受。所以,测试嵌入式软件过程中,会遇到一个关键问题,就是构建目标机与宿主机之间的逻辑/物理连接,有效解决传输数据信息的问题。其次,即便在宿主机所在的环境中进行了充分测试,也不能保证该嵌入式软件在目标机中运行时不会出现问题。所以,测试嵌入式软件的过程中还需要考虑目标环境问题。这就会大幅增加测试成本,并且还面临着选择测试嵌入式软件策略的问题,也就是说将哪部分测试安排到宿主环境中开展,哪些部分安排到目标环境中进行。

第三,反应性。不断反应性系统在什么时间运行,都会对所处的时间有一定反应,这是因为“激励--响应”在该系统中居于主导地位,所以该系统涵盖了复杂的管理行为。在反应性系统中,并发性是其主要特征,所有的反应式程序都涵盖了数个并发进程。因此,不可简单地把反应式系统定义成输出与输入数据的函数,而应该将其表示成一个输出与输入序列的二元组。

二、提高嵌入式软件系统可靠性的设计方法

为切实提高嵌入式软件的可靠性,在软件设计过程中应做好以下几点:

①提高设计方案。嵌入式系统的特点是控制效果较好,但是由于该系统操作功能校对、软硬件间结合情况较为复杂,模块间较差调用状况频繁,并且外部操作环境也十分复杂,所以在运行中很容易干扰其他设备或者被其他设备干扰。一旦发生执行性错误的话,不仅会导致数据出错,还可能造成系统崩溃,这种状况下所带来的后果是难以估量的。因此,在嵌入式系统软件设计过程中,应充分重视软硬件接口位置的预防性及冗余设计,可优先考虑状态保存、看门狗电路等恢复技术的使用;可借助程序陷阱及软件锁等备份技术及抗干扰技术进行有效的系统容错功能设计。

②规范测试软件。测试嵌入性软件的可靠性,是在软件正常运行周期的系统测试时期内有效提高嵌入性软件可靠性等级的最佳手段。很多测试技术、测试方法均可及时发现造成嵌入性软件可靠性实效的原因,在接触这些缺陷因素之后,通常来说一定能提高该软件的可靠性等级,但是不同的检测技术和方法在排除影响嵌入式软件可靠性影响因素中,所发挥的提高软件可靠性的能力却不尽相同。而检测软件可靠性的测试可高效发现影响其可靠性的最大影响因素,所以其能大幅提高嵌入性软件的可靠性。

三、测试嵌入式软件的核心技术

测试嵌入式软件的核心技术主要包括对程序源代码的预处理、语法词法分析、插桩技术三个方面,笔者将对其做详细分析。

①预处理。在编译程序源代码之前,可借助预处理器将有关程序源代码做初步处理,这一环节并不需要将程序元完全解析,但是需要将源代码处理或者分割成具体的符号以被宏调用。假如所测试的程序源代码属于汇编类型,那么就需要将其短转跳及时转变成长转跳。

②语法词法分析。词法分析主要是把程序源代码中的部分字符标记上记号,而语法分析主要是将借助源程序记号对程序结构进行详细分析,识别出相应的程序分支、关键字、表达式、语句、函数体等。

③插桩技术。在对程序实施动态测试过程中,通常需要借助程序插桩来完成覆盖测试,让被测试程序确保完成的逻辑性前提下在相关程序中插入部分插桩语句。其是一个调用子过程的环节,在子过程调用中可记录下运行中经过的插桩点的详细情况。通过对这些插桩点运行情况的合理分析,可以得知程序在执行命令中各个变量值变化的特点,还可用来精确检测程序的语言覆盖及分支覆盖等详细的覆盖信息。

四、测试嵌入式软件的系统

被测试的嵌入式软件程序应该经过相关预处理,预处理的内容应包含把短跳转变成远跳转以及宏替换,然后对其进行词法与语法的分析,接着扫描完整个程序之后,可生成与之相关系的链表,以准确去顶插桩函数的具置,在一些重点函数及字段中插入桩,最后编译成涵盖插桩函数的文件。在动态测试环境中,用户在确定测试类型的时候一般需要选择语句覆盖还是分支覆盖,选择类型之后会程程一个相应记录,该记录中记录有测试类型所涵盖的ID号插桩文件或者所有函数的详细位置,并自能生成与所选类型一直的测试用例。依照插桩类型选择与之相对应的记录文件,并激活与之对应的插桩函数。电子系统正常运行之后,可把收到的数据返传给测试机,并把测试结果详细记录到预定好的文件或者缓冲区中。在这种情况下,测试者就可依照期望值和测试结果的对比情况来评判当前所出现的覆盖情况能否满足要求。如果不满足具体要求的话,就可借助一定的分析工具对当前的覆盖情况进行详细分析,找出没有被覆盖的目标,并依照控制流程,准确找出可实现此覆盖目标的详细路径。根据这一路径上的各分支点需要抵达目的地需要满足怎样的条件,并有针对性地设计全新的测试用例,有效提高覆盖率,最终把测试结果用GUI形式详细显示出来。

总之,要想有效提高嵌入式全歼的可靠性、安全性及质量,就应该全面提高开发人员的综合素质,并规范代码审核、安全分析、测试方法、程序设计、开发策略等,预防开发活动过于盲目与随意。只有这样,才能真正提高嵌入式软件设计的可靠性,才能提高嵌入式软件的安全性。

参考文献

[1]常柏林.提高军用嵌入式软件可靠性方法研究[J].软件导刊,2010(11).

[2]李金麒.嵌入式系统软件可靠性设计与测试方法[J].计算机系统应用,2013(01).

[3]乔冰.浅析嵌入式软件可靠性设计[J].电子世界,2013(5).

上一篇:BPM软件建模能力的评估 下一篇:会议室扩声啸叫原因分析及解决措施探讨