基于MDA的SCA波形开发研究与实现
2016-03-15黄子鸿王玲施峻武雷鹏斌李兰花
黄子鸿 王玲 施峻武 雷鹏斌 李兰花
摘 要: SCA波形的开发存在繁杂、周期长、效率低以及波形可移植性和可重用性差等不足,在此具体分析了波形组件模型,采用模型驱动架构(MDA)提出了SCA波形开发流程,由此开发出实用的可视化波形集成开发环境SCA Enabler。以QPSK波形为例,详细阐述了基于MDA的SCA波形开发流程中的几个关键环节,为SCA波形开发提供规范。
关键词: 模型驱动架构; SCA波形; 可视化装配; 平台无关模型
中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2016)04?0001?05
Abstract: For a long time, multifarious forms, long cycle, low efficiency, poor waveform portability and poor reusability have existed in the development of SCA waveform. The waveform component model is analyzed in this paper. The development process of SCA waveform is proposed by means of the model driven architecture (MDA). Based on this, an integrated development environment named as SCA Enabler for practical visual waveform is developed. Taking QPSK waveform as an example, several key points in the development process of SCA waveform based on MDA are elaborated in detail. The specification for the SCA waveform development is provided.
Keywords: model driven architecture; SCA waveform; visualized assembly; platform independent model
0 引 言
软件通信体系结构(Software Communications Architecture,SCA)[1]规范是美军在实施联合战术无线电系统(JTRS)计划过程中提出的一个标准规范集,它为软件无线电台的设计提供了一种与实现无关的开放式架构。SCA规范的目标是最大化软件的可移植性和可配置性,提高按照SCA规范所开发的产品间的互操作性,使系统升级方便简单,降低系统开发部署成本。SCA用于指导软件无线电通信系统整体的设计开发,但没有给出具体的实现方法。传统SCA波形开发方法较为繁琐复杂、开发速度慢、所开发波形的可移植性和可重用性差,且随着SCA规范不断完善和丰富,开发一个符合SCA规范的波形的技术门槛也随之提高,不可避免地涉及到很多与SCA规范相关的技术细节,而这些技术在短时间内很难全面而准确地掌握,由此势必给波形开发人员带来很大的开发难度,造成开发周期延长、开发成本上升,测试工作量显著增加。
为此,国外采用SCA集成开发环境工具,如SCARI++,Spectra CX和OSSIE波形开发器(OWD)等,使得波形开发更加快速高效。文献[2?4]详述了波形开发流程,但由于这几款软件相关资料不公开,要完全利用起来存在一定困难。面对国内的急切需求,开发一款实现SCA波形开发的集成开发环境十分必要。
本文在对SCA规范中组件模型深入理解的基础上,开发了一套基于Eclipse[5]平台的可视化波形集成开发环境SCA Enabler,实现了基于模型驱动架构(Model Driven Architecture,MDA)[6]的SCA波形开发流程,以波形组件封装技术、波形组件化开发技术[7]、可视化的波形装配和部署等技术,快速高效地开发出可移植性、可重用性俱佳的SCA波形。
1 波形组件模型
SCA规范中的组件是指实现了某种特定功能的软件模块或单元。具体来说,组件是指继承并实现了Resource接口的波形组件。组件是波形功能模块的高度抽象,为了使其具有良好的可复用性,波形功能划分的组件粒度大小要适中。若是过大,则会影响组件的可复用性,也不利于组件的升级维护;若是过小,则将增加设置难度,并且在实际运行中势必会由于组件过于频繁的通信而影响运行效率。同时,组件内部的功能要尽可能的独立,组件间的交互应尽可能减少,并且组件的接口应简洁明了,只提供对外交互所必须的接口,使组件具有良好的封装性。
组件对外暴露的是外部接口(包括接口和端口),而封装的是具体的功能实现。为使波形组件具有良好封装性,将外部接口统一抽象为端口对象,与组件分离。端口具有方向性,一种是指该组件能为其他组件提供的接口,即Provides端口;另一种是指该组件需要使用的其他组件接口,即Uses端口。
组件内部具体的功能实现,即组件代码,由外到内主要由三部分组成:包装代码和XML域配置文件、胶水代码和功能代码[8]。其中包装代码和XML域配置文件是SCA相关代码,胶水代码和功能代码与具体的组件实现相关,如图1所示。
各部分的作用如下:
包装代码和XML域配置文件:XML文件用于描述组件实现、组件接口和端口、组件加载的设备以及用户自定义属性等;包装代码则负责封装组件内部的功能代码,需要处理组件与核心框架通信的一系列过程,涉及到接口、端口、组件入口函数、SCA控制接口等。
胶水代码:负责把通信数据从包装代码中转发到功能代码及其相反过程,例如数据格式的转换等。
功能代码:实现组件的信号处理功能或更高级的控制功能,是波形通信功能实现的核心部分。
2 基于MDA的SCA波形开发
组件化的波形开发是软件无线电的一个重要技术优势,是提高波形可移植性,增强波形部署灵活性,提升硬件资源使用效率的技术基础;对于提高波形开发的模块化、专业化程度,加速新波形的开发进度,降低新波形的开发风险都具有十分重要的作用。
然而,组件化的波形开发并不仅仅是传统意义上对波形进行功能模块划分,还需要按照软件无线电规范,对功能模块进行接口封装。由于涉及到的规范十分复杂,完全由传统波形开发人员手工编写全部代码既费时又容易出错,所以需要制定一套标准的波形开发流程,并且通过集成开发环境软件的使用,尽量提高波形开发过程中的自动化水平,从而提高波形组件的开发效率,降低错误发生。
2.1 SCA Enabler
SCA Enabler的各种功能都基于Eclipse平台进行设计与开发,以插件的形式进行集成,形成可扩展性强、资源丰富、功能完整的集成开发环境,提高了SCA波形软件开发的效率和规范化程度。SCA Enabler的系统架构如图2所示。
SCA Enabler具备以下特点:基于开放式的体系架构;基于MDA的波形开发模式;支持Windows,VxWorks,Linux等多种平台;支持XML编辑器、XML解析器、UML编辑器等插件;支持波形组件、平台设备、平台服务等的PIM建模;支持PIM到PSM模型的自动转换,包括域描述文件、包装代码等;支持波形、节点、平台的可视化装配与导出;支持波形的集成测试。
2.2 基于MDA的波形开发流程
SCA 4.0规范使用MDA的开发模式来指导软件无线电通信系统整体的设计开发。MDA是对象管理组织(Object Management Group,OMG)提出的一种软件开发框架,OMG针对波形应用开发,提出了基于MDA的波形设计方法。波形应用的开发过程通过对软件系统的建模行为驱动。波形应用的开发框架如图3所示。
在基于MDA的波形开发中,核心的概念是平台无关模型(Platform Independent Model,PIM)和平台相关模型(Platform Specific Model,PSM)[9]。其中,PIM是纯粹不考虑实现技术的分析模型,是独立于具体实现平台的用户需求描述;而PSM可以视为对PIM模型在具体平台上的一种特定实现,即完成高度抽象的用户需求在特定平台上的实现。结合使用集成开发环境SCA Enabler,基于MDA的SCA波形开发的流程如下:
(1) 分析波形功能需求,明确波形的各个层次及其连接关系。
(2) 将各个层次划分为波形组件,分析波形组件的功能需求,明确组件的功能。
(3) 根据波形组件的功能以及组件间的连接,确定各组件的API,通过SCA Enabler集成的UML建模工具,建立各组件的UML模型,生成IDL文件。
(4) 通过SCA Enabler对各组件进行组件建模,用户对组件进行可视化描述。
以上4步相当于建立波形的PIM模型。
(5) 根据用户进行组件可视化描述输入的信息,SCA Enabler为各组件自动生成符合SCA规范的域描述文件,包括软件包描述符(Software Package Descriptor,SPD)、软件组件描述符(Software Component Descriptor,SCD)、属性描述符(Properties Descriptor,PRF)。
(6) SCA Enabler收集各组件的IDL文件信息、域描述文件等信息,结合核心框架库、操作系统、编程语言以及CORBA,通过IDL编译器为各组件自动生成包装代码,包括客户端程序、服务器端程序、组件实现代码、Provides端口实现代码以及组件的入口点代码。
(7) 用户为各组件添加实现代码,使用SCA Enabler的编译器编译连接组件代码,生成可执行代码。
(8) 各波形组件入库,用户可在波形装配视图,根据波形组件的连接关系,将各波形组件可视化装配连接成波形,并根据已有软硬件平台进行波形部署,生成软件装配描述符(SAD),波形入库。
以上第(5)~(8)步在用户的参与下,完成PIM到PSM的自动转换。
(9) 通过SCA Enabler的导出工具将波形导出。
(10) 通过SCA Enabler的连接管理模块将导出波形安装到目标平台,进行集成测试,验证波形应用。
SCA波形开发流程如图4所示。图4中的虚线区域都是在波形开发人员的参与下,主要由集成开发环境软件SCA Enabler负责完成的。SCA Enabler将用户从SCA规范和复杂的底层实现中脱离出来,专注于最重要的数据处理运算,从而极大地减少用户的工作量,降低开发难度。与此同时,SCA Enabler中的组件库、波形库、平台库等的存在进一步形成了一次开发、重复使用的能力,新波形可以不经过修改或者只经过少量修改就能移植到不同的硬件平台,从而能够显著缩短新波形的开发周期,降低开发成本,以及将已有波形向新平台移植的周期和成本。
2.3 几个关键环节
为体现基于MDA的SCA波形开发方法的优势,结合集成开发环境SCA Enabler,以QPSK基带波形为例介绍基于MDA的SCA波形开发流程中区别于传统波形开发的几个重点环节,包括波形组件设计与PIM建模、组件代码生成、波形可视化装配等。
2.3.1 波形总体设计
QPSK基带波形截取了典型通信系统中基带信号处理的一部分,调制方式采用四相位调制,其完整工作的原理设计如图5所示。
2.3.2 波形组件设计与PIM建模
根据图5中QPSK波形结构,将波形设计成了5个组件,并定义波形组件API接口,其中升余弦滤波组件RRcFilter的接口UML类图如图6所示。
根据组件API接口定义建立组件PIM模型,使得用户需求与具体实现分离,从而达到将波形应用与硬件平台分离的目的。由于PIM模型独立于具体实现平台,不会随着具体实现平台的变化而变化,所以PIM模型在波形组件化开发中具有重要的研究意义。
波形开发人员使用SCA Enabler进行波形组件开发的流程如图7所示。此外,SCA Enabler实现了组件库,不仅可以提高波形组件的可复用性和波形的可移植性,而且有利于波形的移植、升级和维护。在进行波形组件建模时,应遵循如下原则和优先级顺序:
(1) 使用组件库中的现有波形组件模型;
(2) 对现有波形组件模型进行修改和扩展;
(3) 建立全新的波形组件模型。
按照上述顺序建立组件模型能有效地提高组件库中已有组件模型的利用率,同时还可以减少前期组件设计以及后续的组件可视化描述等工作,从而缩短开发周期。
2.3.3 组件代码生成
组件代码中的包装代码与XML域配置文件是SCA相关代码,可由集成开发环境自动生成,从而加速组件开发。SCA规范使用接口定义语言(IDL)定义波形组件接口,使得波形组件具有高度的抽象性,波形组件的设计与具体的编程语言、运行平台和传输机制相分离,保证了波形组件的复用性,能够明显降低波形组件的开发周期和成本。在具体实现时,将IDL按照平台相关模型映射规则以某种程序语言进行映射,将IDL接口模型转换为与软件运行平台相关的软件代码,而组件开发者只需针对接口功能进行实现,无需考虑与波形组件运行平台相关的其他问题,从而给波形组件开发带来极大帮助,具体的映射规则可参考公共对象请求代理体系结构(CORBA)相应的映射规范。为使组件具有良好的封装以及组件间相互独立,本文设计了一套组件代码框架,具体包括组件实现、端口实现、CORBA桩和框架码、组件入口点代码,如图8所示。
各部分的功能如表1所示。
SCA 规范要求为每个波形组件编写相应的XML配置文件以实现核心框架对波形进行动态加载、控制和配置的目标。符合SCA规范的波形组件XML描述文件都具有相似的结构,不同类型的描述文件可以采用对应的文件模板来简化编制,同时通过可视化的组件描述由集成开发环境自动生成,从而简化了组件开发难度。
2.3.4 波形可视化装配
为了实现既定的波形功能,波形组件需要装配连接成一个完整的波形应用,波形组件端口连接示意图如图9所示。
波形连接支持SAD文件中为源和目的组件定义的各种描述方式,其中源通过usesport描述使用者组件端口,包括4种元素描述方式,如表2所示。
目标对象通过providesport,Componentsupportedinterface,findby三种元素描述方式定义对象的获取方式,如表3所示。SCA规范针对源和目标对象的不同采用不同的连接方式,具体可见文献[10],本文不做详细描述。
基于MDA的SCA波形开发通过集成开发环境以可视化的界面进行波形装配,以图形化的方式建立端口连接,自动生成符合SCA规范的波形装配描述文件SAD,避免了由于手动编写的不规范造成的错误,提高了波形开发质量,加速了波形开发进程。QPSK波形可视化装配如图10所示。
3 结 语
基于MDA的SCA波形开发方法符合SCA规范,结合开发的集成开发环境SCA Enabler,可以快速、高效、高质量地完成波形开发,使得SCA通信装备升级维护更加快捷高效,可广泛应用于军事通信、移动通信等领域,对于软件无线电的推广发展具有深远影响。
参考文献
[1] Joint Program Executive Office (JPEO), Joint Tactical Radio System (JTRS). Software communications architecture specification, Version 4.0 [S]. [S.l.]: Joint Program Executive Office, 2012.
[2] 葛正平.基于SCARI++的SCA系统(波形)开发方法研究与实现[D].成都:电子科技大学,2009.
[3] 刁笳.基于OSSIE的SCA波形开发方法与实现[D].成都:电子科技大学,2008.
[4] 雷刚.基于OSSIE的波形开发及API设计实现[D].成都:电子科技大学,2011.
[5] CLAYBERG Eric, RUBEL Dan. Eclipse插件开发[M].陈沛,译.3版.北京:机械工业出版社,2010.
[6] 叶发忠,何希琼,钟勇.模型驱动架构的研究[J].计算机应用,2006(z1):248?249.
[7] 王琳,刘涛,余秀美.基于软件通信体系结构的波形组件化开发技术研究[J].移动通信,2011(6):68?71.
[8] HERMELING Mark. Code generation for SCA components [EB/L]. [2008?10?25]. http://www.zeligsoft.com/node/202.
[9] Object Management Group. PIM and PSM for software radio components [S/OL]. [2005?05?31]. http://solitaire.omg.org/issue.
[10] 洪锡军,钱晨,张激.基于SCA的波形开发[J].计算机工程,2006(18):270?272.
[11] 洪锡军,陈小凤,张激.SCA波形组件的可视化装配与部署[J].计算机工程,2008(1):283?285.
[12] 王汗青,高俊.基于模型驱动体系结构的软件无线电波形开发研究[J].舰船电子工程,2008(4):87?90.
[13] 李莉,李鹰.基于SCA的战术数据链波形设计和实现[J].舰船电子工程,2013(7):54?56.