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