摘要:介绍PB0技术及其特点,这种技术支持软件重用和动态可重配置;分析其应用于航空航天器等实时装入式软件开发过程中的优势与困难。
关键词:软件重用 动态可重配置 实时装入式软件
1 PBO技术[1]
PBO(Port-Based Object)技术[1]是一种可用于软件工程的新技术,特别适合于动态可重配置实时软件(DRRTS)的开发。DRRTS可以在线配置,
无需重新编译和连接,也就可以不必关闭和重新启动系统,从而满足某些系统需要连续不停地运行和升级的要求。每一个PBO相当于一个组件,结构如图1所示。左右两边分别是变量输入和输出端口,上面是其配置常端口,下面是其与传统器与机械臂通信的源端口。每一个PBO进程都有相同的有限状态机,如图2所示。它有 4种状态(用椭圆表示):未建立、错误、OFF和ON。状态之间可以互相转化。这使得每一个PBO的代码有着相同的结构,包含着同样的方法,只是其中的方法处理过程不同。实际应用中,可以建立一个PBO库,库中的每一个PBO组件都可以作为软件重用的模块,在需要的时候可以将它们动态地配置。图3是一个 PBO相互连接组合的实例。PBO的参数用局部变量表和全局变量表两级存储,进程之间的通信通过共享全局变量存储器来实现。图4是PBO进行状态变量两级存储结构图。每当进程开始执行一个循环时,从全局变量表中读入变量,执行完毕中,再把变量写入全局变量表。
2 PBO技术的特点
对于基于实时操作系统(RTOS)上的控制系统软件,采用PBO技术,可以从系统体系结构到代码实现的各阶段加快软件开发速度。PBO技术遵循高内聚、低耦合的封装设计思想,整个系统由多个可配置组件组成。按照这种框架,可以使用当今流行的面向对象设计模式,采用消息驱动;但实时嵌入式软件是面向实时系统的,要求高速有效,消息驱动有时不能满足这个要求。PBO设计方法中,数据的传递是通过共享存储器实现的,这样设计满足了硬件的低负荷工作和数据的更新速度要求。每个组件与外界的联系由四个端口(port)组成。内部实现黑箱操作。采用两级存储保存数据,力图实现最大限度减少访问冲突,减少组件间的依赖性。PBO技术结合了端口自动代数模型和对象的软件抽象[1]。每一个PBO相当于一个控制系统,可以用传递函数来表示,由此,可以采用精确的数学方法对子进行描述和验证。每一个PBO也是一个标准化了的对象,
即所有的PBO有着同样的结构和同样的有限状态机,它和外界的接口也是标准经的。PBO的执行是互相独立的,并行的,不需要同步,使得PBO之间的依赖降低到最低的限度,可以动态地加入或退出某个PBO。PBO相当于一个即插即用的软件组件,可以通过重新配置以适合需求。所以,采用PBO技术开发的软件具有开放性,易于修改和升级。
3 PBO技术中实时软件的特点[2]
实时软件要求极端的可靠性。许多系统一经启动,要连续不断运行。采用PBO可实现动态重配置,重配置时间开销对于系统运行几乎不受影响,满足这类实时系统修改和升级的要求。采用PBO技术设计的软件,数据通过共享存储器,能够实现高速运行,提高设备采样率,也使得任何信息能够随时处理,满足实时系统及时性要求,这样也就保证系统产生的结果在时间上具有严格的正确性。基于普通模块设计的软件,采用消息传统机制,可能由于消息的阻塞而使事件处理的及时性得不到保证;而PBO技术通过共享变量表实现通信,锁定CPU时传输的变量很少,等待资源的CPU能够很快获得所需的资源,保证实时系统能够及时处理各种事情。由于许多PBO进程在多CPU上独立并行,可同时处理数据的输入或输出,也满足了实时系统同时性的要求。
4 关于软件测试的问题[2,3]
由于实时系统具有很高的可靠性要求,因此,对其的测试不仅要针对系统的功能行为,还要针对系统的时序行为,
所以嵌入式实时系统的测试是软件界公认难点。由于某些行为只在特定的系统状态下和某些特定的事件序列到达时才会发生,为了避免软件缺陷,需要精心设计测试用例并保证足够的测试覆盖率。在PBO技术中,进程的调度通过实时操作系统(RTOS)实现,使得对共享存储器访问的时序列加随机和不可预测,各种可能的情形也更多,相对测试的覆盖面随之减少。基于PBO软件技术的架构不同于其它传统实时软件技术构架,随之对测试环境的模拟也新的要求,各个PBO之间是独立开发的,对应的测试要求与之相应。这增加了对测试环境要求的难度,而且各个PBO之间输入输出数据的测试也变得更为复杂。对于在非正常环境下,测试的结果也更难预料和把握。另外,一般嵌入式软件测试时,模拟运行速度与其实际执行速度不同,仍将此方法运用于基于PBO技术的软件测试,会掩盖软件中许多错误。所以,采用PBO技术,有可能增加软件测试的难度。
5 软件重用与动态可重配置[4]
每一个PBO是一个软件重用的构件,它有着标准的接口和开放的扩展性。这种软件重用是一种二时进代码级的重用,摆脱了编程语言的限制,能够即插即用。采用一组PBO的组合,就形成了一种配置,这种配置可以实现一定的功能,满足实时系统的需要。随着时间的推移和技术的发展,需求会逐渐发生变化,因此,采用部分原PBO再加入一些新PBO,以构造一种新的配置,满足变化后的需求。通过软件重用,可以降低开发成本,缩短开发时间,不断满足实时软件变化的要求。
6 PBO技术应用开实时嵌入式软件开发
在航空航天器的软件设计中,由于其造价非常高,因此希望它能够具有更多的功能。但是这类软件必须面临存储空间受限,
运算能力有限的硬件限制。我们不可能制作一个满足各种功能的软件,因为这样的软件必然相当庞大,修改和升级都非常困难。PBO技术适合于这类软件的开发,因此它能很好地支持软件重用和动态重配置。我们可以将一些PBO进行组合,使其具有一定功能,当其完成某项任务后,就可以采用动态重配置,使其具有新的功能,完成新的任务。PBO技术基于精确的理论模型,可以在此基础上进行严格的数学分析,完成规范的程序设计,保证软件系统的可靠性。将来可以将其应用于需求分析中[5],采用形式化的方法建立规格说明,从而实现从需求分析直到代码实现的全过程形式化设计。
但是,PBO技术运用于这类软件也可能面临一些问题。PBO之间的信息交换非常有限,这对于大数据量处理必须另辟捷径。在航空航天器中,经常要处理拍摄的各种图片和大量的传感器数据,还要将它们及时发回地面控制中心,这些都必须重新考虑。许多PBO进程运行于多处理器上,它们之间协同工作要进行的网络计算也不容易。在PBO组件数目较多时,数据复制机制能否具有高可靠性和及时性也都是可能遇到的问题。