施斌,薛倡新,王华,鲍俊雷,段慧芬
(中国卫星海上测控部,江苏江阴214431)
字节流对象模型的设计和应用
施斌,薛倡新,王华,鲍俊雷,段慧芬
(中国卫星海上测控部,江苏江阴214431)
航天技术的快速发展对任务数据处理提出了更高的要求。针对任务数据格式具有层次嵌套、变化频繁的特点,结合Composite模式设计了字节流对象模型(BOM)。BOM模型具有表述能力强、可灵活扩展的优点。该模型在航天任务数据处理软件中得到了应用,使得软件具备较好的可扩展能力。
字节流对象模型(BOM),设计模式,递归,扩展标记语言
近年来,航天技术发展迅速,任务型号多、技术难度高、信息量大及数据格式结构复杂成为趋势,现有任务软件的数据模型是基于“帧-字段”组织的,帧格式按照各字段顺序排列的形式进行描述,每个字段均对应描述基本字段参数格式。这种结构,存在以下问题:
(1)帧格式中各字段之间的关系是顺序固定的,对于分支选择等类型的复杂层次嵌套数据格式无法描述;
(2)链式数据模型的灵活性不好,模块化程度不高,与程序框架的耦合性高,格式变化影响域大,降低了软件的可靠性;
(3)数据模型的通用性、扩展性不好,数据格式变化导致频繁的软件代码更动。
因此,现阶段基于顺序、链式的模型结构[1-2]不再适应现阶段高密度、高难度及数据格式变化大的任务需求,急需设计一种表述能力更强、通用性好及具有复杂层次嵌套特点的数据模型,而任务数据格式的描述问题是任务数据处理中必须解决的关键问题。
分析任务数据格式有以下特点:在一个数据格式中,包含若干个字段;每一个字段的格式可能是基本单元,也可能是由若干个更小的片段组成,这样的划分可以不断地递归嵌套下去,从而形成非常复杂的数据格式。这种特点符合树形结构的特征,而Composite模式[3-4]非常适用于描述树形层次结构。因此,结合Composite模式设计了一种字节流对象模型(Bytes Object Model,简称BOM),具有表述能力强、通用性好、可灵活扩展的优点,解决了复杂数据格式的描述问题,并在航天任务数据处理软件中得到了应用。
1.1 BOM模型的定义
BOM模型描述由若干字节组成的字节序列,一个BOM对象描述了一个字节序列数据对应的格式定义,包括字节长度、数据类型、处理方法等信息。
1.2 BOM的静态结构
BOM模型的静态类型结构是树形结构,符合层次定义、逐层派生的特点。最顶层的是BOM抽象类,作为全体BOM类的基类,其他BOM类均直接或间接从BOM基类派生。BOM类分为两大类:SectionBOM和CompositeBOM。BOM模型类层次结构如图1所示。
图1 BOM模型类图
SectionBOM类型的BOM是字段BOM,描述了一个基本字节序列的特征,可直接完成处理,如Int32BOM、TimeBOM等;CompositeBOM类型的BOM是组合BOM,描述了一个复杂字节序列的特征,无法直接处理,需进一步分解成多个子BOM(Section-BOM或者CompositeBOM),如SequentialBOM、SwitchBOM等。所有BOM类共同构成了BOM类型库,每个BOM类在BOM库中都有其对应的位置。
1.3 BOM的动态结构
运行时动态构建的BOM对象也是树形结构的,顶层是一个描述整体字节序列的Composite-BOM,其下包括了多个描述片段字节序列的子BOM对象。如果子BOM对象是SectionBOM,则不可再分,属于“树叶”节点;如果子BOM对象是CompositeBOM,则进一步递归分解,属于“树枝”节点,最终分解到SectionBOM为止,如图2所示。
图2 BOM对象结构图
在航天任务数据处理软件的实现过程中,关键问题是任务数据格式的描述。除了常规的顺序格式,还存在分支选择结构、Bit组合结构等复合数据格式,应用BOM模型后,数据格式完全由通用的BOM类进行层次化组织,当需要描述新的层次嵌套格式时,就由CompositeBOM下派生组合BOM描述格式处理逻辑,直至分解到SectionBOM下派生的基本字段BOM,以后类似的处理逻辑可直接继承使用这些BOM;可以最大限度地利用各种BOM进行组合描述,扩展很灵活,表述能力强大。
本节以分支选择结构为例,说明BOM模型在航天任务数据处理软件中是如何进行应用的。
2.1 数据的格式定义
假定需要描述设备工作状态这类数据,其数据域的格式定义见表1所示。
表1中,T是DateTime类型值,L、B、K是Int32
表1 设备工作状态的格式定义
类型值,Vp是Byte类型值,其后是一个空白字段(无实际意义,仅用于占位),这些都是基本类型的数据。W不是基本类型的数据,其值根据Vp变化确定:当Vp=0x0时,W表示设备状态原码,按十六进制原码值解析;当Vp=0x3时,W表示设备状态模式计数,按SByte类型值解析;当Vp=0x1A时,W表示设备状态含义,需要进一步按bit解析:b7~b3、b0无效,b2、b1按位定义状态信息。
2.2 数据的BOM树结构
根据2.1节的定义,可以构建出该类数据的BOM树结构,如下页图3所示。
顶层的SequentialBOM表示设备工作状态的整个数据域,第二层的TimeBOM、3个Int32BOM和ByteBOM分别对应T、L、B、K、Vp,PadBOM对应空白字段,SwitchBOM对应W,第三层及以下具体描述W的格式。W的格式根据Vp值条件判断后确定,因此,SwitchBOM其下的3个CaseBOM分别对应三种条件:第1个CaseBOM表示Vp=0x0的情况,具体格式由HexBOM描述,对应设备状态原码;第2个CaseBOM表示Vp=0x3的情况,具体格式由SByteBOM描述,对应设备状态模式计数;第3个CaseBOM表示Vp=0x1A的情况,具体格式由Bit-BoxBOM描述,对应设备状态含义,具体格式进一步按bit解析。最下层的2个BitPadBOM和2个Bit-StateBOM对应描述了设备状态含义的具体位定义。
图3 设备工作状态的BOM树结构图
在设备工作状态的BOM树中,SequentialBOM、SwitchBOM、CaseBOM和BitBoxBOM属于CompositeBOM,其他BOM均属于SectionBOM。
当设备工作状态的数据格式发生变化时,有两种情况:一种情况是参数的数据类型已有对应的BOM类,例如航向K参数需按4字节UInt32类型处理,则只需将该参数对应BOM设置为UInt32BOM即可;另一种情况是现有的BOM类无法描述参数的数据类型,例如需增加雷达标识TS参数,需按照3字节UInt24类型处理,由于现有BOM无法描述该类型,则先由SectionBOM派生出新的UInt24BOM类描述该类型,然后该参数就可以使用UInt24BOM描述。由上可见,BOM模型的表述能力很强,扩展也很灵活。
2.3 数据的动态处理流程
在运行时,关键问题是如何控制子BOM的执行顺序,即BOM的流控制问题。各级CompositeBOM类型的BOM均定义了流控制方法,实现对所属子BOM执行顺序的控制算法。
如图4所示,说明一帧设备工作状态数据的处理流程。首先,提取其数据域部分字节流。然后,由顶层SequentialBOM负责处理该字节流,由于该BOM定义为顺序执行所属子BOM,因此,具体处理分别顺序委托给第二层的子BOM完成。其中,W参数对应的SwitchBOM定义为分支选择流控制方式,根据设置的条件值属性委托给第三层中符合条件的某个CaseBOM处理,CaseBOM直接委托给第四层子BOM处理,以下的处理过程均递归进行。最终,处理过程终结于各“树叶”BOM。
图4 设备工作状态的处理流程图
2.4 数据的BOM树结构的持久化
另一个重要问题是如何保存内存中构建的BOM树结构信息,即BOM树结构的持久化问题。BOM对象的内存结构是一种具有层次性、不对称特点的结构,一般文件格式无法有效描述其结构。XML作为一种应用范围广泛的元语言,具有定义严格、结构清晰、灵活易读的特点,且非常适合表示半结构化的树形结构。因此,采用XML文件格式,将数据的BOM树中各级BOM类型和属性(包括名称、字节长度、字段方法等)信息持久化到XML文件中。下面是一个XML格式文件的内容片段,该文件中保存了设备工作状态的BOM树结构信息:
通过定义各级BOM类的序列化和反序列化方法,利用反射技术动态获取和设置BOM对象的类型和属性信息,这样就可以一致、直观地在BOM对象的内存结构与XML格式信息之间进行相互映射转换,从而达到一次配置、多次重用的目的。
针对任务数据格式具有层次嵌套、变化频繁的特点,本文设计了一种字节流对象模型(BOM),具有表述能力强、通用性好、可灵活扩展等优点。该模型在航天任务数据处理软件中得到了应用。通过应用BOM模型,有效描述了各类任务数据格式,解决了复杂数据格式的描述问题,使得软件具备良好的通用性及可扩展能力。
[1]彭四伟,朱群雄.形式化描述驱动的数据帧解析与处理[J].计算机工程与应用,2006,42(5):179-181.
[2]董立,赵恒永.基于编译技术的协议解析方法[J].计算机工程,2007,33(21):66-68.
[3]Gamma E,Helm R,Johnson R,et al.设计模式:可复用面向对象软件的基础(双语版)[M].北京:机械工业出版社,2007:497-504.
[4]阎宏.Java与模式[M].北京:电子工业出版社,2002:409-419.
Design and Application of Bytes Object Model
SHI Bin,XUE Chang-xin,WANG Hua,BAO Jun-lei,DUAN Hui-fen
(China Satellite Maritime TT&C Department,Jiangyin 214431,China)
The rapid development of space technology makes higher demands on mission data processing.Given that the formats of mission data are hierarchical and nested structures,and change frequently,Bytes Object Model(BOM)is designed based on Composite pattern.BOM model has the advantage of strong expressiveness and flexible extensibility.That this model is utilized in Space Mission Data Process Software makes the software have excellent ability of extension.
Bytes Object Model(BOM),design patterns,recursion,XML
TP391
A
1002-0640(2015)01-0163-04
2013-10-15
:2014-01-07
施斌(1982-),男,江苏江阴人,硕士,工程师。研究方向:计算机应用、计算机图形学等。