鮑冬梅,劉富榮,張慧勇
(中國航發商用航空發動機有限責任公司設計研發中心控制系統部,上海 201108)
商用航空發動機全權限數字電子控制(full authority digital engine control,FADEC)軟件開發和驗證目標均需滿足RTCA DO-178C的要求。國外先進航空發動機機載軟件的代碼量約為百萬行,設計保證等級最高為A級(即可能造成災難性后果),成本約為數百美元/行。為了提高軟件質量、降低研制成本,基于模型的軟件設計(model-based design,MBD)技術成為機載軟件研制的主流趨勢。與傳統的自然語言相比,模型將軟件設計表述為可以執行的規約。通過模型仿真,驗證設計的準確性和一致性,以降低后期測試引起的設計反復和成本[1]。
隨著計算機技術的進步,航空機載軟件實現的功能逐漸增多、規模不斷擴大。軟件項目已不可能由單人獨立完成。軟件開發逐漸過渡到了工程化、產業化的多人協同開發模式。針對機載軟件的協同開發模式表現為以下3個部分。①軟件開發組織由單一的軟件工程專業人員演變為由不同專業背景的人員組成[2]。②軟件開發由串行開發過渡為并行開發,在部分需求到位后即可開展軟件設計和測試;與此同時,根據新的軟件需求和測試過程中發現的軟件缺陷,不斷進行軟件的設計更改。③軟件開發過程逐漸規范化,開發過程和標準不斷通過工具固化為自動化過程。
開發過程中,如何保證多人并行開展工作又互不干擾,如何有效控制軟件技術狀態,如何幫助設計人員將精力聚焦于設計工作本身、而不是工具的使用和流程的流轉上,是多人協同開發過程中面臨的新問題。航空機載軟件協同開發策略能有效解決上述問題。該策略給出了基于ClearCase的工作空間設置、數據管理、標簽管理、權限管理以及一些有利于協同開發的設計指導等,從多方面解決了上述問題。
航空發動機機載軟件研制常用的工具包括需求管理工具DOORS、模型設計工具Matlab/Simulink或SCADE、編碼和編譯工具,以及自主開發的全數字集成環境、目標集成環境、配置管理工具ClearCase、變更管理工具ClearQuest等。軟件研制過程中,均需通過配置管理工具ClearCase進行管理。
ClearCase由IBM公司研制。該工具提供了一個開放性架構[3],能夠滿足不同地域和規模的開發團隊對軟件版本控制的要求,近年來被廣泛應用于航空機載軟件研制。利用其提供的統一變更管理(unified changed management,UCM)模式,一方面將個人工作空間和團隊集成空間隔離,減少了個人工作對項目技術狀態的影響和相互干擾;另一方面提供了數據的自動提交和同步功能,可實現個人工作空間與團隊集成空間的數據交互。其既可將個人的工作成果提交到團隊的集成空間中,又可將集成空間的變更更新到個人的工作空間中,并記錄下工作空間之間的數據關系[4]。
航空機載軟件協同開發策略主要通過ClearCase UCM模式實現工作空間的構建[5]。工作空間分為3個層級,其設置如圖1所示。

圖1 工作空間設置示意圖
各層級的作用和數據遷移關系如下。
①集成流。其用于存儲和發布軟件過程數據、建立軟件標簽,不開展任何研發活動。
②調試流。其在開發階段,供軟件開發人員開展軟件設計、編碼、集成和調試。開發人員同步集成流數據后,進行軟件開發、過程數據的存儲,并最終將過程數據提交到集成流。若需要多人同時開展軟件開發活動,可根據參與人員情況設置多條調試子流,并由軟件集成人員將不同調試子流上的調試成果更新到調試流。
③測試流。其在驗證階段供軟件驗證人員進行軟件測試。驗證人員同步集成流數據,用于軟件源代碼和模型驗證、軟/硬件集成測試等過程的開展和數據的存放。如果需要多人同時開展測試,可設置多條測試子流。如果測試過程中發現缺陷,先提交變更申請,在調試流完成軟件修復后將數據同步到測試流,繼續開展回歸測試工作;直到完成缺陷修復和驗證,將更改后的軟件數據更新至集成流。
軟件過程數據的合理組織和存放有利于過程數據的版本追溯和控制。這也是軟件協同開發的基礎。機載軟件協同開發過程中,各級工作空間中的軟件過程數據通過協同開發目錄的形式存放和管理。為保證提交和同步時數據準確,要求每個工作空間中的協同開發目錄結構一致[5]。協同開發目錄結構如圖2所示。

圖2 協同開發目錄結構圖
協同開發目錄結構中數據的分類原則是:①軟件研制不同過程的數據隔離;②不同配置管理對象的數據完整。
各研制階段和目錄及存放數據關系如表1所示。

表1 研制階段目錄及存放數據關系表
標簽用于標記軟件產品的技術狀態[6]。按建立時機的不同,其分為正式標簽和非正式標簽。正式標簽用于提交軟件測試前記錄版本狀態,需要提交申請才能建立;非正式標簽用于標記開發過程中軟件的版本狀態,由開發人員自行創建。
標簽的命名形式為:“軟件產品代號_標簽流水號”。軟件產品代號與流名稱一致。標簽流水號分為三段,初始值為V0.00.00,第一段和第二段的數字用于正式標簽,第三段的數字用于非正式標簽。第二段和第三段的流水號為2位阿拉伯數字,從00開始遞增。當其前一段版本號升級后,該流水號歸零,重新從00開始遞增。
協同開發過程中,過程數據在調試流、測試流和集成流之間同步和提交。通過非正式標簽繼承正式標簽流水號的前兩段,可追溯調試流/測試流與集成流的數據遷移關系。標簽繼承關系如圖3所示。

圖3 標簽繼承關系圖
初始的軟件標簽為“集成流_V0.00.00”。
首先,集成人員將初始標簽的數據同步到調試流/調試子流開展軟件研制,直到軟硬件集成調試完畢并建立標簽,如“調試流_V0.00.03”。然后,集成人員將調試流的數據通過ClearCase自動提交到集成流,并在集成流確認數據提交無誤后,申請建立新的正式標簽“集成流_V0.01.00”。隨后,軟件研制進入測試階段。
集成人員將“集成流_V0.01.00”的數據同步到測試流。測試人員開展測試驗證活動,發現缺陷后開發人員直接在測試流上修改。測試和修改活動不斷迭代,直到完成全部軟件缺陷的修復和驗證。此時,集成人員將測試流上的軟件數據“測試流V_0.01.03”提交至集成流,并建立標簽“集成流_V0.02.00”。驗證人員確認“集成流_V0.02.00”和“測試流V_0.01.03”軟件技術狀態的一致性,如果確認過程中發現仍有缺陷或者需求變更,則繼續在測試流中修復和驗證,以此類推,直到驗證充分。
為了控制軟件數據狀態、幫助設計人員將精力集中于設計工作本身而非工具使用和流程流轉,對開發過程中相關人員的權限進行了約束,設置了項目負責人、配置管理員、軟件開發、集成人員及測試人員等層級[7]。
首先,由項目負責人申請軟件產品代號,由配置管理人員根據代號創建工作空間。一級協同開發目錄由配置管理員創建,二級目錄由軟件集成人員創建并由ClearCase控制,不允許開發人員和測試人員修改目錄結構。其次,正式標簽的建立需由軟件集成人員提交標簽建立申請后,經配置管理員配置審核、項目負責人審批通過后,由配置管理員創建。軟件集成人員負責非正式標簽的創建,以及各個流的數據提交和同步。軟件開發和測試人員只需聚焦于設計與測試工作本身,對所負責的文件進行檢入/檢出操作,不需要額外的工具操作和流程流轉。
軟件開發過程中,存在多個項目共用的算法和邏輯,應盡量將這些算法和邏輯提煉成獨立于具體軟件項目的通用庫,并由專人進行設計開發、變更和維護[7],制定通用庫的引用和升級規則,便于各個項目使用通用庫[8]。ClearCase提供了組件引用功能,幫助項目引用某一版本的通用庫數據。
為提高協同開發的效率、保證過程數據的一致性,應盡量減少多個工程師同時維護同一數據文件的情況。解決該問題的主要方法是合理設計軟件架構,按照“功能高內聚、數據低耦合”的原則將功能分配到同一個C文件或者Matlab/Simulink模型文件中[9]。
此外,Matlab/Simulink提供了Model reference模型引用機制,以實現模型的協同開發。上層模型通過Simulink reference模塊引用下層模型,建立調用關系;上下層模型彼此獨立,在接口不變的情況下,不同層模型的開發工作互不干擾[10]。
中國航發商發根據航空機載軟件大規模、高安全和高成本的特點,制定了基于ClearCase的航空機載軟件MBD協同開發策略。通過多個機載軟件項目的實際應用,證明了該軟件開發策略可行、高效。采用該流程有利于加快軟件研制進度,能夠提升軟件技術狀態管控能力并降低軟件研制成本。后續可進一步研究協同開發過程中ClearCase與其他開發、驗證工具之間的數據交互策略,開展工具二次開發,加強工具間的集成度,提高協同開發的自動化水平,進一步提高研制效率。