蘇春梅,何劍偉,李永剛,王 瑋
(中國人民解放軍63680部隊 無錫 214000)
隨著GJB5000A-2008《軍用軟件研制能力成熟度模型》[1]在軍工企業(yè)的逐步應用推廣,軟件產(chǎn)品研制過程的工程化要求越來越規(guī)范和嚴謹。產(chǎn)品集成過程域是GJB5000A成熟度等級三已定義級包含的過程域,該過程域的目的就是形成最終產(chǎn)品,確保已集成的產(chǎn)品是符合用戶和設計需要的。因此,該過程域的有效覆蓋實施將有助于提高軟件研制的工程化水平,同時提高軟件產(chǎn)品質(zhì)量,降低軟件產(chǎn)品成本,保證按期交付合格的軟件產(chǎn)品。
雖然GJB5000A標準中明確了產(chǎn)品集成過程域?qū)嵤┮螅瞧淇刹僮餍圆皇呛軓?,為達到GJB5000A模型產(chǎn)品集成過程域?qū)S脤嵺`的要求,實現(xiàn)專用目標,筆者總結了單位實施GJB5000A成熟度等級三認證評價過程的具體實踐和成功經(jīng)驗,提出一套合理可行的產(chǎn)品集成流程,并結合應用作演示說明,期望能夠為實施GJB5000A過程改進的相關單位提供有益參考。
產(chǎn)品集成過程域包含3個專用目標共計9個專用實踐,全面概括了產(chǎn)品集成的準備、接口一致性的管理、產(chǎn)品部件組裝和產(chǎn)品交付的各項要求[2]。這里的術語“產(chǎn)品”和“產(chǎn)品部件”泛指軟件開發(fā)生命周期不同階段輸出的服務及其部件,如單元測試后的軟件單元、部件測試后的軟件部件、配置項測試后的軟件配置項、系統(tǒng)測試后的軟件系統(tǒng)等。
專用目標SG1準備產(chǎn)品集成包括3個專用實踐:SP1.1確定集成順序;SP1.2建立產(chǎn)品集成環(huán)境;SP1.3建立產(chǎn)品集成規(guī)程和準則。專用目標SG2確保接口一致性包括2個專用實踐:SP2.1評審接口說明的完備性;SP2.2管理接口。專用目標SG3組裝產(chǎn)品部件和交付產(chǎn)品包括4個專用實踐:SP3.1確認集成產(chǎn)品部件已就緒;SP3.2組裝產(chǎn)品部件;SP3.3評價已組裝的產(chǎn)品部件;SP3.4包裝和交付產(chǎn)品或產(chǎn)品部件。
產(chǎn)品集成(PI)[3,4]是將技術解決方案(TS)過程域生成的產(chǎn)品部件組裝成產(chǎn)品的過程活動。產(chǎn)品集成不只是在設計和制造結束時一次性的產(chǎn)品部件組裝,本過程域的范圍是,按照已定義的集成順序和規(guī)程,在一個階段或一些增量階中,逐次組裝和評價產(chǎn)品部件,直到完成完整的產(chǎn)品集成[5]。產(chǎn)品集成的關鍵是管理產(chǎn)品和產(chǎn)品部件的內(nèi)外部接口,以確保接口間的兼容性。應在整個項目中關注接口管理。
這里會涉及到兩個主要的步驟,其一是產(chǎn)品集成過程管理,直觀來說就是組裝產(chǎn)品的步驟與方法,將所有部件組裝為一個整體,然后進行測試和交付。其二是接口管理,接口是由需求決定的,而接口需求與部件功能相關,因此接口的管理工作是和產(chǎn)品的設計過程同步的,同時也是驗證(VER)和確認(VAL)過程域的輸入之一。接口的管理主要是在項目的生命周期中消除接口之間的不一致,形成一個文檔化、可訪問的接口文檔,同時也保證了交付產(chǎn)品的質(zhì)量。產(chǎn)品集成過程域的實施流程[6]如圖1所示,圖中項目組、測試組、評審組實施的相關活動可根據(jù)項目實際進行裁剪。
圖1 產(chǎn)品集成過程域?qū)嵤┝鞒蘁ig.1 The product integration process area implementation process
為達到GJB5000A模型產(chǎn)品集成過程域?qū)S脤嵺`的要求,實現(xiàn)專用目標,本文從集成策劃、產(chǎn)品集成和接口管理三個方面作詳細分析和研究。
集成策劃就是制定產(chǎn)品集成計劃的過程,產(chǎn)品集成不是一次完成,因此需制定一份集成計劃并使之文檔化。集成策劃的主要目的是:描述集成工作,以支持實現(xiàn)策略;向參與者描述每一個集成步驟需要做什么;識別需要的資源以及它們在什么時候什么地點被需要。對不同規(guī)模和不同應用類型項目產(chǎn)品,計劃集成的程度不同。對大規(guī)模的系統(tǒng),必須要有一個明確的、統(tǒng)一的產(chǎn)品集成計劃,在生命周期概念形成階段,實施集成策劃,形成產(chǎn)品集成計劃初稿,集成計劃內(nèi)容要符合軟件開發(fā)計劃中的進度和資源安排,并在項目開發(fā)過程后續(xù)階段中不斷完善和細化。至于細化集成計劃的時機,可根據(jù)項目情況選擇在設計完成后或在編碼完成后。
集成策劃包含以下內(nèi)容:
①確定集成順序。標識被集成項(軟件單元、軟件部件、軟件配置項、軟件系統(tǒng)等);標識驗證活動;選擇集成順序與理由。
②確定集成環(huán)境。標識集成環(huán)境;標識集成環(huán)境的驗證準則。
③確定集成規(guī)程和準則。標識集成測試的細節(jié);確定集成準則。
集成策劃的結果要文檔化于《產(chǎn)品集成計劃》中,模板如表1所示。
表1 《產(chǎn)品集成計劃》模板示意Table1 PIplan template
產(chǎn)品集成就是依據(jù)產(chǎn)品集成計劃,將經(jīng)過單元測試的軟件代碼逐步集成為部件、配置項和軟件系統(tǒng),并對集成后的部件、配置項和系統(tǒng)進行測試。
產(chǎn)品集成活動不是單元測試結束后一次性的產(chǎn)品部件組裝活動,而是一個從軟件分析(原型)開始,與軟件設計、編碼、單元測試、集成測試活動相關的不斷迭代和增量的過程[7]。
產(chǎn)品集成根據(jù)待集成產(chǎn)品部件的粒度可分為部件級集成、配置項級集成和系統(tǒng)級集成(即軟硬件綜合集成),集成順序如圖2所示,在項目開發(fā)中根據(jù)項目實際規(guī)模和特點裁剪實施。
圖2 產(chǎn)品集成順序Fig.2 The product integration sequence
部件級集成完成單元測試,并按照產(chǎn)品集成計劃中部件級集成要求和集成順序?qū)嵤┘?。配置項級集成完成部件測試,并按照產(chǎn)品集成計劃中配置項級集成要求和集成順序?qū)嵤┘?。系統(tǒng)級集成完成配置項測試,并按照產(chǎn)品集成計劃中系統(tǒng)級集成要求和集成順序?qū)嵤┘伞?/p>
集成過程中要在《產(chǎn)品集成報告》中記錄集成過程活動。
產(chǎn)品集成按照實施流程可以分為準備并確認被集成項與集成環(huán)境、實施產(chǎn)品集成及產(chǎn)品打包與交付三個步驟。
1.2.1 確認被集成項與集成環(huán)境
確認被集成產(chǎn)品就是要確認被集成項已通過測試,且版本受控,同時依據(jù)產(chǎn)品集成計劃對照待集成部件逐項審查,確認被集成項的接口與設計一致。
確認集成環(huán)境首先要搭建集成環(huán)境。開發(fā)人員和測試人員根據(jù)產(chǎn)品集成計劃中的環(huán)境要求搭建集成的軟、硬件環(huán)境,如測試設備及工具,以確保集成的真實性和有效性。一般推薦在編碼工作開始前就搭建好集成環(huán)境,便于開發(fā)、測試。然后,按驗收準則對集成環(huán)境進行確認,并在《產(chǎn)品集成報告》中記錄檢查確認結果。
1.2.2 實施產(chǎn)品集成
開發(fā)人員根據(jù)產(chǎn)品集成計劃列出的產(chǎn)品部件清單和集成順序,組裝產(chǎn)品部件,并進行驗證和確認,直至最后交付產(chǎn)品。
首先檢查要進行組裝的產(chǎn)品部件是否符合功能要求和接口要求,然后進行產(chǎn)品部件的組裝,并不斷對功能與接口進行檢驗。在集成過程中,如果出現(xiàn)錯誤,則必須對其進行記錄、排查和解決,從而確保集成后的產(chǎn)品是符合用戶與設計要求的。具體步驟如下:
①集成負責人必須從配置庫中獲取正確的待集成文件及版本,并安裝到指定機器。
②集成負責人使用相關工具進行編譯、集成,并根據(jù)集成驗證規(guī)程檢查編譯、集成是否通過。
③若集成通過,則集成負責人將集成通過的包部署至指定的測試機器上,同時將其提交到配置庫,集成結束。
④若集成不通過,則集成負責人分析查找集成失敗的原因,根據(jù)不同原因采取不同的對策。若是源代碼問題,則通知開發(fā)人員修改源代碼或補提交源代碼。開發(fā)人員在完成代碼修改或補提交后,通知集成負責人再次集成,返回①。集成負責人將本次集成的情況記錄在《產(chǎn)品集成報告》中。集成過程中,項目經(jīng)理應定期檢查集成環(huán)境是否符合要求。待項目終結,集成負責人應對項目的集成環(huán)境進行清除。
1.2.3 產(chǎn)品打包與交付
如果集成完成,則由集成人員對提交產(chǎn)品進行核查,核查內(nèi)容包括:產(chǎn)品相關文件是否存在缺失、是否沾染病毒。然后按照文件合同要求將需要的文檔、執(zhí)行代碼和配置數(shù)據(jù)等打包制作安裝文件,并交由配置管理員上傳至配置庫的指定目錄,供產(chǎn)品交付。
保證接口的一致性是產(chǎn)品集成過程域中非常重要的一個環(huán)節(jié)。接口包括內(nèi)部接口和外部接口,內(nèi)部接口指的是產(chǎn)品模塊之間的接口,而外部接口指的是與外部系統(tǒng)進行集成的接口。如對于財務系統(tǒng),OA系統(tǒng)的接口為外部接口,而財務系統(tǒng)中財務核算模塊和報銷管理模塊的接口為內(nèi)部接口。但無論是內(nèi)部接口還是外部接口,都需要進行必要的管理,如接口的變更控制、接口變更的評審等。
1.3.1 接口變更請求
代碼實現(xiàn)工程師在進行接口實現(xiàn)時,若由于需求變更、設計缺陷等因素導致接口發(fā)生變化,則應及時提出接口變更申請,并提交給設計工程師與項目經(jīng)理進行評審。
1.3.2 接口變更評審
首先由代碼實現(xiàn)工程師和設計工程師討論接口變更的必要性、可行性和具體變更方法,然后由代碼實現(xiàn)工程師、設計工程師和項目經(jīng)理一起評審接口變更事項,質(zhì)量保證人員及其他人員可以旁聽。若評審結論為不通過,則根據(jù)評審意見繼續(xù)修改,或重新調(diào)整變更請求,協(xié)商后重新評審。若評審結論為通過,則設計工程師根據(jù)評審結果完成接口變更的相關接口設計文檔,待重新設計接口后,提交代碼實現(xiàn)工程師修改接口程序。
下面以GJB5000A三級評價項目為例,描述產(chǎn)品集成過程域的實際應用。
項目需求背景:目前國產(chǎn)操作系統(tǒng)逐漸發(fā)展成熟,測控系統(tǒng)國產(chǎn)化工作也在同步開展,即采用麒麟操作系統(tǒng)。為實現(xiàn)測控應用軟件由Windows平臺向麒麟操作系統(tǒng)平臺順利轉換,需要先期開發(fā)配套的麒麟操作系統(tǒng)時統(tǒng)模擬軟件系統(tǒng)KLTES(Timer Emulation Software for KY Linux),通過軟件方式模擬“系統(tǒng)控制臺和多功能時統(tǒng)卡”的功能,為麒麟操作系統(tǒng)下的上層測控應用軟件提供時間基準、中斷、符合、雙工切換等服務,方便麒麟操作系統(tǒng)下測控應用軟件在無硬時統(tǒng)支持的環(huán)境下開發(fā)和測試使用。
項目啟動之后,項目經(jīng)理依據(jù)項目特點對照GJB5000A三級體系選擇生命周期模型,并在軟件開發(fā)計劃中對集成活動進行策劃,明確產(chǎn)品集成人員和集成流程,制定詳細實施計劃,在工作分解結構WBS(Work Breakdown Structure)中將集成活動分解到生命周期模型不同軟件開發(fā)階段。根據(jù)GJB5000A三級體系裁剪指南,本系統(tǒng)確定的集成活動包含部件級集成和配置項級集成。下文以配置項級集成為例,對部分集成活動進行描述。
KLTES分為4層(部件包),分別是交互界面包、共享數(shù)據(jù)服務包、業(yè)務處理包和時統(tǒng)接口服務包,每個包為一個被集成的軟件部件。KLTES的邏輯結構如圖3所示。
圖3 KLTES邏輯結構設計示意圖Fig.3 KLTES logic structure design diagram
進入準則:①配置項中的部件已經(jīng)通過部件測試;②配置項中的部件已標識,功能與說明相符;③配置項集成環(huán)境準備完畢且得到驗證。
退出準則:①集成過程中的各種問題得到有效解決;②集成測試發(fā)現(xiàn)的缺陷滿足質(zhì)量目標要求;③軟件配置項測試通過評審。
本軟件共開發(fā)了四個部件包,部件之間的邏輯關系如圖3所示。從圖3中可以看出,時統(tǒng)接口服務包是最底層,上層是業(yè)務處理包,再上層是交互界面包,共享數(shù)據(jù)服務包介于業(yè)務處理包和交互界面包之間,為其提供進程交互服務。同時也能夠清晰看到,其他三個包與共享數(shù)據(jù)服務包之間均存在依賴關系,即其他三個包均依賴共享數(shù)據(jù)服務包。綜合考慮以上因素,選取自底向上的集成方法并遵循調(diào)用關系順序?qū)嵤┘伞W缘紫蛏系募煞桨甘枪こ虒嵺`中最常用的集成方法,相關技術也較為成熟,選取自底向上的集成方法思路更清晰,同時軟件中四個部件之間的調(diào)用關系也會很清晰。具體集成順序為:先集成共享數(shù)據(jù)服務包,再集成時統(tǒng)接口服務包,然后集成業(yè)務處理包,待業(yè)務處理包與時統(tǒng)接口服務包集成后可完成軟件的核心功能,最后集成交互界面包。集成順序如圖4所示。
圖4 KLTES配置項級集成順序Fig.4 KLTES configuration integration sequence
本軟件配置項級集成環(huán)境為某平臺機房。所需的集成環(huán)境構成見圖5,其組成及檢查情況見表2。
接口正確性檢查與驗證是軟件配置項級集成的重點,配置項級集成涉及的軟件接口列表及檢查記錄如表3、表4所示。
圖5 KLTES配置項級集成構成圖Fig.5 KLTES configuration integration component diagram
表2 產(chǎn)品集成環(huán)境及檢查(配置項級)Table2 PI environment and check(configuration level)
表3 產(chǎn)品集成接口列表及檢查(配置項級)Table3 PI interface list and check(configuration level)
表4 產(chǎn)品集成構件及檢查(配置項級)Table4 PI component list and check(configuration level)
配置項級集成的產(chǎn)品集成報告如表5所示。
表5 產(chǎn)品集成報告(配置項級)Table5 PI report(configuration level)
依據(jù)GJB5000A三級體系要求實施產(chǎn)品集成,通過嚴格規(guī)范的產(chǎn)品集成過程管理,有效減少了評審缺陷和測試BUG,提高了驗證和確認活動[8]的實施效率,從而確保按期保質(zhì)保量交付合格的產(chǎn)品。
本文介紹了GJB5000A模型中產(chǎn)品集成過程域?qū)S媚繕撕蛯S脤嵺`,提出的產(chǎn)品集成流程很好地覆蓋了產(chǎn)品集成過程域所有的專用目標和專用實踐,從而滿足GJB5000A模型中產(chǎn)品集成過程域的要求。本文從集成策劃、產(chǎn)品集成和接口管理三個方面分析研究了產(chǎn)品集成的具體實施方法,并給出了應用案例。本文研究旨在為軟件企業(yè)改進其軟件過程,以及軟件項目經(jīng)理進行產(chǎn)品集成提供參考。
[1]中華人民共和國國家軍用標準.軍用軟件研制能力成熟度模型GJB5000A-2008[S].北京:國防工業(yè)出版社,2009.Military Standard of the People's Republic of China.Capability Maturity Model GJB5000A-2008 for Military Software Development[S].Beijing:Publishing House of National Defence Industry,2009.
[2]石 柱.軍用軟件研制能力成熟度模型及其應用[M].北京:中國標準出版社,2009.Shi Zhu.Capability Maturity Model and Its Application for Military Software Development[M].Beijing:Publishing House of China Standard,2009.
[3]葉志玲,王向暉.基于CMMI星載嵌入式軟件測試技術研究[J].計算機測量與控制,2013,21(4):72~76.Ye Zhiling,Wang Xianghui.Research of Testing Technology about Embedded Software of Satellites Based in CMMI[J].Computer Measurement&Control,2013,21(4):72 ~76.
[4]徐 艷.測試成熟度模型(TMM)的研究[J].電腦知識與技術,2009,5(18):5023~5025.Xu Yan.The Research of Testing Maturity Model[J].Computer Knowledge and Technology,2009,5(18):5023 ~5025.
[5]NASA Headquarters.NASA Systems Engineering Handbook[M].USA:National Aeronautics and Space Administration,2007:78~81.
[6]李祥明,郭力兵,劉曉陽,吳學軍,王 瑋.基于軟件工程過程的GJB5000A-2008三級體系構建研究[J].遙測遙控,2013,34(2):72 ~76.Li Xiangming,Guo Libing,Liu Xiaoyang,Wu Xuejun,WangWei.Research on the Construction of GJB 5000A-2008 Grade-3 System Based on Software Engineering Process[J].Journal of Telemetry,Tracking and Command,2013,34(2):72~76.
[7]倪 亭.在軟件研發(fā)與測試中推廣 GJB5000A[J].軟件,2013,34(2):31 ~35.Ni Ting.Promote GJB5000A in Software Development and Testing[J].Software,2013,34(2):31 ~35.
[8]高 月,梁成才,王 川,陸 偉.軟件驗證與確認在MIS開發(fā)中的應用[J].計算機工程,2011,37(1):84~86.Gao Yue,Liang Chengcai,Wang Chuan,Lu Wei.Application of Software Verification and Validation in MISDevelopment[J].Computer Engineering,2011,37(1):84 ~86.