蔡 卓,張小瓊
(中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
軟件通信體系結(jié)構(gòu)(SCA,Software Communications Architecture)規(guī)范是美軍在實(shí)施聯(lián)合戰(zhàn)術(shù)無(wú)線電系統(tǒng)計(jì)劃過(guò)程中提出的一個(gè)標(biāo)準(zhǔn)規(guī)范集,它為軟件無(wú)線電臺(tái)的設(shè)計(jì)提供了一種與實(shí)現(xiàn)無(wú)關(guān)的開(kāi)放式架構(gòu)。SCA的目的是實(shí)現(xiàn)無(wú)線通信裝備硬件模塊化,軟件具有可移植性、可重用性和互操作性。
盡管SCA來(lái)自于軍方項(xiàng)目,但隨著時(shí)間推移,SCA提出的規(guī)范方法和目標(biāo)正日益受到軍方和非軍方的重視,并進(jìn)入商用和民用的領(lǐng)域。
SCA的核心思想是采用面向?qū)ο蟮姆椒▉?lái)設(shè)計(jì)一種標(biāo)準(zhǔn)化的軟件系統(tǒng),通過(guò)將不同的軟件波形加載到通用的硬件平臺(tái)中來(lái)實(shí)現(xiàn)不同的功能,使無(wú)線電臺(tái)的更新?lián)Q代只需要更換其中的軟件波形就可以實(shí)現(xiàn),達(dá)到了軟件可重復(fù)使用的目的。軟件的重用性不僅縮短了無(wú)線電臺(tái)的開(kāi)發(fā)周期,也在一定程度上降低了開(kāi)發(fā)成本。
SCA標(biāo)準(zhǔn)最初發(fā)布于1999年,到目前為止發(fā)布了多個(gè)版本。目前SCA的最新版本為2012年2月發(fā)布的SCA4.0規(guī)范。
SCA4.0[1-2](早期發(fā)展階段被稱為SCA Next)是SCA標(biāo)準(zhǔn)的重要修訂。SCA4.0可以通過(guò)裁減以更好地適應(yīng)每個(gè)電臺(tái)及其任務(wù)的具體功能。內(nèi)存和處理功耗可以得到顯著降低。體系結(jié)構(gòu)的增強(qiáng)也提高了安全性,并且使得電臺(tái)能夠更快地啟動(dòng)和重新配置。
輕量級(jí)組件和功能單元是SCA4.0的兩種機(jī)制,可以用于更好地將任務(wù)需求和基于SCA的產(chǎn)品結(jié)合在一起。輕量級(jí)組件提供了一種靈活的結(jié)構(gòu)化方法,以適應(yīng)各種平臺(tái)的需求(移動(dòng)的與固定的,單信道與多信道,單個(gè)波形與多種波形等),而不是一個(gè)大小用于所有結(jié)構(gòu)。
SCA2.2.2中的接口功能齊全,導(dǎo)致部分組件比需要的大。例如,一個(gè)SCA2.2.2的資源組件包括了測(cè)試對(duì)象、屬性等特性。但是如果一個(gè)組件不需要自檢測(cè)試或?qū)傩阅??SCA2.2.2仍然要求組件實(shí)現(xiàn)那些功能。
SCA4.0引入了一種新的設(shè)計(jì)模式——選擇性繼承。圖1以資源(Resource)接口為例說(shuō)明選擇性繼承的特征。繼承線上有注釋的表明接口為可選性繼承。對(duì)于Resource接口,只有一個(gè)接口是必須的——生命周期(LifeCycle),其他接口根據(jù)需要來(lái)使用。接口描述語(yǔ)言(IDL,Interface Definition Language)中的預(yù)編譯定義允許開(kāi)發(fā)者規(guī)定一個(gè)具體的組件需要哪些接口。因?yàn)檫@個(gè)特征,SCA組件比之前的版本要小。
圖1 Resoure接口的選擇性繼承
選擇性繼承設(shè)計(jì)模式已經(jīng)擴(kuò)展到其他核心框架接口內(nèi)。例如,加載能力(LoadableCapacity)接口之前對(duì)所有的加載設(shè)備(LoadableDecives)都是需要的。在一些實(shí)現(xiàn)中,由這個(gè)接口提供的功能可以不使用,因此SCA 4..0 允許組件創(chuàng)建時(shí)沒(méi)有該接口。
SCA4.0引入了一個(gè)新的接口,端口訪問(wèn)(PortAccessor)接口。PortAccessor接口包含了早期版本的端口(port)和端口提供者(PortSupplier)接口功能。繼承SCA2.2.2的波形將需要更新為新的PortAccessor,而不需要做其他的改動(dòng)。
SCA之前的版本使用圖2的提取模型(pull model)。為了獲取需要的信息,需要使用調(diào)用返回(callback)方式。例如:
1)getPort用于提取使用和提供的端口。
2)提取屬性:如用getDeviceID得到設(shè)備的ID,用getRegisteredDevices得到注冊(cè)的設(shè)備。
3)用resolve從一個(gè)命名服務(wù)提取應(yīng)用組件。
圖2 pull model 示意圖
SCA4.0引入了一個(gè)“push model”。圖3中,體系結(jié)構(gòu)允許信息直接交換,而不使用調(diào)用返回方式,這個(gè)模型的主要好處在于能有更好的保證和性能。更好地保證通過(guò)限制僅使用push訪問(wèn)來(lái)獲得,并且消除了對(duì)命名服務(wù)的需求。更好的性能獲得是通過(guò)減少了調(diào)用的總次數(shù)。這可以減少啟動(dòng)和初始化時(shí)間。它也允許調(diào)用返回的屬性和操作成為可選的,當(dāng)不使用的時(shí)候,減少了需要的實(shí)現(xiàn)。例如,圖3中,registerComponent用于組件或設(shè)備的注冊(cè),registerDeviceManager用于設(shè)備管理器組件的注冊(cè)。
圖3 push model 示意圖
SCA2.2.2和它之前的版本規(guī)定公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(CORBA,Common Object Request Broker Architecture)作為中間件,對(duì)電臺(tái)開(kāi)發(fā)者延遲了具體的傳輸機(jī)制。歷史上的數(shù)據(jù)傳輸機(jī)制已經(jīng)有TCP-IP和共享內(nèi)存。TCP-IP協(xié)議可能引入了實(shí)際的等待時(shí)間。更快的傳輸如共享內(nèi)存通常對(duì)高速數(shù)據(jù)率波形可以獲得可接受的延遲。
SCA4.0已經(jīng)刪除了CORBA要求,定義了獨(dú)立的中間件應(yīng)用程序接口(API,Application Program Interface),盡管API仍然是通過(guò)IDL規(guī)定的。電臺(tái)開(kāi)發(fā)者可以使用CORBA,或者選擇一個(gè)不同的中間件,例如安卓平臺(tái)使用的輕量級(jí)遠(yuǎn)程過(guò)程控制(RPC,Remote Procedure Control)。對(duì)不同中間件的實(shí)現(xiàn),波形應(yīng)該需要重新編譯,但是API仍然是相同的,維持了波形的可移植性。
在SCA4.0發(fā)布之前,SCA僅支持配置單個(gè)的、獨(dú)立的應(yīng)用的能力。當(dāng)多個(gè)應(yīng)用配置在一個(gè)平臺(tái)時(shí),SCA組件框架不提供直接的連接支持或者邏輯上將這些應(yīng)用分級(jí)的能力。因此,創(chuàng)建應(yīng)用的客戶端被留下人工進(jìn)行,通過(guò)使用外部端口的組合以及應(yīng)用可擴(kuò)展標(biāo)記語(yǔ)言(XML,Extensible Markup Language)文件中收集的硬編碼的連接或自動(dòng)連接。然而這種方法非常受限,需要客戶端實(shí)現(xiàn)更多。
在SCA4.0中,分級(jí)應(yīng)用支持和應(yīng)用連通性已經(jīng)被增加以支持多個(gè)應(yīng)用。
分級(jí)應(yīng)用源自簡(jiǎn)單的需要:想將封裝的復(fù)雜的應(yīng)用結(jié)構(gòu)進(jìn)一步分解為一個(gè)分級(jí)的結(jié)構(gòu)。然而早期的SCA中,一個(gè)應(yīng)用結(jié)構(gòu)是“扁平的”,簡(jiǎn)單地由葉子節(jié)點(diǎn)的組件構(gòu)成,在SCA4.0中不再有這個(gè)限制。因此,可以形成復(fù)雜的組件,并抽象為子應(yīng)用,然后使用這些組件形成應(yīng)用。這種體系結(jié)構(gòu)技術(shù)可以使得一個(gè)組件能用于不同的情況下,提升了如在軟件產(chǎn)品線中使用的庫(kù)的重用。分級(jí)應(yīng)用的示意圖見(jiàn)圖4。
SCA4.0定義了一種正式的機(jī)制,利用軟件裝配描述文件(SAD,Software Assembly Descriptor)中的外部端口(externalports)元素作為管道,通過(guò)它框架能管理那些交互應(yīng)用連接的形成和銷毀。外部的端口連接創(chuàng)建為這個(gè)問(wèn)題提供了一種好的解決辦法,因?yàn)檫@個(gè)問(wèn)題的本性——兩個(gè)需要連接的應(yīng)用彼此互相依賴于將被創(chuàng)建的連接,但是它們被獨(dú)立創(chuàng)建而且不保證它們將被一起創(chuàng)建。連接機(jī)制需要知道怎樣處理這種情況:當(dāng)連接的一邊存在、而另一邊不存在。然而,如果應(yīng)用的兩邊都被創(chuàng)建,那么應(yīng)用總是被連接的。
圖4 一種簡(jiǎn)單的分級(jí)應(yīng)用
SCA規(guī)范自提出以來(lái),就被軟件無(wú)線電論壇接受作為未來(lái)無(wú)線電開(kāi)發(fā)的標(biāo)準(zhǔn)。各國(guó)也對(duì)SCA規(guī)范展開(kāi)了大規(guī)模的研究工作。近年來(lái)國(guó)內(nèi)對(duì)軟件無(wú)線電也進(jìn)行了許多的研究及開(kāi)發(fā)[3-6]。中國(guó)SCA4.0對(duì)之前的規(guī)范進(jìn)行了重要修訂,使之可以裁剪,更加輕量級(jí)、靈活。SCA4.0可以兼容從小的單信道電臺(tái)到大功率、多信道電臺(tái)等各種大小的電臺(tái)。SCA4.0提供了一個(gè)增強(qiáng)的集合特征,以支持波形的移植性和互操作性。了解SCA4.0,對(duì)于軟件無(wú)線電的研究開(kāi)發(fā)工作有著重要意義。
[1]JTRS JPEO. Software Communications Architecture Specification, Version 4.0[EB/OL].(2001-12-19)[2013-03-11].http://jpeojtrs.mil/sca/Pages/port abilityguidelines.aspx,2012
[2]JTNC. Software Communications Architecture Specification 4.0 User’s Guide[EB/OL].(2010-11-30)[2013-03-11].http://jpeojtrs.mil/sca/Pages/port abilityguidelines.aspx,2012
[3]馬子驥,鄭善賢,劉宏立.一種基于軟件無(wú)線電的數(shù)字解調(diào)方法研究[J].信息安全與通信保密,2008(03):34-35.
[4]王爍,周家喜,王慶華.SCA架構(gòu)軟件無(wú)線電臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2011,44(06):40-42.
[5]張海燕,叢鍵.一種新型SCA電臺(tái)的分析與設(shè)計(jì)[J].通信技術(shù),2012,45(09):21-24.
[6]王贏.基于SCA規(guī)范的跳頻通信波形設(shè)計(jì)與開(kāi)發(fā)[D].杭州:杭州電子科技大學(xué),2010.