楊學(xué)強(qiáng),黃 靜,白 勇,黃 俊
(裝甲兵工程學(xué)院技術(shù)保障工程系,北京100072)
陸軍部隊(duì)裝備管理綜合信息系統(tǒng)(以下簡(jiǎn)稱系統(tǒng))具有體系結(jié)構(gòu)復(fù)雜、業(yè)務(wù)功能覆蓋面廣、用戶需求多樣、應(yīng)用集成要求高等特點(diǎn),傳統(tǒng)的“手工作坊”式軟件開發(fā)方式效率低,重復(fù)開發(fā)量大,成本高,質(zhì)量難以保證[1],不能滿足系統(tǒng)軟件可擴(kuò)展性和可維護(hù)性的需要。
基于構(gòu)件的軟件開發(fā)是利用已開發(fā)完成的商用構(gòu)件(或可復(fù)用構(gòu)件),按照應(yīng)用需求組裝形成軟件應(yīng)用系統(tǒng)的軟件開發(fā)方法[2],它以面向?qū)ο蠹夹g(shù)為基礎(chǔ),通過(guò)對(duì)構(gòu)件的選擇、實(shí)例化、組裝和集成來(lái)構(gòu)造應(yīng)用系統(tǒng),已經(jīng)在許多應(yīng)用軟件開發(fā)中得到了應(yīng)用[3-4]。采用基于構(gòu)件的軟件開發(fā)方法進(jìn)行裝備管理信息系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn),是提高系統(tǒng)開發(fā)效率和質(zhì)量的重要途徑。
構(gòu)件是能獨(dú)立地開發(fā)、獲取、發(fā)布的功能單元,是軟件開發(fā)、復(fù)用和組裝的基本模塊,它封裝了數(shù)據(jù)和功能,在運(yùn)行時(shí)能夠通過(guò)參數(shù)進(jìn)行配置。構(gòu)件具有復(fù)用性、封裝性、組裝性、擴(kuò)展性等基本性質(zhì)[5-6]。
基于構(gòu)件的軟件開發(fā)基本思想是將應(yīng)用軟件分解成為一個(gè)個(gè)獨(dú)立的單元,將軟件開發(fā)過(guò)程轉(zhuǎn)變成為各種不同構(gòu)件單元的開發(fā)與搭建過(guò)程,通過(guò)組裝不同的構(gòu)件單元實(shí)現(xiàn)軟件的集成,如圖1所示。
由圖1可見:基于構(gòu)件的軟件開發(fā)過(guò)程與傳統(tǒng)的軟件開發(fā)有著很大不同,其顯著特點(diǎn)是軟件開發(fā)不再是“算法+數(shù)據(jù)結(jié)構(gòu)”,而是“構(gòu)件開發(fā)+基于構(gòu)件的組裝”[1]。
圖1 基于構(gòu)件的軟件開發(fā)過(guò)程
軟件開發(fā)模型是軟件開發(fā)活動(dòng)和任務(wù)的結(jié)構(gòu)框架,清晰直觀地表達(dá)了系統(tǒng)軟件開發(fā)的全過(guò)程,明確規(guī)定了需要完成的主要任務(wù)[7]?;跇?gòu)件的軟件開發(fā)過(guò)程主要包括:軟件需求分析、軟件功能分解、基于構(gòu)件的系統(tǒng)設(shè)計(jì)、專用功能構(gòu)件開發(fā)、非構(gòu)件代碼編寫、系統(tǒng)組裝與集成、系統(tǒng)測(cè)試等,其開發(fā)模型如圖2所示。
圖2 基于構(gòu)件的系統(tǒng)軟件開發(fā)模型
圖2中:專用功能構(gòu)件開發(fā)是針對(duì)裝備管理要求開發(fā)相應(yīng)的可重用業(yè)務(wù)構(gòu)件;通用構(gòu)件庫(kù)用于提供裝備管理通用功能構(gòu)件。
業(yè)務(wù)需求分析是對(duì)裝備管理各業(yè)務(wù)領(lǐng)域進(jìn)行分析,識(shí)別各業(yè)務(wù)領(lǐng)域的共同特征和可變特征,并對(duì)構(gòu)成這些特征的對(duì)象與操作進(jìn)行選擇和抽象,它是針對(duì)一類業(yè)務(wù)應(yīng)用的共同領(lǐng)域及用戶需求的共同點(diǎn)進(jìn)行分析[6]。具體步驟如下。
1)業(yè)務(wù)領(lǐng)域需求定義。對(duì)裝備管理各業(yè)務(wù)領(lǐng)域需求定義進(jìn)行分析,明確各業(yè)務(wù)領(lǐng)域具體業(yè)務(wù)需求,為每種業(yè)務(wù)能力初步定義相應(yīng)術(shù)語(yǔ),確定各業(yè)務(wù)領(lǐng)域范圍和邊界,收集各業(yè)務(wù)領(lǐng)域相關(guān)信息。
2)業(yè)務(wù)領(lǐng)域共性分析。對(duì)各領(lǐng)域的業(yè)務(wù)過(guò)程進(jìn)行抽象和精化,歸納共同需求,識(shí)別和表示各業(yè)務(wù)領(lǐng)域共同需求的特征,完善和調(diào)整領(lǐng)域術(shù)語(yǔ)字典。
3)業(yè)務(wù)領(lǐng)域差異性分析。識(shí)別各業(yè)務(wù)領(lǐng)域的差異性,確定各種特性需求的類型。
按照上述步驟,可以建立系統(tǒng)三維應(yīng)用需求視圖:一是專業(yè)維,包括通用裝備5個(gè)專業(yè)和專用裝備6個(gè)專業(yè);二是業(yè)務(wù)維,包括裝備日常管理、維修管理、調(diào)配供應(yīng)、訓(xùn)練管理、戰(zhàn)備管理、資源管理、業(yè)務(wù)總覽等各項(xiàng)業(yè)務(wù);三是應(yīng)用級(jí)別維,包括集團(tuán)軍、師(旅)、團(tuán)3個(gè)層次。
系統(tǒng)所有業(yè)務(wù)領(lǐng)域的共性需求包括報(bào)表打印、圖形支持、基礎(chǔ)數(shù)據(jù)維護(hù)、數(shù)據(jù)傳輸、文電處理、安全保密服務(wù)、應(yīng)用系統(tǒng)設(shè)置、地理信息支撐等,各業(yè)務(wù)領(lǐng)域差異性主要是各級(jí)別管理對(duì)象的范圍、粒度不同。
系統(tǒng)功能分解主要是對(duì)裝備管理各業(yè)務(wù)功能的信息進(jìn)行收集、抽象及組織,識(shí)別和構(gòu)造出各種可重用的功能模塊,使這些模塊能夠得到最大限度利用,從而提高軟件開發(fā)效率。具體步驟如下。
1)確定功能范圍。合理界定裝備管理各業(yè)務(wù)功能的具體范疇和處理流程,形成功能結(jié)構(gòu)文檔。
2)建立功能模型。標(biāo)志裝備管理各功能實(shí)體,實(shí)體的特征、屬性及實(shí)體間的關(guān)系,形成系統(tǒng)功能分析文檔。
按照上述步驟,對(duì)裝備管理各業(yè)務(wù)領(lǐng)域的各項(xiàng)業(yè)務(wù)處理功能進(jìn)行分析,如:對(duì)裝備日常管理功能的分解,首先確定其業(yè)務(wù)功能范圍,包括動(dòng)用使用、封存啟封、保管保養(yǎng)、愛裝管裝教育、檢查考評(píng)、技術(shù)革新等;然后,對(duì)各項(xiàng)業(yè)務(wù)具體功能進(jìn)行細(xì)化,建立業(yè)務(wù)功能模型,形成相應(yīng)的業(yè)務(wù)功能分析文檔。
采用面向構(gòu)件技術(shù)和基于MVC(Model-View-Controller,MVC)模式的多層體系架構(gòu)[8-10],設(shè)計(jì)系統(tǒng)軟件體系結(jié)構(gòu),包括數(shù)據(jù)管理層、通用支撐軟件層、共性軟件層、專用軟件層、系統(tǒng)應(yīng)用層和軟件集成開發(fā)框架等6個(gè)部分,如圖3所示。
1)數(shù)據(jù)管理層。用于存儲(chǔ)裝備管理數(shù)據(jù)資源,按照數(shù)據(jù)用途從邏輯上分為基礎(chǔ)數(shù)據(jù)庫(kù)、業(yè)務(wù)數(shù)據(jù)庫(kù)和綜合數(shù)據(jù)庫(kù)。
圖3 系統(tǒng)軟件體系結(jié)構(gòu)
2)通用支撐軟件層。為裝備管理業(yè)務(wù)構(gòu)件開發(fā)提供公共基礎(chǔ)服務(wù),包括報(bào)表打印、圖形支撐、基礎(chǔ)數(shù)據(jù)維護(hù)、數(shù)據(jù)傳輸、文電處理、安全保密服務(wù)、地理信息支撐、應(yīng)用系統(tǒng)設(shè)置等通用支撐構(gòu)件。
3)共性軟件層。是裝備管理共性業(yè)務(wù)構(gòu)件的集合。共性業(yè)務(wù)構(gòu)件是指2個(gè)以上專業(yè)通用的業(yè)務(wù)構(gòu)件,利用軟件集成開發(fā)框架提供的技術(shù)環(huán)境和通用支撐構(gòu)件提供的服務(wù)開發(fā),主要包括日常管理、維修管理、調(diào)配供應(yīng)、訓(xùn)練管理、戰(zhàn)備管理、資源管理和業(yè)務(wù)總覽等7類共性業(yè)務(wù)構(gòu)件。
4)專用軟件層。是裝備管理專用業(yè)務(wù)構(gòu)件的集合。專用業(yè)務(wù)構(gòu)件是指某個(gè)專業(yè)專用的業(yè)務(wù)構(gòu)件,不具備通用性,是結(jié)合各專業(yè)具體業(yè)務(wù)需求進(jìn)行開發(fā),主要包括軍械、裝甲、工程、防化、車輛、情報(bào)、通信、電子對(duì)抗、機(jī)要、氣象、測(cè)繪等專用業(yè)務(wù)構(gòu)件。
5)應(yīng)用系統(tǒng)層。是裝備管理應(yīng)用系統(tǒng)的集合?;趯S密浖犹峁┑墓δ埽鶕?jù)用戶需要對(duì)各類構(gòu)件進(jìn)行組裝,形成面向不同級(jí)別裝備管理部門的應(yīng)用系統(tǒng),包括集團(tuán)軍、師、旅團(tuán)3級(jí)。各應(yīng)用系統(tǒng)界面風(fēng)格統(tǒng)一、操作方式統(tǒng)一,面向特定用戶提供業(yè)務(wù)管理功能。
6)軟件集成開發(fā)框架。是基于構(gòu)件的系統(tǒng)軟件開發(fā)的核心支撐平臺(tái),用于提供構(gòu)件開發(fā)、集成和軟件運(yùn)行的環(huán)境,使系統(tǒng)軟件可以快速高質(zhì)量地搭建,并具有較強(qiáng)的可維護(hù)能力和良好的需求變化響應(yīng)能力。其總體結(jié)構(gòu)如圖4所示。
圖4 軟件集成開發(fā)框架總體結(jié)構(gòu)
圖4中:構(gòu)件集成開發(fā)環(huán)境提供各種構(gòu)件可視化開發(fā)、調(diào)試、組裝、發(fā)布、管理等功能;工作流管理工具提供業(yè)務(wù)流的定義、引擎、管理監(jiān)控等功能;頁(yè)面開發(fā)管理工具提供可視化頁(yè)面開發(fā)與調(diào)試功能;構(gòu)件庫(kù)提供支撐快速開發(fā)、部署應(yīng)用系統(tǒng)的一組預(yù)制構(gòu)件集合;構(gòu)件運(yùn)行環(huán)境提供引擎服務(wù),對(duì)開發(fā)的各種構(gòu)件進(jìn)行解析,使構(gòu)件成為標(biāo)準(zhǔn)應(yīng)用,并提供對(duì)構(gòu)件應(yīng)用時(shí)數(shù)據(jù)總線的管理;構(gòu)件管理控制臺(tái)提供各種運(yùn)行監(jiān)控服務(wù)。
綜上所述,采用基于構(gòu)件的系統(tǒng)軟件多層體系結(jié)構(gòu),可以保證系統(tǒng)軟件適應(yīng)裝備管理業(yè)務(wù)的需求,降低系統(tǒng)軟件開發(fā)難度,減少系統(tǒng)軟件編程工作量。同時(shí),可以根據(jù)系統(tǒng)性能及功能需求進(jìn)行功能模塊配置,實(shí)現(xiàn)裝備管理業(yè)務(wù)處理分布式部署。
業(yè)務(wù)構(gòu)件開發(fā)是在具體業(yè)務(wù)流程拆解、抽象、合并的基礎(chǔ)上,構(gòu)建一系列構(gòu)件實(shí)現(xiàn)業(yè)務(wù)功能的過(guò)程,是基于構(gòu)件的系統(tǒng)軟件開發(fā)的核心內(nèi)容和關(guān)鍵環(huán)節(jié)。利用基于構(gòu)件的軟件開發(fā)平臺(tái)(如普元EOS構(gòu)件化平臺(tái)[11]),可以完成裝備管理業(yè)務(wù)構(gòu)件開發(fā)工作,主要包括以下方面。
1)業(yè)務(wù)構(gòu)件開發(fā)原則。業(yè)務(wù)構(gòu)件通常是支撐構(gòu)件與業(yè)務(wù)流程的特定組合,開發(fā)時(shí)必須遵循以下原則:(1)構(gòu)件的標(biāo)準(zhǔn)應(yīng)滿足高內(nèi)聚、低耦合的統(tǒng)一要求;(2)構(gòu)件的抽象分類應(yīng)在功能模型和功能框架設(shè)計(jì)的基礎(chǔ)上進(jìn)行;(3)構(gòu)件的設(shè)計(jì)應(yīng)根據(jù)子系統(tǒng)或子功能來(lái)劃分,使每個(gè)構(gòu)件與系統(tǒng)內(nèi)實(shí)體相對(duì)應(yīng);(4)構(gòu)件的接口要規(guī)范友好,既要滿足信息隱藏的要求,又要符合框架內(nèi)的通信要求,便于開發(fā)人員使用;(5)構(gòu)件的適應(yīng)性要強(qiáng),可根據(jù)不同要求進(jìn)行投影和組合;(6)構(gòu)件的文檔必須齊全,構(gòu)件使用前必須充分測(cè)試、審查,確保構(gòu)件質(zhì)量。
2)業(yè)務(wù)構(gòu)件開發(fā)過(guò)程。包括語(yǔ)義抽象、模型分解、粒度設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)、性能度量等步驟,如圖5所示。
圖5 業(yè)務(wù)構(gòu)件開發(fā)過(guò)程
圖5中:語(yǔ)義抽象為業(yè)務(wù)構(gòu)件的可變點(diǎn)設(shè)計(jì),對(duì)不同業(yè)務(wù)模型內(nèi)包含的相似服務(wù)進(jìn)行抽象,使業(yè)務(wù)構(gòu)件可應(yīng)用于多個(gè)業(yè)務(wù)場(chǎng)合,以提高構(gòu)件的復(fù)用度;模型分解是依據(jù)特定的分解原則,將領(lǐng)域模型分解為一組子模型,并將每一個(gè)子模型映射為一個(gè)獨(dú)立構(gòu)件;粒度設(shè)計(jì)是實(shí)現(xiàn)粒度的調(diào)整與優(yōu)化,將經(jīng)常需要共同復(fù)用的構(gòu)件合并在一起,得到大粒度的業(yè)務(wù)構(gòu)件,以提高業(yè)務(wù)構(gòu)件復(fù)用時(shí)的效率和降低復(fù)用成本,相關(guān)的合并技術(shù)包括共同復(fù)用原則、基于繼承/組合關(guān)系的合并等;結(jié)構(gòu)設(shè)計(jì)是設(shè)計(jì)每一個(gè)業(yè)務(wù)構(gòu)件的內(nèi)部功能結(jié)構(gòu)和外部接口,以及與其他業(yè)務(wù)構(gòu)件之間的邏輯關(guān)系;性能度量是對(duì)最終構(gòu)件集合選取特定性能度量指標(biāo)進(jìn)行度量。
利用基于構(gòu)件的軟件開發(fā)平臺(tái)提供的集成開發(fā)環(huán)境,可以完成系統(tǒng)業(yè)務(wù)的構(gòu)件開發(fā)或選擇工作,為快速搭建應(yīng)用系統(tǒng)功能模塊奠定基礎(chǔ)。
3)業(yè)務(wù)構(gòu)件存儲(chǔ)管理。主要是將開發(fā)的業(yè)務(wù)存入構(gòu)件庫(kù),以滿足構(gòu)件復(fù)用、組裝的需要。它是基于構(gòu)件的系統(tǒng)軟件開發(fā)的重要環(huán)節(jié)。
系統(tǒng)軟件集成主要是通過(guò)構(gòu)件選擇、構(gòu)件剪裁、軟件流程銜接、構(gòu)件組裝等工作,最終構(gòu)成具體業(yè)務(wù)應(yīng)用系統(tǒng)。其中,構(gòu)件組裝是以系統(tǒng)軟件框架為藍(lán)圖,通過(guò)構(gòu)件實(shí)例將軟件框架具體化的過(guò)程。成功的構(gòu)件組裝必須以開放構(gòu)件模型和規(guī)范的構(gòu)架描述(包括對(duì)構(gòu)件連接和交互協(xié)議的嚴(yán)格定義)為基礎(chǔ),構(gòu)件實(shí)例必須符合系統(tǒng)中其他部分的要求[5]。利用基于構(gòu)件的軟件開發(fā)平臺(tái)提供的集成環(huán)境,可以快速搭建運(yùn)行級(jí)的業(yè)務(wù)系統(tǒng),完成系統(tǒng)軟件集成工作。
基于構(gòu)件的系統(tǒng)軟件不再是由上百萬(wàn)行的代碼組成的,而是由幾千個(gè)穩(wěn)定的業(yè)務(wù)構(gòu)件經(jīng)過(guò)可視化組裝而成的。因此,基于構(gòu)件的系統(tǒng)軟件開發(fā)核心是“構(gòu)件開發(fā)+基于構(gòu)件的組裝”,不僅可以縮短系統(tǒng)軟件開發(fā)周期,提高系統(tǒng)軟件開發(fā)效率和質(zhì)量,而且能夠適應(yīng)用戶需求變化,提升系統(tǒng)軟件的靈活性、可維護(hù)性和可擴(kuò)展性。
[1]王偉.基于構(gòu)件的軟件工程理論與方法研究[J].信息技術(shù)與信息化,2009(4):48-52.
[2]陳霞,基于構(gòu)件的艦艇作戰(zhàn)系統(tǒng)軟件開發(fā)技術(shù)研究[J].艦船電子工程,2008,28(7):40-42.
[3]賀小輝,李雪暉,應(yīng)志雄.基于構(gòu)件的遠(yuǎn)程服務(wù)與故障診斷系統(tǒng)[J].制造業(yè)自動(dòng)化,2009,31(7):86-89.
[4]吳立松,楊根興,蔡立志.基于構(gòu)件的測(cè)試腳本復(fù)用技術(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2009,26(4):1324-1326.
[5]許楨.基于構(gòu)件的軟件開發(fā)方法及實(shí)現(xiàn)[J].軟件導(dǎo)刊,2009,8(11):17-19.
[6]牛景春,申利民,楊化林.基于構(gòu)件的柔性軟件開發(fā)方法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(9):72-75.
[7]黃坤,閔紹榮.基于構(gòu)件的潛艇作戰(zhàn)系統(tǒng)軟件體系結(jié)構(gòu)[J].中國(guó)艦船研究,2009,4(2):65-68.
[8]王丹,張帆,張志鴻.基于構(gòu)件的多層體系結(jié)構(gòu)的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(6):1255-1256.
[9]胡闊見,魏長(zhǎng)江.基于構(gòu)件的領(lǐng)域工程實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2008,30(4):92-94.
[10]寧?kù)o峰,張麗杰,唐培麗.基于構(gòu)件的敏捷軟件開發(fā)管理工具的研究與設(shè)計(jì)[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2008,29(1):95-98.
[11]焦桂芝,向凱全,陳軍廣.基于構(gòu)件的Web-MIS的設(shè)計(jì)與實(shí)現(xiàn)[J].四川兵工學(xué)報(bào),2009,30(6):27-29.