鮑冬梅,劉富榮,張慧勇
(中國航發(fā)商用航空發(fā)動機有限責任公司設(shè)計研發(fā)中心控制系統(tǒng)部,上海 201108)
商用航空發(fā)動機全權(quán)限數(shù)字電子控制(full authority digital engine control,FADEC)軟件開發(fā)和驗證目標均需滿足RTCA DO-178C的要求。國外先進航空發(fā)動機機載軟件的代碼量約為百萬行,設(shè)計保證等級最高為A級(即可能造成災(zāi)難性后果),成本約為數(shù)百美元/行。為了提高軟件質(zhì)量、降低研制成本,基于模型的軟件設(shè)計(model-based design,MBD)技術(shù)成為機載軟件研制的主流趨勢。與傳統(tǒng)的自然語言相比,模型將軟件設(shè)計表述為可以執(zhí)行的規(guī)約。通過模型仿真,驗證設(shè)計的準確性和一致性,以降低后期測試引起的設(shè)計反復和成本[1]。
隨著計算機技術(shù)的進步,航空機載軟件實現(xiàn)的功能逐漸增多、規(guī)模不斷擴大。軟件項目已不可能由單人獨立完成。軟件開發(fā)逐漸過渡到了工程化、產(chǎn)業(yè)化的多人協(xié)同開發(fā)模式。針對機載軟件的協(xié)同開發(fā)模式表現(xiàn)為以下3個部分。①軟件開發(fā)組織由單一的軟件工程專業(yè)人員演變?yōu)橛刹煌瑢I(yè)背景的人員組成[2]。②軟件開發(fā)由串行開發(fā)過渡為并行開發(fā),在部分需求到位后即可開展軟件設(shè)計和測試;與此同時,根據(jù)新的軟件需求和測試過程中發(fā)現(xiàn)的軟件缺陷,不斷進行軟件的設(shè)計更改。③軟件開發(fā)過程逐漸規(guī)范化,開發(fā)過程和標準不斷通過工具固化為自動化過程。
開發(fā)過程中,如何保證多人并行開展工作又互不干擾,如何有效控制軟件技術(shù)狀態(tài),如何幫助設(shè)計人員將精力聚焦于設(shè)計工作本身、而不是工具的使用和流程的流轉(zhuǎn)上,是多人協(xié)同開發(fā)過程中面臨的新問題。航空機載軟件協(xié)同開發(fā)策略能有效解決上述問題。該策略給出了基于ClearCase的工作空間設(shè)置、數(shù)據(jù)管理、標簽管理、權(quán)限管理以及一些有利于協(xié)同開發(fā)的設(shè)計指導等,從多方面解決了上述問題。
航空發(fā)動機機載軟件研制常用的工具包括需求管理工具DOORS、模型設(shè)計工具Matlab/Simulink或SCADE、編碼和編譯工具,以及自主開發(fā)的全數(shù)字集成環(huán)境、目標集成環(huán)境、配置管理工具ClearCase、變更管理工具ClearQuest等。軟件研制過程中,均需通過配置管理工具ClearCase進行管理。
ClearCase由IBM公司研制。該工具提供了一個開放性架構(gòu)[3],能夠滿足不同地域和規(guī)模的開發(fā)團隊對軟件版本控制的要求,近年來被廣泛應(yīng)用于航空機載軟件研制。利用其提供的統(tǒng)一變更管理(unified changed management,UCM)模式,一方面將個人工作空間和團隊集成空間隔離,減少了個人工作對項目技術(shù)狀態(tài)的影響和相互干擾;另一方面提供了數(shù)據(jù)的自動提交和同步功能,可實現(xiàn)個人工作空間與團隊集成空間的數(shù)據(jù)交互。其既可將個人的工作成果提交到團隊的集成空間中,又可將集成空間的變更更新到個人的工作空間中,并記錄下工作空間之間的數(shù)據(jù)關(guān)系[4]。
航空機載軟件協(xié)同開發(fā)策略主要通過ClearCase UCM模式實現(xiàn)工作空間的構(gòu)建[5]。工作空間分為3個層級,其設(shè)置如圖1所示。
圖1 工作空間設(shè)置示意圖
各層級的作用和數(shù)據(jù)遷移關(guān)系如下。
①集成流。其用于存儲和發(fā)布軟件過程數(shù)據(jù)、建立軟件標簽,不開展任何研發(fā)活動。
②調(diào)試流。其在開發(fā)階段,供軟件開發(fā)人員開展軟件設(shè)計、編碼、集成和調(diào)試。開發(fā)人員同步集成流數(shù)據(jù)后,進行軟件開發(fā)、過程數(shù)據(jù)的存儲,并最終將過程數(shù)據(jù)提交到集成流。若需要多人同時開展軟件開發(fā)活動,可根據(jù)參與人員情況設(shè)置多條調(diào)試子流,并由軟件集成人員將不同調(diào)試子流上的調(diào)試成果更新到調(diào)試流。
③測試流。其在驗證階段供軟件驗證人員進行軟件測試。驗證人員同步集成流數(shù)據(jù),用于軟件源代碼和模型驗證、軟/硬件集成測試等過程的開展和數(shù)據(jù)的存放。如果需要多人同時開展測試,可設(shè)置多條測試子流。如果測試過程中發(fā)現(xiàn)缺陷,先提交變更申請,在調(diào)試流完成軟件修復后將數(shù)據(jù)同步到測試流,繼續(xù)開展回歸測試工作;直到完成缺陷修復和驗證,將更改后的軟件數(shù)據(jù)更新至集成流。
軟件過程數(shù)據(jù)的合理組織和存放有利于過程數(shù)據(jù)的版本追溯和控制。這也是軟件協(xié)同開發(fā)的基礎(chǔ)。機載軟件協(xié)同開發(fā)過程中,各級工作空間中的軟件過程數(shù)據(jù)通過協(xié)同開發(fā)目錄的形式存放和管理。為保證提交和同步時數(shù)據(jù)準確,要求每個工作空間中的協(xié)同開發(fā)目錄結(jié)構(gòu)一致[5]。協(xié)同開發(fā)目錄結(jié)構(gòu)如圖2所示。
圖2 協(xié)同開發(fā)目錄結(jié)構(gòu)圖
協(xié)同開發(fā)目錄結(jié)構(gòu)中數(shù)據(jù)的分類原則是:①軟件研制不同過程的數(shù)據(jù)隔離;②不同配置管理對象的數(shù)據(jù)完整。
各研制階段和目錄及存放數(shù)據(jù)關(guān)系如表1所示。
表1 研制階段目錄及存放數(shù)據(jù)關(guān)系表
標簽用于標記軟件產(chǎn)品的技術(shù)狀態(tài)[6]。按建立時機的不同,其分為正式標簽和非正式標簽。正式標簽用于提交軟件測試前記錄版本狀態(tài),需要提交申請才能建立;非正式標簽用于標記開發(fā)過程中軟件的版本狀態(tài),由開發(fā)人員自行創(chuàng)建。
標簽的命名形式為:“軟件產(chǎn)品代號_標簽流水號”。軟件產(chǎn)品代號與流名稱一致。標簽流水號分為三段,初始值為V0.00.00,第一段和第二段的數(shù)字用于正式標簽,第三段的數(shù)字用于非正式標簽。第二段和第三段的流水號為2位阿拉伯數(shù)字,從00開始遞增。當其前一段版本號升級后,該流水號歸零,重新從00開始遞增。
協(xié)同開發(fā)過程中,過程數(shù)據(jù)在調(diào)試流、測試流和集成流之間同步和提交。通過非正式標簽繼承正式標簽流水號的前兩段,可追溯調(diào)試流/測試流與集成流的數(shù)據(jù)遷移關(guān)系。標簽繼承關(guān)系如圖3所示。
圖3 標簽繼承關(guān)系圖
初始的軟件標簽為“集成流_V0.00.00”。
首先,集成人員將初始標簽的數(shù)據(jù)同步到調(diào)試流/調(diào)試子流開展軟件研制,直到軟硬件集成調(diào)試完畢并建立標簽,如“調(diào)試流_V0.00.03”。然后,集成人員將調(diào)試流的數(shù)據(jù)通過ClearCase自動提交到集成流,并在集成流確認數(shù)據(jù)提交無誤后,申請建立新的正式標簽“集成流_V0.01.00”。隨后,軟件研制進入測試階段。
集成人員將“集成流_V0.01.00”的數(shù)據(jù)同步到測試流。測試人員開展測試驗證活動,發(fā)現(xiàn)缺陷后開發(fā)人員直接在測試流上修改。測試和修改活動不斷迭代,直到完成全部軟件缺陷的修復和驗證。此時,集成人員將測試流上的軟件數(shù)據(jù)“測試流V_0.01.03”提交至集成流,并建立標簽“集成流_V0.02.00”。驗證人員確認“集成流_V0.02.00”和“測試流V_0.01.03”軟件技術(shù)狀態(tài)的一致性,如果確認過程中發(fā)現(xiàn)仍有缺陷或者需求變更,則繼續(xù)在測試流中修復和驗證,以此類推,直到驗證充分。
為了控制軟件數(shù)據(jù)狀態(tài)、幫助設(shè)計人員將精力集中于設(shè)計工作本身而非工具使用和流程流轉(zhuǎn),對開發(fā)過程中相關(guān)人員的權(quán)限進行了約束,設(shè)置了項目負責人、配置管理員、軟件開發(fā)、集成人員及測試人員等層級[7]。
首先,由項目負責人申請軟件產(chǎn)品代號,由配置管理人員根據(jù)代號創(chuàng)建工作空間。一級協(xié)同開發(fā)目錄由配置管理員創(chuàng)建,二級目錄由軟件集成人員創(chuàng)建并由ClearCase控制,不允許開發(fā)人員和測試人員修改目錄結(jié)構(gòu)。其次,正式標簽的建立需由軟件集成人員提交標簽建立申請后,經(jīng)配置管理員配置審核、項目負責人審批通過后,由配置管理員創(chuàng)建。軟件集成人員負責非正式標簽的創(chuàng)建,以及各個流的數(shù)據(jù)提交和同步。軟件開發(fā)和測試人員只需聚焦于設(shè)計與測試工作本身,對所負責的文件進行檢入/檢出操作,不需要額外的工具操作和流程流轉(zhuǎn)。
軟件開發(fā)過程中,存在多個項目共用的算法和邏輯,應(yīng)盡量將這些算法和邏輯提煉成獨立于具體軟件項目的通用庫,并由專人進行設(shè)計開發(fā)、變更和維護[7],制定通用庫的引用和升級規(guī)則,便于各個項目使用通用庫[8]。ClearCase提供了組件引用功能,幫助項目引用某一版本的通用庫數(shù)據(jù)。
為提高協(xié)同開發(fā)的效率、保證過程數(shù)據(jù)的一致性,應(yīng)盡量減少多個工程師同時維護同一數(shù)據(jù)文件的情況。解決該問題的主要方法是合理設(shè)計軟件架構(gòu),按照“功能高內(nèi)聚、數(shù)據(jù)低耦合”的原則將功能分配到同一個C文件或者Matlab/Simulink模型文件中[9]。
此外,Matlab/Simulink提供了Model reference模型引用機制,以實現(xiàn)模型的協(xié)同開發(fā)。上層模型通過Simulink reference模塊引用下層模型,建立調(diào)用關(guān)系;上下層模型彼此獨立,在接口不變的情況下,不同層模型的開發(fā)工作互不干擾[10]。
中國航發(fā)商發(fā)根據(jù)航空機載軟件大規(guī)模、高安全和高成本的特點,制定了基于ClearCase的航空機載軟件MBD協(xié)同開發(fā)策略。通過多個機載軟件項目的實際應(yīng)用,證明了該軟件開發(fā)策略可行、高效。采用該流程有利于加快軟件研制進度,能夠提升軟件技術(shù)狀態(tài)管控能力并降低軟件研制成本。后續(xù)可進一步研究協(xié)同開發(fā)過程中ClearCase與其他開發(fā)、驗證工具之間的數(shù)據(jù)交互策略,開展工具二次開發(fā),加強工具間的集成度,提高協(xié)同開發(fā)的自動化水平,進一步提高研制效率。