黨 琦,王崇暉,董廣然,李國民
(1.西安衛(wèi)星測控中心,西安 710043;2.航天器在軌故障診斷與維修重點實驗室,西安 710043)
軟件復(fù)用是指重復(fù)使用為避免重復(fù)開發(fā)同樣或類似工作產(chǎn)品的過程[1]。作為一種擺脫軟件危機的手段,它能夠有效克服軟件開發(fā)中經(jīng)常出現(xiàn)的開發(fā)效率低、費用高、開發(fā)周期長、系統(tǒng)難以維護、軟件質(zhì)量難以保證等問題[2]。
隨著對軟件復(fù)用實踐的深入,構(gòu)件技術(shù)得到飛速發(fā)展[3]。軟件構(gòu)件技術(shù)是支持軟件復(fù)用的核心技術(shù)[4],構(gòu)件通過接口與外界交互,可通過相同接口構(gòu)件替換原有構(gòu)件[5]。這種方式徹底顛覆了手工作坊式的軟件開發(fā)模式,給軟件開發(fā)人員在設(shè)計、編碼等方面了帶來了很大的靈活度,正在成為軟件設(shè)計領(lǐng)域新的趨勢[6]。
在航天測控領(lǐng)域,測控應(yīng)用軟件復(fù)用技術(shù)的研究歷來受到關(guān)注和重視。隨著載人航天工程、探月工程的不斷深入,我國航天測控網(wǎng)不斷有新的測控設(shè)備投入使用[7]。而航天測控站數(shù)據(jù)傳輸處理系統(tǒng)是各測控設(shè)備不可或缺的一個分系統(tǒng),它承擔(dān)著與測控中心之間的信息交換及部分信息處理任務(wù),如何提高該軟件系統(tǒng)的開發(fā)效率,提高軟件質(zhì)量,縮短軟件開發(fā)周期,減小軟件的維護成本,是我們面臨的一個重要課題。
本文基于Windows 系統(tǒng),采用軟件總線模型層次化設(shè)備模型,構(gòu)建了一個構(gòu)件化的數(shù)據(jù)傳輸處理系統(tǒng)實例,實現(xiàn)了該領(lǐng)域內(nèi)軟件的二進制復(fù)用,提高了系統(tǒng)的可靠性和軟件的開發(fā)效率。
航天測控系統(tǒng)由測控中心、測控站、通信系統(tǒng)等組成[8]。數(shù)據(jù)傳輸處理系統(tǒng)是航天測控網(wǎng)的基本節(jié)點,主要完成與測控設(shè)備通信、與中心的數(shù)據(jù)通信、實時數(shù)據(jù)處理和事后處理功能。
(1)與測控設(shè)備通信
數(shù)據(jù)傳輸處理系統(tǒng)與測控設(shè)備之間通過通信接口部件(以太網(wǎng)、多路通信板、CCP 或?qū)S媒涌?連接,在相關(guān)的協(xié)議支配下進行通信:向設(shè)備發(fā)送上行遙控信息、軌道預(yù)報信息,接收設(shè)備解調(diào)的遙測信息、測量信息等。
(2)與中心的數(shù)據(jù)通信
數(shù)據(jù)傳輸處理系統(tǒng)與中心的數(shù)據(jù)通信一般使用多路通信板或網(wǎng)絡(luò)方式進行通信,采用簡化HDLC規(guī)程或TCP/IP 協(xié)議作為通信協(xié)議。實時向中心發(fā)送設(shè)備的測量信息、控制結(jié)果信息等,接收并轉(zhuǎn)發(fā)中心發(fā)送的遙控指令以及軌道預(yù)報。
(3)實時數(shù)據(jù)處理
主要包括遙測挑點處理、外測數(shù)據(jù)處理以及控制量計算三部分。
(4)事后處理
事后處理是指在任務(wù)跟蹤結(jié)束后對實時記錄測量和控制數(shù)據(jù)進行處理,包括顯示、打印和重發(fā)以及數(shù)據(jù)的精度分析等。
通過對航天測控站數(shù)據(jù)傳輸處理系統(tǒng)的任務(wù)進行分析,可識別出操作員、中心、各設(shè)備分機、雙工控制臺、時統(tǒng)設(shè)備、模擬器等10 類角色,經(jīng)過抽象,劃分為操作員、網(wǎng)絡(luò)用戶、HDLC 用戶、串口用戶、站時統(tǒng)5 類用戶。
根據(jù)數(shù)據(jù)傳輸處理系統(tǒng)承擔(dān)的任務(wù),分析后將系統(tǒng)抽象為如下用例模型[9],如圖1 所示。
圖1 系統(tǒng)用例圖Fig.1 System use case diagram
當(dāng)前比較成熟的構(gòu)件模型主要有Microsoft 公司的COM/DCOM/COM +、SUN 公司的JavaBeans/EJB 和OMG(Object Management Group)的CORBA,這些技術(shù)相對比較復(fù)雜,程序不易理解。
航天測控站數(shù)據(jù)傳輸處理系統(tǒng)的設(shè)計基于Windows 系統(tǒng),要充分復(fù)用已有的軟件資源,在對現(xiàn)有功能模塊進行重構(gòu)的基礎(chǔ)上,開發(fā)設(shè)計基于構(gòu)件技術(shù)的體系架構(gòu),實現(xiàn)二進制級別的軟件復(fù)用,提高系統(tǒng)的可靠性,減少軟件的重復(fù)開發(fā),實現(xiàn)多設(shè)備之間軟件版本的統(tǒng)一。
按照體系結(jié)構(gòu)權(quán)衡分析方法(Architecture Trade-off Analysis Method,ATAM)[10],綜合目前常用的系統(tǒng)體系結(jié)構(gòu)風(fēng)格[11],結(jié)合構(gòu)件化方法,數(shù)據(jù)傳輸處理系統(tǒng)采用層次模型和軟件總線模型相結(jié)合的風(fēng)格,該模型結(jié)構(gòu)如圖2 所示。
在系統(tǒng)底層,將與通信有關(guān)的部分軟件部件設(shè)計為層次結(jié)構(gòu),包含服務(wù)程序、通信接口、通信程序3 層。在系統(tǒng)上層,設(shè)計為軟件總線結(jié)構(gòu),總線中包含系統(tǒng)任務(wù)信息、計劃信息、主備機信息、系統(tǒng)路由信息、各軟件部件的信息描述、各軟件部件的命令接口以及命令接口描述、系統(tǒng)內(nèi)部動態(tài)數(shù)據(jù)信息。在系統(tǒng)中,各處理部件將自己的信息描述、命令接口描述以及命令接口注冊到系統(tǒng)總線上,同時向總線申請本軟件部件要處理的數(shù)據(jù)以及對應(yīng)數(shù)據(jù)的接收地址,系統(tǒng)總線負(fù)責(zé)在系統(tǒng)動態(tài)數(shù)據(jù)中查找各個軟件部件注冊的信息,并按要求向?qū)?yīng)的地址發(fā)送。各軟件部件處理完畢后,如果要產(chǎn)生結(jié)果數(shù)據(jù),則將數(shù)據(jù)發(fā)送到系統(tǒng)總線上。
圖2 系統(tǒng)體系結(jié)構(gòu)圖Fig.2 System framework diagram
系統(tǒng)設(shè)計了專門的通信區(qū)域作為進程間通信的手段。通信區(qū)域采用Windows 的內(nèi)存映射文件傳送數(shù)據(jù)、利用事件同步數(shù)據(jù)的發(fā)送與接收、利用環(huán)形隊列緩沖數(shù)據(jù)的“進程-進程”之間高速單方向通信的機制[12-13]。
對每個通信區(qū)域定義區(qū)域名稱、地址標(biāo)識、區(qū)域長度、緩沖區(qū)個數(shù)等信息,并且與唯一的一個接收者相關(guān)聯(lián)。通信區(qū)域有一個接收者,但可以有多個發(fā)送者。
對于使用者來說,只需要知道某個通信區(qū)域的去向即可,不必了解數(shù)據(jù)傳輸?shù)娜魏渭?xì)節(jié),所有實現(xiàn)的細(xì)節(jié)都已經(jīng)被封裝。
系統(tǒng)設(shè)計了一個控制程序負(fù)責(zé)處理其他構(gòu)件的加載、卸載以及管理、配置工作。
系統(tǒng)通過信息處理構(gòu)件(系統(tǒng)數(shù)據(jù)總線)向外與其他構(gòu)件進行信息交換,該構(gòu)件預(yù)定義了一個命令接口和一個數(shù)據(jù)接口:通過命令接口接收其他構(gòu)件的注冊或注銷命令,按照其他構(gòu)件注冊信息的類別,將所注冊信息發(fā)送給定的地址;通過數(shù)據(jù)接口接收系統(tǒng)內(nèi)部的動態(tài)信息。
其他處理構(gòu)件向信息處理構(gòu)件注冊自己關(guān)心的信息,并從給定的地址接收信息,處理后,發(fā)送到信息處理構(gòu)件數(shù)據(jù)接口。系統(tǒng)的信息流轉(zhuǎn)方式參見圖3。
圖3 數(shù)據(jù)流轉(zhuǎn)控制方式Fig.3 Dataflow control mode
在系統(tǒng)數(shù)據(jù)總線上,構(gòu)件使用兩種注冊機制——靜態(tài)注冊和動態(tài)注冊。
(1)靜態(tài)注冊
靜態(tài)注冊在控制程序運行前進行。通過預(yù)先定義好描述的方式,將自身的信息寫入系統(tǒng)描述表,包括可執(zhí)行文件名稱、運行路徑、命令接口地址等,控制程序運行時自動加載該描述表。
(2)動態(tài)注冊
在控制程序運行后向控制程序動態(tài)注冊,包括可執(zhí)行文件名稱、運行路徑、命令接口地址等信息。
通過對系統(tǒng)進行分析,按照構(gòu)件抽取理論,從數(shù)據(jù)傳輸處理系統(tǒng)抽取出數(shù)據(jù)平滑、外測數(shù)據(jù)處理、系統(tǒng)框架、雙工控制、信息管理、軌道預(yù)報、數(shù)據(jù)比對等系列構(gòu)件。
按照構(gòu)件的運行特點和功能,將構(gòu)件設(shè)計為可執(zhí)行程序和動態(tài)鏈接庫兩種形式。
(1)可執(zhí)行程序形式
將網(wǎng)絡(luò)通信、HDLC 通信、串口通信、時間管理、遙控處理、章動控制、姿章聯(lián)控、雙工控制、數(shù)據(jù)服務(wù)等設(shè)計為可執(zhí)行程序(進程),這種形式的程序只要符合系統(tǒng)的調(diào)用規(guī)范,可以隨時加入系統(tǒng)。
(2)動態(tài)鏈接庫形式
將中心多項式平滑、軌道預(yù)報、數(shù)據(jù)比對、數(shù)據(jù)通信區(qū)設(shè)計為動態(tài)鏈接庫(DLL)形式。其中Dtes.exe+FrameWork.dll 為整個系統(tǒng)的容器,負(fù)責(zé)創(chuàng)建和管理其他進程——時間服務(wù)、網(wǎng)絡(luò)服務(wù)、串口服務(wù)、CCP 服務(wù)、通信管理、數(shù)據(jù)存儲、外測處理、數(shù)字引導(dǎo)、軌道預(yù)報、系統(tǒng)雙工處理等,而這些構(gòu)件基于DtesBase.dll、MemArea.dll、OrbitForcast.dll、Encrypt.dll等動態(tài)鏈接庫構(gòu)件運行。系統(tǒng)部署圖[14]見圖4。
圖4 系統(tǒng)部署圖Fig.4 System deployment diagram
本文針對測控軟件開發(fā)中存在復(fù)用性差的問題,提出了構(gòu)件化設(shè)計的理念,提出并實現(xiàn)了構(gòu)件化設(shè)計、軟件總線體系結(jié)構(gòu)、層次化的虛擬設(shè)備、數(shù)據(jù)注冊注銷機制,并在Windows 平臺上開發(fā)設(shè)計了一種測控站數(shù)據(jù)傳輸處理軟件系統(tǒng)實例。這種方法與模塊復(fù)用相比,實現(xiàn)了業(yè)務(wù)功能構(gòu)件的動態(tài)組裝,和商業(yè)化的組件技術(shù)相比,框架簡單,容易理解和開發(fā)。該系統(tǒng)已經(jīng)部署在數(shù)十套不同類型的測控設(shè)備上,參加了數(shù)十次大型試驗任務(wù),實踐證明,該方法具有下列優(yōu)點:
(1)采用構(gòu)件化技術(shù),結(jié)合軟件總線模型體系結(jié)構(gòu),設(shè)計實現(xiàn)了測控站數(shù)據(jù)傳輸處理系統(tǒng)的可復(fù)用構(gòu)件庫和統(tǒng)一的通信調(diào)用接口,提高了系統(tǒng)的可裁剪性、可擴充性;
(2)以構(gòu)件單元進行組裝和復(fù)用,提高了軟件的復(fù)用程度,降低了軟件的生產(chǎn)維護成本,加快了軟件的開發(fā)速度,增強了系統(tǒng)的可靠性;
(3)采用內(nèi)存映射文件技術(shù),結(jié)合數(shù)據(jù)注冊機制,解決了系統(tǒng)連接構(gòu)件設(shè)計實現(xiàn)的難點,使得系統(tǒng)內(nèi)部信息流轉(zhuǎn)和交換更加方便靈活。
[1]史浩輝,何煒.基于構(gòu)件的指控軟件復(fù)用[J].計算機技術(shù)與發(fā)展,2011,2l(2):160-165.SHI Haohui,HE Wei.Component- Based Command Control Software Reused[J].Computer Technology and Development,2011,21(2):160-165.(in Chinese)
[2]舒堅,劉琳嵐,徐洪福.軟件復(fù)用在消防遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用[J].微計算機信息,2006,22(1):106-109.SHU Jian,LIU Linlan,XU Hongfu.Software Reuse Technology Applied in Fire Remote Monitoring System[J].Micro Computer Information,2006,22(1):106- 109.(in Chinese)
[3]鄭紅,李師賢.可重用的分布式軟件構(gòu)件模型分析[J].計算機工程與應(yīng)用,2002,38(15):68-71.ZHEN Hong,LI Shixian.Analysis of Reusable Distributed Software Component Model[J].Computer Engineering and Application,2002,38(15):68-71.(in Chinese)
[4]史紀(jì)元,范龍軍.軟件復(fù)用與構(gòu)件技術(shù)[J].濰坊大學(xué)學(xué)報,2007(4):36-38.SHI Jiyuan,F(xiàn)AN Longjun.The Software Duplication Uses and the Component Technology[J].Journal of Weifang University,2007(4):36-38.(in Chinese)
[5]胡闊見,魏長江.基于構(gòu)件的領(lǐng)域工程實現(xiàn)[J].計算機工程與科學(xué),2008,30(4):92-94.HU Kuojian,WEI Changjiang.Component- Based Domain Engineering Implementation[J].Computer Engineering & Science,2008,30(4):92-94.(in Chinese)
[6]郭金良,劉進,韓文彬,等.構(gòu)件化雷達仿真系統(tǒng)的測試方法[J].火力與指揮控制,2012,37(9):205-208.GUO Jinliang,LIU Jin,HAN Wenbin,et al.Research of Testing Method for Component-Based Radar Simulation System[J].Fire Control & Command Control,2012,37(9):205-208.(in Chinese)
[7]于志堅.我國航天測控系統(tǒng)的現(xiàn)狀與發(fā)展[J].中國工程科學(xué),2006,8(10):42-46.YU Zhijian.Status Quo and Development of Spaceflight TT&C Systems[J].Engineering Science,2006,8(10):42-46.(in Chinese)
[8]黃福銘,郝和年.航天器飛行控制與仿真[M].北京:國防工業(yè)出版社,2004.HUANG Fuming,HAO Henian.Spacecraft Flight Control and Simulation[M].Beijing:National Defense Industry Press,2003.(in Chinese)
[9]Bennett S,McRobb S,F(xiàn)armer R.UML2.2 面向?qū)ο蠓治雠c設(shè)計[M].李楊,譯.4 版.北京:清華大學(xué)出版社,2013.Bennett S,McRobb S,F(xiàn)armer R.Object-Oriented Systems Analysis and Design,Using UML[M].Translated by LI Yang.4th ed.Beijing:Tsinghua University Press,2013.(in Chinese)
[10]Pressman R S.軟件工程——實踐者的研究方法[M].鄭人杰,馬素霞,譯.7 版.北京:機械工業(yè)出版社,2011.Pressman R S.Software Engineering:A Practitioner’s Approach[M].Translated by ZHEN Renjie,MA Suxia.7th ed.Beijing:China Machine Press,2011.(in Chinese)
[11]Atkinson C.基于構(gòu)件的產(chǎn)品線工程UML 方法[M].顧劍,鐘鳴,束堯,譯.北京:機械工業(yè)出版社,2015.Atkinson C.Component-based Product Line Engineering with UML[M].Translated By GU Jian,ZHONG Ming,SHU Yao.Beijing:China Machine Press,2005.(in Chinese)
[12]Hart J M.Windows 系統(tǒng)編程[M].戴鋒,陳征,譯.4版.北京:機械工業(yè)出版社,2010.Hart J M.Windows System Programming[M].Translated by DAI Feng,CHEN Zheng.4th ed.Beijing:China Machine Press,2010.(in Chinese)
[13]Russinovich M,Solomon D A,Ionescu A.Windows Internals(Part 1)[M].6th ed.Washington,USA:Microsoft Press,2012.
[14]張傳波.火球:UML 大戰(zhàn)需求分析[M].北京:中國水利水電出版社,2012.ZHANG Chuanbo.Fireball:UML Action Requirement Analysis[M].Beijing:China Water&Power Press,2012.(in Chinese)