劉宇軒,宋躍進(jìn),張振華,霍文健,段宇江
(1.北方自動控制技術(shù)研究所,太原 030006;2.中國兵器科學(xué)研究院,北京 100089)
現(xiàn)役空降兵火控系統(tǒng)基于陸軍體制進(jìn)行適配,采用車載終端,未從空降體系對裝備小型化、輕量化、攜行化的特定作戰(zhàn)需求統(tǒng)籌考慮。戰(zhàn)士在空降以后,必須尋找炮車、登上炮車才可以執(zhí)行作戰(zhàn)任務(wù)。而使用移動終端戰(zhàn)士可以使用移動終端對所有炮車進(jìn)行定位,合理規(guī)劃、動態(tài)接入距離最近的炮車,實現(xiàn)車下遠(yuǎn)程操控,完成作戰(zhàn)任務(wù)。而且隨著現(xiàn)代戰(zhàn)爭戰(zhàn)場環(huán)境日益復(fù)雜,陸軍火控系統(tǒng)也要求裝備小型、輕量、攜行,以應(yīng)對不同的作戰(zhàn)要求。使用手持無線移動終端代替?zhèn)鹘y(tǒng)的車載火控終端[1],成為了火控系統(tǒng)發(fā)展的一個必然趨勢。
車載終端火控系統(tǒng)軟件架構(gòu)參考MVC(模型(Model)、視圖(View)、控制器(Controller)),采用將視圖與控制器分離的模式設(shè)計,但由于車載終端與移動終端在硬件條件、交互方式、使用環(huán)境等方面有很大的不同,其軟件架構(gòu)并不能直接適配于移動終端中,移動終端火控系統(tǒng)尚缺乏一種較為完備且通用的軟件架構(gòu)。
面對這種問題的出現(xiàn),同時兼顧移動終端的特性,基于此,本文通過設(shè)計劃分原有火控系統(tǒng)功能軟件、改變通信機(jī)制、分析移動終端的交互特性及具體需求,提出一種適用于移動終端的以交互層(Interaction)、中介層(Mediator)和數(shù)據(jù)訪問層(Data Access)為框架的火控系統(tǒng)軟件架構(gòu)。
移動終端與車載終端相比,硬件資源更加受限,主要表現(xiàn)在:屏幕的大小、數(shù)據(jù)存儲能力、計算能力、電池的容量以及通信的成本等方面。傳統(tǒng)車載終端軟件架構(gòu)參考MVC 模型[2],如圖1 所示,采用將視圖與控制器分離的軟件架構(gòu)。
圖1 MVC 架構(gòu)模型
這一設(shè)計在車載終端中的優(yōu)勢是,保證了系統(tǒng)構(gòu)建的低耦合性,提高了程序的靈活性和可維護(hù)性。但在移動終端中會大大增加程序的代碼量,并且,視圖與控制器兩個組件之間的大量傳遞數(shù)據(jù),會耗費一定的時間,無法滿足移動終端快速語義反饋的需求;另一方面也會增加兩個組件之間的通信數(shù)據(jù)量,增大軟件系統(tǒng)的功耗,無法滿足移動終端低功耗的需求。
車載終端使用屏邊按鍵作為唯一的輸入方式,既不同于人們常用的計算機(jī)鼠標(biāo)鍵盤輸入,也不具備移動設(shè)備的觸屏輸入,不能對交互對象進(jìn)行直接準(zhǔn)確的選擇,戰(zhàn)士需要將任務(wù)信息抽象成設(shè)備可以識別的模式進(jìn)行操作,只能通過上移下移等二維操作進(jìn)行選定對象,大大降低了任務(wù)操作中的效率,無法滿足移動終端操作簡單、學(xué)習(xí)成本低以及交互高效的需求[3]。
移動終端更貼近戰(zhàn)士的生活,有較低的學(xué)習(xí)成本。戰(zhàn)士只需要在交互界面上進(jìn)行點擊、滑動等操作,由移動終端將信號轉(zhuǎn)化為設(shè)備可識別的指令信息,完成操作。如圖2 所示。
圖2 車載終端與移動終端的人機(jī)交互方式對比
終端將所有戰(zhàn)術(shù)功能集成為一個軟件,導(dǎo)致易用性較差,戰(zhàn)士完成所有的任務(wù)都需要從主界面開始,一步一步地進(jìn)行操作,交互流程復(fù)雜且冗余,無法直接定位到想要看到的信息、想要執(zhí)行的操作。
移動終端根據(jù)任務(wù)之間的關(guān)聯(lián)性,更科學(xué)的將作戰(zhàn)流程劃分為多APP 的設(shè)計,如作戰(zhàn)應(yīng)用、系統(tǒng)維護(hù)、報文管理、地圖導(dǎo)航等,任務(wù)多具有臨時性。故車載終端無法滿足移動終端多任務(wù)之間的數(shù)據(jù)共享、任務(wù)遷移以及多APP 間的相互調(diào)用和資源互斥管理的需求。
在車載終端的軟件模式中,各個組件之間采用直接通信,而且移動終端采用圖形界面與手勢輸入相結(jié)合的交互方式,具有高連續(xù)性,緊密的輸入輸出的特點,如果采用原有通信方式,會給系統(tǒng)帶來極大的通信負(fù)擔(dān)。
在移動終端的軟件架構(gòu)中,對原有的MVC 模型進(jìn)行改進(jìn),將視圖與控制器結(jié)合,以此適應(yīng)移動終端手勢輸入交互模式下,輸入輸出過于緊密的特性。在層與層之間的通信采用事件全局廣播與粗粒度通信相結(jié)合的通信方式,采用事件全局廣播的設(shè)計,使每一層不需要時刻監(jiān)視各個組件的當(dāng)前狀態(tài)信息,而是可以對相應(yīng)的組件廣播進(jìn)行注冊,這樣就可以接收到組件的狀態(tài)信息,從而作出響應(yīng)。粗粒度通信可以大大降低系統(tǒng)復(fù)雜度,因為移動終端采用手勢交互,所以用戶的操作具有連續(xù)性。例如用戶在屏幕上用手指劃出一個不規(guī)則的軌跡,如果采用細(xì)粒度通信,系統(tǒng)需要軌跡上每個點精確地計算出坐標(biāo)位置,然后構(gòu)成完整的操作軌跡,這樣的通信開銷對于移動終端而言是無法接受的。
所見即所得是這樣一種狀態(tài):你在屏幕上看到的就是結(jié)果,即用戶不需要過多地考慮,進(jìn)行保存設(shè)置或編輯以后應(yīng)該是什么樣子直接可以呈現(xiàn)在屏幕上[4,7]。例如對一個復(fù)選框進(jìn)行操作,直接勾選即可自動保存,不需要再點擊“保存”或者“應(yīng)用”[10]。
移動終端的交互設(shè)計具體包括以下幾個方面:
1)可學(xué)習(xí)性
用戶在已有知識和經(jīng)驗以及系統(tǒng)提示或幫助的基礎(chǔ)下,無需花費過多時間思考即可正確理解交互界面,可學(xué)習(xí)性主要是指:了解當(dāng)前界面能夠進(jìn)行哪些操作,接下來能進(jìn)行哪些操作并且能夠快速辨別界面中的組件并明確其具體功能。
2)一致性
在相似的場景下,一方面要與生活中移動設(shè)備的APP 保持一致,另一方面不同的界面中保持一致。主要體現(xiàn)在以下方面:視覺效果、交互行為、操作結(jié)果。保持一致性可以降低用戶的學(xué)習(xí)成本。
3)及時反饋
當(dāng)用戶對界面組件進(jìn)行任何操作后,都應(yīng)及時給予反饋,讓用戶了解操作是否生效。反饋的內(nèi)容主要是指:用戶操作反饋和元素狀態(tài)反饋。用戶操作反饋是指界面中的元素在用戶執(zhí)行操作時元素的變化反饋;元素狀態(tài)反饋是指,當(dāng)被操作元素運行中需要用戶等待或者出現(xiàn)錯誤時的反饋。
4)容錯性
軟件應(yīng)允許用戶操作錯誤,并在犯錯后給用戶重新嘗試的機(jī)會。在設(shè)計交互時,要盡量幫助用戶避免犯錯,在交互過程中給予用戶幫助或者提示。當(dāng)錯誤發(fā)生后,需要提供撤銷返回功能,使用戶返回至上一步重新進(jìn)行操作,并給予相應(yīng)的提示。
在移動終端的環(huán)境下,用戶需要對多個app 進(jìn)行操作來完成一個完整的作戰(zhàn)流程。例如,在報文管理app 中收到報文信息后跳轉(zhuǎn)至作戰(zhàn)應(yīng)用app 使用報文信息進(jìn)行下一步操作,在這個過程中兩個關(guān)鍵的需求是實現(xiàn)app 間的相互調(diào)用以及數(shù)據(jù)傳遞。實現(xiàn)app 間的交互和通信,最常見的是使用Intent函數(shù)。Intent 函數(shù)負(fù)責(zé)對app 中一次操作的動作、動作涉及的數(shù)據(jù)進(jìn)行描述,操作系統(tǒng)根據(jù)此描述找到對應(yīng)的app,將Intent 傳遞給被調(diào)用的app。這個方法的缺陷是當(dāng)涉及兩個以上的app 交互時,數(shù)據(jù)傳遞效率低下,每一級傳遞都需要進(jìn)行讀取,重新寫入Intent 函數(shù)的操作,而采用Bundle 函數(shù)進(jìn)行數(shù)據(jù)傳遞時,只需要將Bundle 傳遞即可,所以本架構(gòu)采用Intent 函數(shù)進(jìn)行app 間的跳轉(zhuǎn)與Bundle 函數(shù)進(jìn)行數(shù)據(jù)傳遞相結(jié)合的方法。
本文從傳統(tǒng)車載終端軟件架構(gòu)借鑒的同時,考慮到移動終端的特定需求[6,8],結(jié)合民用移動平臺的發(fā)展趨勢[5,9],基于安卓操作系統(tǒng),提出了IMDA軟件架構(gòu)模型,將軟件系統(tǒng)分為3 個層次,如圖3所示。
圖3 IMDA 軟件邏輯架構(gòu)分層圖
交互層I 主要由View、Activity 和XML 文件組成。負(fù)責(zé)和用戶直接進(jìn)行交互。主要由兩方面的功能,一方面是用戶通過手勢交互,將信息輸入,交互層獲取用戶輸入的信息。另一方面,交互層將軟件系統(tǒng)的處理結(jié)果輸出顯示給用戶。將輸入與輸出結(jié)合,采用粗粒度通信的機(jī)制,并將用戶界面切換的邏輯放在交互層,減少與底層的通信,以此來滿足移動終端對通信和能耗的高需求。一個應(yīng)用中有多個Activity,Activity 使用方法setContentView 調(diào)用對應(yīng)得View 顯示在屏幕中。每一個Activity 都可以使用方法startActivity 啟動其他的Activity,從而滿足用戶的切換功能。當(dāng)用戶執(zhí)行操作時,一個新的Activity 啟動,原先的Activity 會暫時掛起,放入后臺棧中,遵循先進(jìn)后出的原則,當(dāng)用戶完成操作后,返回原先的Activity。在View 中注冊并綁定事件監(jiān)聽器,如果XML 文件發(fā)生變化,Activity 會重新加載View。Activity 通過Bundle 函數(shù)進(jìn)行通信,提高傳輸效率。事件轉(zhuǎn)換器用于實現(xiàn)語義的轉(zhuǎn)換,將低級的、具體的用戶事件轉(zhuǎn)換為高級的、抽象的計算機(jī)可識別的指令,把指令傳遞給中介層的事件處理器進(jìn)行處理。
中介層M 由多種算法以及事件轉(zhuǎn)換器組成,算法包括處理接口與各類數(shù)據(jù)的交換、對進(jìn)程的控制及處理app 間的交互和通信。事件轉(zhuǎn)換器主要負(fù)責(zé)接收交互層傳遞的抽象事件,將其分解成統(tǒng)可執(zhí)行的原子命令,并進(jìn)行封裝。進(jìn)而調(diào)用數(shù)據(jù)訪問層的接口,實現(xiàn)后臺的方法間的映射關(guān)系,完成進(jìn)程控制和語義轉(zhuǎn)換。
數(shù)據(jù)訪問層DA 主要包括數(shù)據(jù)部分和邏輯部分,邏輯部分核心為事件處理器,主要負(fù)責(zé)處理數(shù)據(jù)、執(zhí)行后臺服務(wù)、完成系統(tǒng)的業(yè)務(wù)邏輯。具體表現(xiàn)為實現(xiàn)用戶所操作的功能,接收由中介層傳遞的數(shù)據(jù)并進(jìn)行處理,最終由交互層顯示給用戶;數(shù)據(jù)部分主要負(fù)責(zé)存取所涉及的各種數(shù)據(jù)、配置文件。數(shù)據(jù)流程如圖4 所示。
圖4 數(shù)據(jù)流程圖
對于軟件架構(gòu)的驗證而言,國內(nèi)外還沒有成熟的驗證方法,因為軟件架構(gòu)是軟件系統(tǒng)的最頂層的設(shè)計,是整個軟件的框架。所以本文采用接口匹配法和半實物仿真相結(jié)合的方式來進(jìn)行驗證。
接口匹配法驗證步驟:
1)抽象IMDA 軟件架構(gòu),確定最小功能組件的接口與外部的連接關(guān)系;
2)對最小功能組件進(jìn)行功能、交互模擬,是其具備正確的響應(yīng)關(guān)系。
此方法是軟件架構(gòu)階段最直接、最簡潔的驗證方。后期采用半實物仿真試驗,運用的半實物仿真試驗結(jié)構(gòu)如圖5 所示。待測單體為移動終端,通過無線自組網(wǎng)與火控系統(tǒng)機(jī)箱相連,執(zhí)行基本操作流程,通過外圍模擬工裝查看是否可以完成操作,如果有問題,通過串口調(diào)試線以及CAN 盒查找問題所在。在編碼完成之后進(jìn)行綜合驗證,采用相同環(huán)境進(jìn)行閉環(huán)試驗。這樣,對系統(tǒng)前期、后期分別進(jìn)行驗證,軟件開發(fā)過程中采用軟件測試方法進(jìn)行跟蹤測試,使軟件架構(gòu)的穩(wěn)定性得以保證。
圖5 半實物仿真試驗結(jié)構(gòu)圖
由于現(xiàn)有車載終端軟件架構(gòu)在移動終端移植中的種種缺陷和填補現(xiàn)存火控領(lǐng)域移動終端的空白,本文提出一種基于火控領(lǐng)域的移動終端軟件架構(gòu)IMDA。通過改變通信方式克服移動終端的局限性,并集成化解決了移動終端資源受限性、交互方式及多APP 交互問題。最后提出了IMDA 軟件架構(gòu)的驗證方法。試驗表明,此架構(gòu)能夠適配與移動終端的開發(fā),提高開發(fā)效率。為武器裝備的小型化、輕量化、攜行化提供基礎(chǔ)。