/北京航天自動控制研究所
軟件配置管理活動貫穿于軟件項目的整個生命周期。隨著GJB5000A在北京航天自動控制研究所的全面應用以及型號軟件快速迭代的研制模式下對配置管理有了新的要求,從前的配置管理主要依靠人工操作,大量的時間用于打印表單、簽署審批、復制光盤等流程,不管在管理難度還是效率上都存在問題。
新的系統要實現配置管理全過程控制采用多級庫管理,實現基線管理、版本控制及變更控制等。實現配置管理狀態紀實、配置審計等功能并支持用戶管理、權限控制。支持軟件工程相關文檔的建立和維護等需求,實現自動流轉、自動審批、自動入庫等全電子化管理,同時滿足型號快速迭代研制模式的要求。配置管理一體化系統平臺CMTool,通過克服與Avidm系統掛接、不同批次不同狀態下的文檔版本延續性設計、生產流程的獨立模塊化設計等一些列技術難點,實現與現有項目管理系統Avidm集成,實現軟件研制全流程的管理,并能夠自動采集軟件管理過程數據,為軟件過程精細化管理作好數據儲備,保證了軟件配置項標識、軟件基線、變更記錄、配置狀態等的正確性,軟件文檔的完整性,以及軟件版本的正確性與完整性,達到了型號軟件快速迭代研制模式下的新要求,保障型號軟件研制開發有條不紊的開展。
軟件配置管理工具是分布式、支持多庫、多層次、權限控制力度細致的適合大規模使用、適應快速迭代的研制模式系統。該系統針對型號軟件配置管理流程進行頂層設計、優化,凝聚對型號軟件復雜流程的執行和處理思路。
軟件配置管理系統由開發庫、所級受控庫、產品庫3庫構成。開發庫設在各研究室項目組,受控庫設在研究室,產品庫設在所技術保障室。
軟件配置管理系統利用VS2012和C#5.0進行開發,采用分層軟件體系設計架構,將表現層、業務邏輯層、數據訪問層和數據庫分別獨立,以適應快速迭代研制模式要求。
軟件配置管理系統分層軟件體系結構設計以及系統構成如圖1、2所示。
配置管理系統符合分級保護3員要求,組織角色包含組織級配置管理員、室級配置管理員、主管設計以及開發人員。

圖1 分層軟件體系結構設計

圖2 軟件配置管理系統構成圖
項目管理工作流程,如圖3所示。
項目配置計劃。室級配置管理員和項目負責人可以對配置策劃信息(包含審批組織策劃、階段與管理項策劃、版本策劃、依賴關系管理、基線策劃、導入導出同步策劃等)進行編輯。其他項目成員僅可查看項目策劃信息。
新建項目時室級配置管理員必須指定規則,系統在項目的創建過程中自動將規則中內容導入到項目的策劃信息中。室級配置管理員和項目負責人可以在規則的基礎上對策劃信息進行裁剪。
配置管理控制流程和要求。軟件的配置管理整體流程總體上分為受控庫和產品庫的管理,分別具有不同的管理流程和具體管理內容。受控庫的整體管理流程,如圖4所示。

圖3 項目管理整體工作流程

圖4 受控庫配置管理總體流程
快速迭代模式下的配置管理控制。CMTool系統針對型號研制過程中快速變化等復雜狀態,提出了一些適應性設計。
一是不同批次在不同狀態下文檔的延續性設計。由于某型號軟件的發批次較多,研發過程一般比較短,所以不同發批次之間的型號文檔要求有一定的延續性和繼承性。然而不同狀態下的文檔在初始入庫時一般將版本判定為1.00,且有些狀態的繼承關系較為復雜,這就需要型號配置管理員人為設定繼承關系及初始繼承版本。為此在項目建項時增加了是否延用項目的選項,可為項目選擇它所延用的某個狀態下的配置項,然后系統就會自動將文檔版本號繼承排列,并寫入到文檔封面中。這樣同一型號不同狀態下的文檔也能保留其延續性和繼承性,方便設計更改及管理追查。
二是適應多種結構的目錄樹設計。系統設計之初,在項目目錄樹設計上只做了型號一階段一狀態一配置項的4級固定目錄樹結構,但在后續的使用中發現不適用于管理單機、單板軟件。這就要求將原本固定的目錄樹結構重新設計,通過和型號主任設計師的溝通,添加了型號一階段一狀態一單機一配置項及型號—階段—狀態—單機—單板—配置項等5、6級目錄樹,根據配置項信息的有效性靈活地按級別掛接節點,從而適應了型號各軟件多種目錄樹結構的實際使用情況。
三是特殊過程中的流程控制設計。在某型號軟件的研制過程中,面對快速迭代的研制模式及多批次的型號研制任務,實際工作中會存在一些較為特殊的流程,如受控庫出庫例外放行、產品庫入庫例外放行等。為此增設例外放行流程,除了達到例外放行流程嚴格審批受控外,更重要的是理清例外放行流程與配置管理自身流程之間的關系,以及放行后的閉環規則。同時,在原有的固定流程基礎上進行修改,使系統能夠在正常審批流程的基礎上兼顧配置審核問題閉環流程。
適應快速迭代模式配置管理亮點。
一是與Avidm系統的深度集成。因某型號軟件是在快速迭代模式下進行開發,在受控庫中有許多版本,由于Avidm作為項目管理工具,在計劃提交時需有文檔提交入庫,因此需要CMTool中的文檔作為提交物,為避免CMTool與Avidm之間的重復性工作,需要和原有的Avidm系統進行集成,在CMTool中完成文檔的審批、簽署以及數據的流轉,入受控庫的同時需要提交文件到Avidm的個人工作目錄,為實現該功能,專門設計了應用程序開發接口(API)實現方案。
在Avidm系統集成中實現的注入式API技術包括3個組成部分:服務器后端程序注入,可以模擬Avidm系統提供動態加密密鑰傳遞、身份認證、應用數據提交等功能。前端注入,可以與后端注入程序配合,實現自動登錄;模擬Avidm系統創建數據表單并提交到后臺;與后端程序配合自動提交和上傳文件;數據庫注入,分析Avidm系統的數據庫系統,在上萬個數據庫表中定位到接口所需的數據庫表和字段,并通過后端注入程序將數據插入到Avidm數據庫中。通過這3個方面的功能組合實現的接口將可以達到Avidm定制開發接口的效果,設計人員在CMTool進行文檔入庫時不需要重復登錄或提交數據文件便可將文件提交到Avidm的個人工作目錄。
在實際執行的過程中,在文檔加密的環節遇到了較大的技術困難,過程中適用了3種技術方案:一是利用Avidm平臺的文檔加密組件實現文檔加密,利用遠程Webservice上傳文件方式實現2個服務器之間的實體文件同步;利用POST頁面技術實現文件的加密和文件傳輸,但是Avidm平臺的頁面作了POST提交限制,每次提交時頁面有隨機生成的密碼;反編譯Avidm的相關功能代碼,在Avidm服務器上編寫了多個JSP頁面實現了加密和文件傳輸。
二是數據正確性一致性保證。在項目運行過程中,由于采用快速迭代方式進行軟件開發,產生的諸多版本從始至終要保證其正確性,因此CMTool系統通過設置配置管理項依賴關系、選擇審批流程達到對入庫配置項的控制,同時CMtool實現了從軟件入庫到產品出庫生產的全流程管理和控制,在軟件生產過程中要將從CMTool中出庫的產品進行原始數據的光盤刻錄,這就對數據的正確性、刻錄數據與原始數據的一致性提出了很高的要求。
為確保數據的正確性和一致性,系統進行了設計。首先,研制專用文件上傳壓縮工具CmtoolZip,用于壓縮代碼類文件。使用該工具壓縮時,工具對壓縮文件夾下所有的文件進行MD5碼校驗,并生成一個標準的xml文件,并將該文件一并添加到zip文件中;其次,文件在入受控庫、產品庫過程中,一直保留這種固化格式的zip格式文件;接著文件在出庫進行刻錄時系統讀取該zip文件,并使用相同的MD5碼加密算法,與xml文件中保留的MD5碼信息逐一比對文件的正確性,確認無誤后再從原始文件中去掉xml文件,發送至光盤刻錄服務器進行刻錄。
通過以上方法,均可以有效保證刻錄文件與上傳原始文件的一致性,并避免傳輸、保存過程中數據出現錯誤的情況發生。
三是與生產流程的獨立模塊化設計。CMTool系統自身用于軟件的全生命周期配置管理,研制中又采用了快速迭代的開發模式,系統的數據庫中保留了大量軟件相關的信息,以以此為基礎應用于軟件相關的其它管理中,如軟件生產流程管理等。但是過多的管理功能如果集成,如果設計不好,就會造成系統龐大,使用復雜。為了避免該情況發生,在CMTool系統基礎上擴展其它軟件相關流程時,采用了1套數據、多個獨立模塊使用的設計思想。在該方法中,所有的模塊均使用系統中的用戶數據,并統一登錄主界面。在系統的實現方面,采用了數據層、業務層和界面層的分層設計,在各個層級中,分別針對不同的業務模塊進行獨立化模塊設計。
數據層:軟件配置管理數據作為系統的核心數據,不僅給配套管理模塊提供數據服務,還給其他相關的軟件管理流程模塊提供數據服務。此外,各個業務模塊根據自身的業務管理需求建立自身的數據,該數據通常僅為本業務服務。單系統的用戶數據是公共數據,在各個模塊中均可使用。
業務層:根據各個管理模塊的業務實際需求進行業務邏輯設計。在業務層各個軟件相關管理模塊的控制邏輯相互之間獨立,沒有任何關聯關系。所有的業務模塊僅從數據使用的角度上與配置管理模塊之間發生聯系。
界面層:界面是為業務流程服務的。在本系統中,所有業務管理模塊具有統一的登錄主界面,但是在登錄后根據用戶選擇,會分別進入各自的業務管理模塊,不同業務管理模塊之間的界面沒有關聯關系。
使用以上設計方法,可以確保每一個獨立功能模塊的可靠性、健壯性、易用性,并可以最大程度地保證新加模塊未來的擴展性和靈活性。
配置狀態報告及配置審核。在版本控制與配置狀態紀實的基礎上,采用事件驅動與定期相結合的方式自動生成配置狀態報告,快速迭代下的所有配置狀態通過電子郵件提交給組織級配置管理員、項目經理、質量人員和其它受影響的小組,使各相關利益方都能及時、快速的了解項目的進程。室級配置管理員還以事件驅動的方式對各項目軟件進行配置審核,填寫配置審核報告,并同步發送到相關利益方。針對快速迭代以及復雜狀態極易出現問題的現狀,特意設計軟件配置管理問題處理閉環流程,以確保交付軟件版本的正確性、連續性和完整性。
軟件配置管理問題處理閉環流程示意圖,如圖5所示。

圖5 軟件配置審核問題處理閉環流程
根據該方法開展的軟件配置管理活動,解決了多狀態并行研制模式下控制系統軟件配置項易發生沖突的問題以及了軟件配置項易發生管理混亂的問題,提出了嚴格的配置管理控制要求,制定了軟件配置管理活動的實施細則,保障了型號軟件研制過程的有序、可靠。基于該方法對型號日益復雜和多變的技術狀態進行配置管理,能夠使軟件研制過程的可控性大大提高,確保軟件產品版本的正確性。
快速迭代狀態下控制系統軟件配置管理新技術已應用于航天某型號20個軟件配置項的研制開發的全過程。結果表明,較好的適應了型號軟件多狀態多批次快速變化的要求,解決了軟件配置項易發生管理混亂的問題。該型號軟件項目至今已在CMTool上運行并完成了多發的飛行試驗,該項目的研制成果較好的滿足了本階段的任務要求,達到了預期的效果,保障了型號軟件研制過程的有序、可靠,最終使得該型號研制的軟件在不同狀態下的版本零錯誤。
該方法同樣適用于其它型號軟件的研制流程,隨著研究所對CMTool宣貫力度的進一步加大,已經有越來越多的型號軟件上線運行,員工的過程管理的意識有了提高,能夠動運用工具,并逐漸融入到日常的科研生產中;并且工具在一些關鍵點上進行了強制限制,規范研制流程,幫助設計人員養成良好的習慣;同時工具除了進行配置管理,還和Avidm等工具進行了深度連接,以及把產品庫及技術保障室的有關工作也納入進來一并管理,整個流程目前運轉正常,大大的提高了全員勞動效率。后續工作中,將深入開展軟件配置管理自動化平臺系統的研究,也將探索與型號任務管理相關工具的連接,通過不斷實踐,持續探索配置管理系統對于軟件過程改進的更為便捷有效的方法。該系統目前已推廣到運載、戰略、戰術等全型號配套軟件配置項研制開發的全過程,應用效果和潛在應用前景十分明顯,具有廣泛的推廣價值。