郝 恒,熊廷坤,江 華,姜永廣,賴增桂,武 明
(中國電子科技集團公司 第三十研究所,四川 成都 610041)
近年來,高新技術的迅速發展和廣泛應用,快速推動了武器裝備的更新和作戰方式的演變,信息化戰爭將成為未來戰爭的基本形態[1]。為適配國產化自主可控需求,國產化跨平臺軟件研制成為熱點和焦點。以網管系統為例,今后一定時間內,滿足在Windows、銀河麒麟等多種操作系統上跨平臺運行的網管軟件將成為一種發展趨勢。
目前常見的國產化基礎軟件環境包括以中標、銀河麒麟操作系統為代表的國產操作系統,以武漢達夢、人大金倉為代表的國產數據庫管理系統,國產化基礎硬件環境包括基于龍芯、飛騰CPU解決方案的各類終端和服務器設備[2]。本文圍繞底層操作系統國產化、硬件平臺強適配性、多場景靈活部署等發展需要[3],以“銀河麒麟操作系統+飛騰CPU”的國產化解決方案為例,基于Qt5.9開發環境,提出了一種面向國產化跨平臺的網管軟件設計與實現方法。
飛騰公司是中國國防科技大學高性能處理器研究團隊建立的企業,國防科技大學多年來在CPU領域積累了很雄厚的技術實力。飛騰公司在2016年推出了FT-2000(代號為“火星”),并在2017年流片了優化升級的FT-2000+芯片,后者是飛騰目前最頂尖也是性價比最高的芯片產品,其實測性能達到了2014年Intel至強E5主流服務器芯片的水平。FT-2000+芯片目前在服務器領域有較好的市場份額[4]。為確保軟件研制,本課題采購了國產化計算機,處理器分別為飛騰2000和飛騰1500A;同時提供了非國產化的普通型臺式計算機用于驗證網管軟件的跨平臺能力。
“銀河麒麟”操作系統是由國防科技大學、中軟公司、聯想公司、浪潮集團和民族恒星公司合作研制的閉源服務器操作系統。此操作系統是“863”計劃重大攻關科研項目,目標是打破國外操作系統的壟斷,研發一套具有中國自主知識產權的服務器操作系統[4]。“銀河麒麟”操作系統具有高安全性、高可用性、強實時性、可擴展性和軟硬件適配性等特點,系統整體性能與國際主流Unix操作系統相當,部分性能指標以及實時性指標更好[5],已在國防、軍工、政務、電力、航天、金融、電信、教育、大中型企業等行業或領域得到廣泛應用。本文網管軟件在設計時考慮了能夠同時支持銀河麒麟操作系統(以X86為代表的國際主流CPU和以飛騰為代表的國產安全CPU)和Windows 7操作系統的運行。
跨平臺是指編程語言、軟件、硬件設備可以在多種平臺上運行工作[4]。Qt是一套應用程序開發類庫,但與MFC不同,Qt是跨平臺的開發類庫[6]。不同于Java開發的軟件“一次編譯,到處運行”,Qt開發的軟件具備“代碼級跨平臺”能力,實現源代碼級別的復用,即“程序一次編寫,隨處編譯運行”。跨平臺意味著只需編寫一次程序,在不同平臺上無需改動或只需少許改動后再編譯,就可以形成在不同平臺上運行的版本。這種跨平臺功能給開發者提供了極大的便利[6]。
本文基于Qt5.9開發環境,提出了一種面向國產化跨平臺的網管軟件設計與實現方法。該方法能夠適配飛騰版銀河麒麟操作系統+CPU(飛騰2000/飛騰1500A)。同時,該網管軟件支持在X86版銀河麒麟操作系統和Windows 7操作系統上進行開發、安裝部署,其具備了“代碼級跨平臺”能力。
隨著國產化平臺的不斷發展,國產化硬件設備性能的不斷提升,在國產化平臺下開發及運行網管軟件成為必然[8]。一般情況下,網管軟件的主要功能由通信資源管理、網絡拓撲管理、參數編輯/配置管理、設備管理、性能管理、故障/告警管理、連通性測試、網絡狀態監控和日志管理等模塊組成。目前,國產化跨平臺的網管軟件除了實現其主要功能,還迫切需要解決以下三個方面的問題:
(1)操作系統及軟件國產化,確保核心技術自主可控;
(2)適配國產化硬件環境,實現系統平穩跨越和靈活部署;
(3)應對未來國產化環境新需求,支撐網管系統快速開發、迭代與應用。
因此,針對上述問題和需求,有必要面向當前網管系統的典型應用場景,構建一種以國產操作系統為底層支撐,支持跨平臺開發編譯工具的網管軟件,實現網管軟件的多場景適配、多硬件平臺復用、快速開發與靈活部署[3]。
國產化跨平臺的網管軟件架構如圖1所示。

圖1 國產化跨平臺的網管軟件架構
在統一架構的共性基礎平臺框架上,國產化跨平臺的網管軟件設計考慮以下幾點:
(1)基于Qt和“插件化”模塊思想,快速構建松耦合的、可靈活擴展的國產化跨平臺網管軟件;實現了國產化網絡管理功能的快速組裝與迭代。
(2)具備“代碼級”跨平臺能力,支持Windows 7、銀河麒麟操作系統(X86版和飛騰版)的開發、部署能力。
(3)具有多分辨率自適應能力,支持觸摸屏操作。
(4)窗體重繪控制,對縮放和圖形屬性設置等窗體的基本操作均會造成窗體繪圖事件函數的反復執行。通過優化重繪算法,降低CPU和內存使用資源的占用率。
(5)劃分圖層,實現界面分層繪制網絡管理信息。
(6)支持多種界面樣式,實現了多種界面風格,達到界面快速換膚的效果。
(7)適配不同Qt版本軟件平臺框架的集成環境,支持不同集成框架的消息發布/消息訂閱處理。
(8)多種消息處理機制,基于主題進行事件的訂閱和發布、消息sendMessage和receiveMessage和信號槽處理方式。
(9)日志記錄,提供日志記錄和異常捕獲功能,用于記錄和顯示軟件運行時產生的日志,捕獲進程異常崩潰。
Qt是一個多平臺的C++圖形用戶界面應用程序框架,并且提供了大量的圖形控件。開發人員以拖放的方式從控件面板添加相應的控件對象,通過控件屬性編輯框,可以設定控件的標題、大小、位置、顏色、圖片、字體、事件響應方式等屬性。提供給用戶的操作方式有:區域放大、縮小、圖層上下級切換、拓撲連接繪圖;鼠標右鍵出現菜單選項、通過鍵盤左右移動被管對象;各類按鈕、信號事件和鼠標鍵盤事件響應等。
基于Qt5.9開發環境,實現了國產化跨平臺的網管軟件,該軟件開發環境見表1所列。

表1 軟件開發環境要求
國產化跨平臺的網管軟件實現主要由3部分組成,分別為軟件運行框架、功能插件和配置文件/資源文件,如圖2所示。采用“插件式”軟件開發模式,國產化跨平臺的網管軟件功能可以按需擴展軟件管理能力。

圖2 國產化跨平臺網絡監控軟件組成圖
軟件運行框架:軟件運行的框架實例,為軟件運行提供最基本的框架。
功能插件:軟件功能模塊的一種實現形式,按照約定的規范設計,具有標準調用接口,并獨立封裝為動態鏈接庫DLL文件或SO文件。
配置文件/資源文件:各個插件的描述文件(.xml)、軟件運行所需的腳本或其他參數配置文件、資源文件等。
在國產化應用環境構建初期,沒有成熟的方法和經驗可供借鑒,無法用現有的理論方法給予支撐和解決,需要在大量的應用和不斷試錯中總結提升[9]。因此,在國產化跨平臺的網管軟件實現過程中積累了大量的適配方法或開發經驗,并高效解決了軟硬件深度適配和多重適配問題,為后續軟件規模化國產化替代進行了積極有效的技術路徑嘗試和經驗積累。
基于Qt5.9開發環境,本次跨平臺軟件適配環境為“銀河麒麟操作系統+CPU(FT1500A和2000)”。在跨平臺軟件適配過程中,形成了以下幾點經驗。
(1)不同Qt版本庫差別引起軟件集成后不能正常運行的問題:Qt4.8和Qt5.9開發的軟件在同一臺計算機共存,由于2個Qt版本本身區別很大,導致軟件無法兼容運行,故網管軟件運行時配置所需Qt5.9版本的庫文件路徑,不同軟件集成框架各自使用各自的Qt庫文件;如不同Qt版本軟件有接口調用的Qt庫文件,則單獨編譯一個QT5.9版本庫文件供網管軟件使用。
(2)不同操作系統定義的數據類型長度值不同,具體情況見表2所列。

表2 不同操作系統數據類型長度值的差別情況
(3)中文亂碼顯示或不識別(例如:中文名稱,中文路徑、中文日志等):由于UTF-8和GB2312編碼格式對中文處理不一樣,需采用成對匹配的編碼格式進行中英文轉換;例如toStdString().c_str()和QString::fromStdString()、toLocal8Bit().data()和 QString ::fromLocal8Bit()。
(4)嚴格的字母大小寫敏感性(例如:頭文件):在銀河麒麟操作系統中,編譯過程中對字母大小寫非常敏感,需要嚴格的保持一致,才能確保編譯通過。
(5)集成框架從桌面運行網管程序的啟動路徑有差別。實踐表明,如果被集成軟件通過QDir::currentPath()獲取軟件可執行文件所在路徑,那么不同集成框架處理方式會導致被集成軟件獲取資源文件(例如圖片和配置文件)路徑存在差異(雙擊桌面快捷方式運行集成框架軟件和程序所在文件夾目錄運行EXE可執行文件)。考慮兼容不同集成框架環境,可將QDir::currentPath( )修改為QApplication ::applicationDirPath()或 QCoreApplication ::applicationDirPath( )獲取軟件可執行文件路徑。修改后,不同集成框架的軟件啟動方式對被集成軟件獲取其資源文件路徑無影響。
在網絡管理、安全管理、運維控制等領域,為滿足國產自主可控需求,適應當前及未來國產化發展趨勢,本文提出了基于“銀河麒麟操作系統+飛騰CPU”國產自主環境的網管軟件設計與實現方法。通過項目研制結果表明,國產化跨平臺的網管軟件功能和性能均滿足指標要求,突破了多種國產化跨平臺環境適配的關鍵技術,達到了適配多種國產化操作系統的能力;有效提升了目前裝備軟件國產化水平,具有較高的工程應用價值[1]。后續將在此研究基礎上豐富網絡管理內容,使其支持自動化部署[10],并提高代碼復用率,進一步降低軟件維護成本。