馮初彥 任慧敏 童 心 常 春 吳 巍
北京航天自動控制研究所,北京 100854
隨著航天裝備系統(tǒng)信息化、智能化發(fā)展,新型作戰(zhàn)體系和未來作戰(zhàn)模式下的航天控制系統(tǒng)所承擔(dān)的任務(wù)日益復(fù)雜,迭代頻次日益加快。航天控制軟件涵蓋了航天型號的測試控制、發(fā)射控制、飛行控制、人機交互等各項工作,在航天飛行試驗中起著至關(guān)重要的作用。軟件集成聯(lián)試也是航天型號研制任務(wù)中最重要、耗時最長的環(huán)節(jié)之一。因此,聚焦關(guān)鍵軟件、縮減研制周期對提高航天型號研制效率具有重要意義[1-2]。
顯控軟件作為航天控制系統(tǒng)直接面向用戶的接口,承擔(dān)了系統(tǒng)顯示與控制等人機交互功能,是各型號必備的核心軟件。而傳統(tǒng)的顯控軟件通?;陂_發(fā)人員兼職UI設(shè)計的模式,UI設(shè)計與邏輯開發(fā)串行開展,界面設(shè)計與業(yè)務(wù)邏輯高度耦合,存在諸多痛點[3-5],這些都是當前軟件系統(tǒng)集成聯(lián)試的重要瓶頸,在現(xiàn)代航天工程應(yīng)用中,縮短顯控軟件開發(fā)周期、標準化顯控軟件研制亟待解決。
目前,顯控軟件界面設(shè)計與業(yè)務(wù)邏輯通常高度耦合,界面樣式調(diào)整均牽動代碼變更與重新編譯;由于前后端未剝離,UI設(shè)計與邏輯開發(fā)串行開展;存在用戶體驗差、開發(fā)時間成本高、返工風(fēng)險大、軟件不穩(wěn)定等問題。本文根據(jù)航天型號技術(shù)要求,將顯控軟件開發(fā)實現(xiàn)的功能需求梳理為界面需求、業(yè)務(wù)流程需求、底層通信需求和輔助模塊需求4大類。抽樣調(diào)查20個項目顯控軟件實現(xiàn)各類功能項所需時間,耗時均值如表1所示,耗時帕累托圖如圖1所示。由圖可見,界面開發(fā)耗時占顯控軟件研制耗時的60.4%,是顯控軟件研制耗時長的癥結(jié)。經(jīng)分析,界面開發(fā)環(huán)節(jié)中包含較多可優(yōu)化步驟,通過設(shè)計標準化、自動化的方法縮短界面開發(fā)耗時,顯控軟件的研制效率會大幅度提升。
圖1 顯控軟件各功能項開發(fā)耗時帕累托圖
表1 研制顯控軟件平均耗時
本文主要從人員培訓(xùn)、人員設(shè)計能力、設(shè)備配置、界面控件樣式數(shù)量、界面更改數(shù)量這5方面分析界面開發(fā)耗時長的原因,具體分析過程如下:
1)人員培訓(xùn)。統(tǒng)計近3年軟件開發(fā)人員培訓(xùn)學(xué)時,開發(fā)人員都經(jīng)過崗前培訓(xùn)及定期培訓(xùn),排除人員操作不熟練的因素。
2)人員設(shè)計能力。依據(jù)班組人員測評表,對人員的界面設(shè)計能力進行統(tǒng)計,抽取40個樣本數(shù)據(jù),通過散布圖分析人員設(shè)計能力對界面開發(fā)時間的影響。如圖2所示,界面設(shè)計能力與界面開發(fā)時間呈強負相關(guān)關(guān)系,確定其為影響顯控軟件界面開發(fā)耗時的關(guān)鍵因素。
圖2 界面設(shè)計時間與設(shè)計能力相關(guān)圖
3)設(shè)備配置。調(diào)查顯控軟件設(shè)計開發(fā)機器的配置情況。機器CPU至少4核,主頻不小于2GHz,硬盤不小于500G,內(nèi)存不小于4G,排除機器性能低的因素。
4)界面控件樣式數(shù)量。顯控軟件界面的控件種類及樣式較多,屬性樣式開發(fā)工作量巨大。調(diào)查50個顯控軟件的控件開發(fā),由圖3可以看出,控件樣式數(shù)量與界面開發(fā)時間呈正相關(guān),現(xiàn)代航天裝備系統(tǒng)顯控界面控件樣式日趨復(fù)雜多樣,控件屬性樣式數(shù)量多是造成界面開發(fā)耗時長的關(guān)鍵因素。
圖3 控件屬性樣式數(shù)量與界面開發(fā)耗時相關(guān)圖
5)界面更改數(shù)量。顯控軟件實現(xiàn)過程中存在頻繁更改和多次迭代,調(diào)查了50個顯控軟件界面更改條目數(shù),分析了界面更改條目數(shù)X與界面更改耗時Y之間關(guān)系,得到50組數(shù)據(jù)的分析結(jié)果。采用相關(guān)系數(shù)法進行計算:
(1)
(2)
(3)
(4)
N=50,α=0.05,查相關(guān)系數(shù)檢驗表,rα= 0.273,r= 0.966 >rα= 0.273。界面更改條目數(shù)與界面更改耗時呈強正相關(guān),可以確定界面更改調(diào)整多是造成界面開發(fā)耗時長的又一關(guān)鍵因素。
由上述分析可知,開發(fā)人員設(shè)計能力不足、控件屬性樣式數(shù)量多和界面更改調(diào)整多是界面開發(fā)耗時長的主要原因,從這3方面入手開展顯控軟件實現(xiàn)方法研究,可以大幅壓縮界面開發(fā)的時間,提高顯控軟件實現(xiàn)效率。
針對造成顯控軟件界面開發(fā)耗時長的關(guān)鍵因素[6],本文逐一設(shè)計了解決方法。針對1.2節(jié)原因2,細化團隊成員為開發(fā)角色和UI設(shè)計角色,選擇專業(yè)的UI設(shè)計師設(shè)計界面,提高界面設(shè)計效率;同時優(yōu)化流程,將UI設(shè)計環(huán)節(jié)提前至軟件需求階段,在軟件研制初期請專業(yè)的UI設(shè)計師溝通確認交互需求及布局要求,避免完成編碼后界面頻繁更改。針對1.2節(jié)原因4,采用模板庫加主題控件庫輔助快速設(shè)計,設(shè)計并封裝了航天訂制的界面設(shè)計工具AutoDesigner。針對1.2節(jié)原因5,設(shè)計了界面層與業(yè)務(wù)層分離的架構(gòu),通用化交互邏輯執(zhí)行框架AutoUI及界面接口測試工具UiTestSender。本方法涉及的UI資源文件主要包括界面設(shè)計.ui文件和圖片資源.rcc文件。
2.1.1 AutoDesigner
根據(jù)現(xiàn)代航天型號需求,設(shè)計封裝了跨平臺界面控件庫和航天主題模板庫,基于原生QTDesigner設(shè)計實現(xiàn)了航天訂制的一體化界面設(shè)計工具AutoDesigner,通過拖拽式布局,完成快速的界面設(shè)計與實時效果展現(xiàn),提供“所見即所得”的使用體驗。圖4為設(shè)計師使用AutoDesigner的設(shè)計窗口示例。
圖4 AutoDesigner設(shè)計窗口示例圖
1)跨平臺界面控件庫
設(shè)計開發(fā)多套不同風(fēng)格的控件庫,將設(shè)計風(fēng)格、交互效果等封裝進控件中,針對海陸空三軍裝備系統(tǒng)人機交互界面需求,形成航天訂制的VFrame鏈接庫,為AutoUI提供了跨平臺的組件化功能支持,避免控件重復(fù)開發(fā)、臨時控件可靠性差等問題。
設(shè)計實現(xiàn)的控件庫如表2示,各控件庫已經(jīng)涵蓋了下拉框、進度條、對話框、文本框、復(fù)選框、曲線、表格、按鈕、文本編輯組件、樹形結(jié)構(gòu)、三維GIS組件等。如圖5為部分控件展示,本文封裝設(shè)計了不同形態(tài)的環(huán)形、球形組件,以用戶友好的形式呈現(xiàn)航天試驗的系統(tǒng)狀態(tài)變化和參數(shù)值變化,同時設(shè)計3D火箭模型,支持旋轉(zhuǎn)、縮放、場景變換等,可視化仿真火箭的飛行姿態(tài)變換和飛行軌跡等。
表2 控件庫風(fēng)格
圖5 控件庫部分控件展示
2)航天主題模板庫
作為承擔(dān)流程測試、虛擬顯示、數(shù)據(jù)處理等重要功能的用戶接口,顯控軟件在航天試驗中扮演著重要的人機交互角色,同時擁有復(fù)雜的用戶群體和多變的使用場景。不同用戶對軟件界面有不同需求,將不同需求分類整理,繪制用戶雕像,如表3。
考慮顯控軟件的軟件功能、應(yīng)用場景、用戶偏好等需求,本文依據(jù)典型用戶的用戶雕像分別設(shè)計不同風(fēng)格的界面圖元及模板。針對艙內(nèi)或艇內(nèi)環(huán)境比較昏暗的場景,設(shè)計深色、柔和背景;針對車內(nèi)、船艙等環(huán)境比較顛簸的場景,采用寬松布局,用戶交互面積增大,視覺反差也適當增強[7]。圖6為主題模板示例展示。
圖6 主題模板示例
通過航天訂制的控件庫及主題模板庫的配合,開發(fā)人員使用AutoDesigner拖拽控件生成.ui設(shè)計文件,實現(xiàn)0編碼完成“所見即所得”的界面搭建。AutoDesigner將界面資源壓縮封裝成二進制級別的.rcc文件,使得界面框架可以跨平臺使用多種界面資源,并且快速完成資源加載,達到界面快速換膚的效果。.ui設(shè)計文件和.rcc圖片資源文件作為通用化交互邏輯執(zhí)行框架AutoUI的UI資源輸入,負責(zé)顯控軟件的所有界面圖形呈現(xiàn)效果[8]。
當遇到界面的布局調(diào)整、控件刪減、主題風(fēng)格更改、亮度調(diào)整、換膚、字體調(diào)整等前端需求時,只需借助AutoDesigner重新拖拽調(diào)整.ui文件,并將更新后的UI資源文件部署到相應(yīng)目錄,顯控軟件運行時,代碼執(zhí)行框架自動加載更新后的UI資源文件,即可實現(xiàn)前端界面更改。同時,根據(jù)需求不斷迭代更新控件庫和主題模板庫,保證及時獲得目標素材。
2.1.2 通用化交互邏輯執(zhí)行框架AutoUI
通用化交互邏輯執(zhí)行框架AutoUI采用用戶接口驅(qū)動、實時數(shù)據(jù)響應(yīng)的運行機制,應(yīng)用Qt跨平臺組件庫實現(xiàn)用戶服務(wù)與人機交互接口多路由動態(tài)綁定,使得系統(tǒng)控制端與人機交互端“一對一”、“一對多”、“多對一”、“多對多”的設(shè)計架構(gòu)成為現(xiàn)實??蚣苁褂每煽康倪h程跨進程通信調(diào)用,將由用戶發(fā)起的界面輸入事件與數(shù)據(jù)發(fā)送給業(yè)務(wù)執(zhí)行端,并將業(yè)務(wù)執(zhí)行端的系統(tǒng)狀態(tài)及測試數(shù)據(jù)以用戶可接收的形式顯示輸出,最大程度抽離出了顯控軟件的通用代碼邏輯,形成顯控軟件界面可重用框架,能夠使新型號研制時,開發(fā)人員專注于業(yè)務(wù)邏輯,UI設(shè)計師專注于UI設(shè)計[9-10]。
AutoUI包括資源解析模塊、數(shù)據(jù)控制模塊和通信路由模塊,如圖7所示。
圖7 通用化交互邏輯執(zhí)行框架AutoUI模塊示意圖
資源解析模塊負責(zé)加載基于xml的UI資源文件,并進行解析處理。對于UI界面更改的需求,只需通過AutoDesigner調(diào)整界面控件布局得到新的.ui文件,AutoUI框架加載新的.ui文件和.rcc文件并根據(jù)其進行界面場景與組件的實例化,無需更改界面代碼,也無需重新編譯界面代碼[11-12]。
數(shù)據(jù)控制模塊負責(zé)通訊數(shù)據(jù)定義、數(shù)據(jù)傳輸、以及從業(yè)務(wù)數(shù)據(jù)源到用戶數(shù)據(jù)的響應(yīng)控制與反饋。通訊數(shù)據(jù)定義了8類Action和37類Operation,Action結(jié)構(gòu)體表征選中控件時的行為,Operation結(jié)構(gòu)體表征交互操作動作。該模塊以多個顯示界面為目標進行數(shù)據(jù)的后臺自動拷貝分發(fā),替代手動重復(fù)發(fā)送數(shù)據(jù),完成人機交互雙向控制處理,保證多個人機交互終端數(shù)據(jù)展示與控制反饋的同步一致性,實現(xiàn)了多界面克隆同步[13]。
通信路由模塊集成了QY977航天標準以太網(wǎng)通信接口協(xié)議,基于xml通信配置文件進行多個終端的IP地址和端口號配置,在控制系統(tǒng)測發(fā)控平臺多個控制終端與多個顯示控制平臺之間建立連接,通過多終端多路由解析與控制,基于遠程跨進程通信實現(xiàn)完備的控制-反饋交互架構(gòu),完成了用戶與控制終端的“一對多”、“多對多”交互[14]。
2.1.3 界面接口測試工具UiTestSender
界面接口測試工具(UiTestSender) 封裝了業(yè)務(wù)層與界面層交互接口動態(tài)仿真運行的模塊,包括客戶應(yīng)用請求接口和人機交互反饋接口??蛻魬?yīng)用請求接口包含的數(shù)據(jù)內(nèi)容有:操作主對象、操作子對象、操作動作、動作附帶數(shù)據(jù)、保留項;人機交互反饋接口包含的數(shù)據(jù)內(nèi)容有:產(chǎn)生動作的對象所屬的頂層父對象、產(chǎn)生動作的對象、動作、動作附帶的數(shù)據(jù)等。
UiTestSender保證該界面框架中,業(yè)務(wù)應(yīng)用與界面設(shè)計之間的接口有效性與功能完備性。同時,通過測試數(shù)據(jù)的動態(tài)配置,使得系統(tǒng)可以在應(yīng)用業(yè)務(wù)實現(xiàn)前展現(xiàn)系統(tǒng)的人機交互功能。
如圖8所示,本文設(shè)計了界面層與業(yè)務(wù)層分離的前后端解耦架構(gòu)[15],將界面層拆分為一個可靈活改變的UI資源文件和一個通用化交互邏輯執(zhí)行框架AutoUI,同時設(shè)計一體化界面設(shè)計工具AutoDesigner和界面接口測試工具UiTestSender,為開發(fā)人員提供了快速搭建界面和交互接口動態(tài)仿真測試的便捷手段。設(shè)計人員通過使用界面設(shè)計工具AutoDesigner,拖拽控件即可生成.ui設(shè)計文件,通用化界面執(zhí)行框架AutoUI通過加載UI資源文件,調(diào)用VFrame鏈接庫完成界面的渲染。通過UiTestSender模擬人機交互接口的數(shù)據(jù)收發(fā),開發(fā)人員可以脫離業(yè)務(wù)完成界面人機交互仿真運行測試,降低了代碼測試對系統(tǒng)環(huán)境的要求[16]。
圖8 顯控軟件架構(gòu)圖
當人機交互軟件的需求變更時,只需更改UI文件或業(yè)務(wù)層代碼,而AutoUI不用更改。特別是當只要求界面樣式調(diào)整而不涉及業(yè)務(wù)層需求變更時,只需拖拽調(diào)整界面并重新生成UI資源文件,AutoUI自動加載更新后的UI文件即可實現(xiàn)樣式變化,無需重新編譯與驗證軟件代碼,剝離前端界面與業(yè)務(wù)代碼。
如圖9所示為采用本文方法和傳統(tǒng)方法的顯控軟件設(shè)計開發(fā)流程對比圖,通過采用本文的前后端分離設(shè)計架構(gòu),人機交互軟件的界面設(shè)計與業(yè)務(wù)邏輯編碼實現(xiàn)高度解耦,為團隊角色細分與研制流程優(yōu)化提供了必要條件。一方面,細化團隊成員為開發(fā)角色和UI設(shè)計角色。由于該方法設(shè)計了所見即所得的“0編碼”界面設(shè)計工具AutoDesigner,UI設(shè)計無需和編碼開發(fā)綁定,因此可以選擇專業(yè)的UI設(shè)計師溝通確認交互需求與界面布局要求,提高界面設(shè)計效率與用戶滿意度。另一方面,請專業(yè)的UI設(shè)計師在研制初期直接對接界面需求,編碼開發(fā)與界面設(shè)計并行開展[17-18]。
由圖9可以看出,對于界面變更,采用傳統(tǒng)方法需要再次經(jīng)過開發(fā)人員界面設(shè)計、開發(fā)人員編碼、代碼編譯、代碼測試、試驗聯(lián)調(diào)5個環(huán)節(jié),而采用本文方法只需要UI設(shè)計師界面設(shè)計、試驗聯(lián)調(diào)2個環(huán)節(jié)?;赨I控件拖拽、UI資源文件生成與加載來實現(xiàn)軟件界面設(shè)計和更改,脫離編碼與代碼編譯,避免完成編碼后界面頻繁更改帶來的代碼反復(fù)迭代與編譯,減少返工與溝通成本。
圖9 顯控軟件設(shè)計開發(fā)流程圖
該方法集成QY977航天標準以太網(wǎng)通信接口協(xié)議,通過多終端多路由交互,基于遠程跨進程通信實現(xiàn)完備的控制-反饋交互產(chǎn)品架構(gòu)。圖10所示為采用該方法的多終端人機交互訪問示意圖,本文以3個控制終端交互為例。運行在顯控處理單元的顯控軟件包括3個主界面,分別對應(yīng)飛行器1、飛行器2、雙飛行器模式。其中,飛行器1界面為控制軟件1的人機交互接口,飛行器2界面為控制軟件2的人機交互接口,雙飛行器界面同時顯示飛行器1、飛行器2和控制軟件3的狀態(tài)數(shù)據(jù)。若用戶在飛行器1界面發(fā)起界面輸入事件,點擊開始測試項目的按鈕,AutoUI將數(shù)據(jù)發(fā)送給控制軟件1的業(yè)務(wù)執(zhí)行端,并將該測試項目的執(zhí)行狀態(tài)及測試數(shù)據(jù)按照設(shè)計好的交互顯示形式在飛行器1界面輸出,同時,AutoUI將請求到的飛行器1數(shù)據(jù)同步分發(fā),反饋至雙飛行器界面中,若用戶將人機交互軟件切換到雙飛行器界面,也可以獲取一致的飛行器1信息數(shù)據(jù)[19]。類似地,用戶也可以通過飛行器2界面與控制軟件2進行人機交互,同時也能在雙飛行器界面中同步獲取飛行器2界面的信息數(shù)據(jù)。
圖10 多終端人機交互訪問示意圖
基于該方法的顯控軟件需要處理若干個并發(fā)事件,以顯控軟件與控制軟件1的交互為例,涉及的事件名稱和功能如表4,顯控軟件與其他控制軟件的交互事件類似。為了確保多個控制終端理事件可靠、獨立地并行運行,軟件需采用多任務(wù)設(shè)計,包括各控制軟件命令接收、各控制終端界面動作接收、心跳監(jiān)控處理、流程同步控制、默認界面動作接收處理等多個獨立任務(wù),其中相同類型的不同任務(wù)可以作為同一任務(wù)處理函數(shù)的不同實例存在。
表4 顯控軟件與終端交互事件說明
本文依據(jù)上述關(guān)鍵技術(shù)基于Qt完成了代碼編寫與測試工作,實現(xiàn)了通用化交互邏輯執(zhí)行框架AutoUI,航天訂制的“所見即所得”界面設(shè)計工具AutoDesigner,界面接口測試工具UiTestSender,現(xiàn)從3個方面闡述顯控軟件快速實現(xiàn)的優(yōu)化效果。
1)航天訂制的界面設(shè)計工具AutoDesigner實踐效果
統(tǒng)計10個顯控軟件的界面控件開發(fā)時間,分別采用傳統(tǒng)方法和航天訂制的界面設(shè)計工具AutoDesigner進行界面搭建,耗時對比如表5所示,采用本文的快速設(shè)計方法平均耗時節(jié)省40.8h。
表5 采用航天訂制的界面設(shè)計工具AutoDesigner和傳統(tǒng)方法耗時對比
2)通用化交互邏輯執(zhí)行框架AutoUI實踐效果
分別采用通用化交互邏輯執(zhí)行框架AutoUI和傳統(tǒng)方法實現(xiàn)顯控軟件界面的交互邏輯,統(tǒng)計10個顯控軟件的界面交互邏輯開發(fā)時間對比如表6所示,采用本文的通用化交互邏輯執(zhí)行框架AutoUI平均耗時節(jié)省91h。
表6 采用通用化交互邏輯執(zhí)行框架AutoUI和傳統(tǒng)方法耗時對比
3)快速實現(xiàn)方法整體實踐效果
采用2.1節(jié)測試的同一組項目對本文所提方法的實踐效果做測試,20個項目中顯控軟件的設(shè)計實現(xiàn)耗時均值如表7所示,對比表1,研制顯控軟件平均耗時由776.6h降至584h,平均耗時縮減24.8%。由此可見,本文設(shè)計的基于UI資源的顯控軟件快速實現(xiàn)方法提高顯控軟件研制效率的效果顯著,整體案設(shè)計合理實用。
表7 基于UI資源的顯控軟件快速實現(xiàn)方法耗時均值
基于該方法的顯控軟件可部署在Windows、Linux等操作系統(tǒng)上,廣泛適用于混合異構(gòu)系統(tǒng)下各種可視化平臺。該方法研制的顯控軟件目前已經(jīng)在3個重大裝備項目中投入使用,并成功參與了多次飛行試驗,為型號研制降本增效。
主要針對傳統(tǒng)顯控軟件研制時間長、用戶體驗差等問題展開研究,提出了一種使用UI資源的顯控軟件快速實現(xiàn)方法。該方法提供航天訂制的“所見即所得”界面設(shè)計工具AutoDesigner,通用化交互邏輯執(zhí)行框架AutoUI和界面接口測試工具UiTestSender,實現(xiàn)了界面與業(yè)務(wù)前后端高度解耦、并行設(shè)計。針對海陸空三軍裝備系統(tǒng)的人機交互需求,提供多風(fēng)格UI控件庫與主題模版庫,統(tǒng)一界面設(shè)計規(guī)范,極大提升了界面搭建效率與用戶交互體驗。同時,該方法提供基于UI資源的加載、解析與界面變更功能,開放易于擴展和跨平臺的功能接口,方便二次開發(fā),為顯控軟件快速迭代提供了高效、可靠的技術(shù)手段。