劉 文,解文濤,王 明, 劉 媛
(中國航空工業(yè)集團公司 西安航空計算技術(shù)研究所,陜西 西安 710065)
隨著機載軟件復(fù)雜程度不斷提高,軟件在民用飛機及機載系統(tǒng)承擔(dān)功能不斷增多,機載軟件的關(guān)鍵程度和安全性可靠性要求不斷提升,機載軟件開發(fā)過程的重要程度日益顯現(xiàn)。一方面,軟件需求作為機載軟件生命周期中重要的數(shù)據(jù)橋梁,承接了系統(tǒng)需求與軟件實現(xiàn),是機載軟件開發(fā)和軟件驗證的基礎(chǔ)。另一方面,RTCA DO-178[1]作為機載軟件在適航過程中的符合性驗證方法,定義了明確的軟件需求開發(fā)目標,強調(diào)了基于需求的驗證,因此軟件需求開發(fā)活動對適航符合性驗證工作的充分性和完備性至關(guān)重要。綜上所述,軟件需求應(yīng)被作為機載軟件開發(fā)過程中的核心要素進行開發(fā)和管理,軟件需求開發(fā)過程也應(yīng)該遵循相應(yīng)的要求開展。
RTCA DO-178對軟件需求的定義是:“對于軟件在給定輸入和約束條件下,將要生成什么的一個描述。軟件需求包含高級別需求(High-Level Requirements,HLR)和低級別需求(Low-Level Requirements,LLR)?!盵1]需要注意的是,軟件需求定義了軟件需要做什么,只描述結(jié)果,不應(yīng)描述設(shè)計或?qū)崿F(xiàn)細節(jié),也不應(yīng)描述管理細節(jié)。在實際項目軟件開發(fā)過程中,涉及的需求有3種:系統(tǒng)分配給軟件的需求、軟件高級別需求和軟件低級別需求,其中軟件高級別需求和軟件低級別需求都是作為軟件需求開發(fā)過程的輸出物而需要開發(fā)方關(guān)注的。
軟件高級別需求是對系統(tǒng)分配給軟件的系統(tǒng)需求、系統(tǒng)架構(gòu)設(shè)計中分配給軟件的功能、硬件接口及安全性相關(guān)需求進行分析和細化后形成的,用于指導(dǎo)軟件設(shè)計人員開發(fā)低級別需求。軟件高級別需求在軟件需求過程中被開發(fā),傳遞至軟件設(shè)計過程。與軟件高級別需求對應(yīng),軟件低級別需求是根據(jù)軟件高級別需求、衍生需求和設(shè)計約束,結(jié)合軟件架構(gòu)設(shè)計而開發(fā)的,用于指導(dǎo)軟件設(shè)計人員開展軟件實現(xiàn)。軟件低級別需求在軟件設(shè)計過程中被開發(fā),傳遞至軟件實現(xiàn)過程。是否需要將軟件需求劃分為高級別需求和低級別需求,應(yīng)根據(jù)軟件開發(fā)保證等級(Design Assurance Level,DAL)、軟件規(guī)模等方面綜合考慮。
在軟件需求開發(fā)過程中,由于架構(gòu)設(shè)計、安全性設(shè)計等因素,可能會產(chǎn)生一些無法追溯至上一級需求的軟件高級別需求或軟件低級別需求,這些需求通常被稱為衍生需求或派生需求(Derived Requirements)。由于上一級需求已經(jīng)經(jīng)過了系統(tǒng)安全性評估,可以確認其對系統(tǒng)安全性的影響,但由于衍生需求無法連接至上一級需求,即無法證明衍生需求對系統(tǒng)安全性無影響,因此,DO-178B中提出衍生軟件需求應(yīng)反饋至系統(tǒng)安全性評估過程,來評估衍生軟件需求是否對系統(tǒng)安全性造成影響[2],在此基礎(chǔ)上DO-178C[1]進一步明確,衍生軟件需求應(yīng)反饋至系統(tǒng)開發(fā)過程,確認是否對系統(tǒng)需求造成影響。在軟件需求開發(fā)過程中,衍生需求將專門標識出來,例如增加衍生需求的屬性,在需求評審過程中,衍生需求應(yīng)提交至系統(tǒng)工程師和安全性工程師進行評審。
綜上所述,無論高級別或低級別的軟件需求,都是軟件開發(fā)過程的關(guān)鍵生命周期數(shù)據(jù)。機載軟件研制方需要在軟件策劃階段對軟件需求的開發(fā)活動進行識別,定義需求開發(fā)和需求驗證策略,確定需求管理要求。
美國航空無線電技術(shù)委員會(RTCA)于2011年發(fā)布了RTCA DO-178C《機載系統(tǒng)合格審定過程中的軟件考慮》[1],這一標準是工業(yè)界和適航局方針對機載軟件開發(fā)過程達成的共識,目前已被美國聯(lián)邦航空局(FAA)、歐洲航空安全局(EASA)和中國民用航空局(CAAC)作為機載軟件適航可接受的符合性方法之一。
RTCA DO-178C針對不同等級機載軟件定義了不同的目標,不同的目標對應(yīng)了不同的軟件開發(fā)活動。機載軟件研制方在軟件開發(fā)過程前期清晰地識別需求相關(guān)目標,定義相關(guān)需求開發(fā)活動和需求管理活動,制訂詳細的開發(fā)計劃,在軟件生命周期中嚴格按照計劃開展相應(yīng)活動,從而表明對RTCA DO-178C相應(yīng)等級目標的符合性。
RTCA DO-178C附錄A共定義了71個目標,涉及軟件高級別需求的目標共計9個(見表1),涉及軟件低級別需求的目標共計9個(見表2),覆蓋衍生需求、需求正確性和完整性、需求追溯性、算法精確性等方面,目的是保證軟件需求開發(fā)的有效性。
表1 RTCA DO-178C軟件高級別需求相關(guān)目標
表2 RTCA DO-178C軟件低級別需求相關(guān)目標
表1和表2中的目標分別針對軟件需求過程、軟件設(shè)計過程和軟件驗證過程,一般被分解為需求分析、需求定義、需求驗證、需求實現(xiàn)、需求測試和需求變更6個方面過程活動。
機載軟件適航過程中,軟件研制方需要根據(jù)DAL(Design Assurance Level,軟件開發(fā)保證等級)來表明對相應(yīng)的目標的符合性。例如,對于DAL A級軟件,需要滿足表1和表2中全部目標,而對于DAL D級軟件,僅需要滿足表1中第1、2、3、4、8項。開發(fā)方會在軟件合格審定計劃中描述需要符合的目標和用于表明對目標符合性的證據(jù)材料,在軟件開發(fā)初期與審查局方溝通,并達成一致。
在部分軟件開發(fā)過程中,軟件開發(fā)方有可能未嚴格區(qū)分軟件高級別需求和軟件低級別需求,而是將軟件高級別需求進行細化后與低級別需求合并,將兩個層級的軟件需求作為一個數(shù)據(jù)項來管理,這種開發(fā)方式在機載軟件適航中存在一定風(fēng)險。FAA發(fā)布的CAST-15報告[3]中提到FAA不建議將高級別和低級別的需求合并入一個數(shù)據(jù)項中。如果軟件等級達到DAL C級以上,則不建議采用這種方式管理軟件需求,原因是這將增加DO-178相關(guān)目標表明符合性的困難程度[3]。主要原因如下。
(1)無法表明軟件高級別需求和低級別需求之間的追溯性。從表2中可以看出,RTCA DO-178C中目標A-4,#6“低級別需求可追蹤到高級別需求”,通常對該條的符合性是通過低級別需求向高級別需求的追溯來進行,如果不區(qū)分高級別需求和低級別需求,則兩層需求之間的追溯關(guān)系將無法清晰地呈現(xiàn),也無法表明對RTCA DO-178C中目標A-4,#6的符合性。
(2)可能會遺漏衍生需求,因為合并后兩個層級需求之間的追溯關(guān)系變得不明顯,容易忽視部分未追溯到上層需求的衍生需求,導(dǎo)致這部分衍生需求未反饋至系統(tǒng)安全性評估過程,進而產(chǎn)生安全性相關(guān)風(fēng)險。
(3)軟件變更影響分析更加復(fù)雜。完整的變更影響分析依靠軟件各層數(shù)據(jù)之間的追溯性,這樣在變更分析過程中能夠明確受影響的組件和數(shù)據(jù)。如果軟件高級別需求和軟件低級別需求合并之后,缺少兩者之間的追溯信息,軟件更改影響分析和驗證策劃中無法清晰地識別出受影響的軟件需求、軟件測試用例及結(jié)果,最終將影響軟件符合性表明。
基于上述原因,在DAL C級以上機載軟件開發(fā)過程中,需要充分考慮需求層次的劃分,盡可能劃分清晰的層次結(jié)構(gòu),保證需求數(shù)據(jù)能夠發(fā)揮其最大作用。
軟件需求開發(fā)過程將在軟件生命周期過程中迭代進行,軟件需求的分析、定義及變更等活動會根據(jù)軟件成熟度反復(fù)開展。軟件研制方應(yīng)通過組織內(nèi)部流程保證各層級開發(fā)的需求質(zhì)量保持一致性,確保需求實現(xiàn)和需求驗證活動是基于需求開展的?;诠P者工程經(jīng)驗,軟件工程團隊在軟件需求開發(fā)過程中應(yīng)關(guān)注以下內(nèi)容。
在RTCA DO-178C的軟件策劃過程中,對于DAL為A、B、C的機載軟件應(yīng)具有軟件需求標準(見RTCA DO-178C目標A-1,#5),同時軟件高級別需求和軟件低級別需求應(yīng)滿足定義的軟件需求標準(分別見RTCA DO-178C目標A-3,#5和目標A-4,#5)。為了保證軟件需求內(nèi)部及軟件需求之間的協(xié)調(diào)一致,軟件需求標準為軟件需求開發(fā)定義了方法、規(guī)則、約束及管理工具,并對需求風(fēng)格、需求質(zhì)量、需求屬性、需求顆粒度、需求管理工具等方面的內(nèi)容進行約束,保證各層級軟件需求的規(guī)范性和質(zhì)量一致性,便于軟件需求管理和需求質(zhì)量的可控[4]。例如,在項目級需求標準中統(tǒng)一定義軟件高層級需求和低層級需求的編號規(guī)則,防止各軟件組件需求編號不協(xié)調(diào),不利于理解和使用。軟件需求標準可以在軟件開發(fā)方組織層級定義,也可以根據(jù)項目實際情況在項目層級定義,無論哪種形式都需要保證軟件需求標準能夠被所有軟件需求開發(fā)人員正確理解和掌握。
軟件質(zhì)量保證工程師在審計軟件需求產(chǎn)品時,應(yīng)關(guān)注需求數(shù)據(jù)對需求標準的符合情況,例如需求屬性的完整性、規(guī)則的符合性等,軟件質(zhì)量保證工程師可以參加軟件需求評審,也可以對軟件需求數(shù)據(jù)進行抽查。此外,軟件質(zhì)量保證工程師需要關(guān)注需求開發(fā)過程對需求標準和軟件開發(fā)計劃的符合性,例如需求管理工具的使用情況、需求變更的規(guī)范性等。
雖然RTCA DO-178未明確區(qū)分軟件需求開發(fā)和軟件需求管理,但是在需求工程領(lǐng)域,對需求開發(fā)和需求管理分別進行了定義,需求管理能夠保持需求數(shù)據(jù)的完整性、準確性和可追溯性。實際上相關(guān)需求管理要求也隱含在RTCA DO-178目標活動中,因此軟件生命周期應(yīng)將軟件需求管理作為一項技術(shù)管理活動開展。軟件需求管理的核心是管理需求變更,通常包括需求管理策略制定、需求變更管理、需求基線管理、需求追蹤管理、需求發(fā)布管理等內(nèi)容,而軟件需求捕獲、分析、定義和驗證等開發(fā)類活動,在RTCA DO-178中被定義在軟件開發(fā)過程和軟件驗證過程中,不在軟件需求管理過程中進行討論。
建議在系統(tǒng)級需求、軟件高級別需求、軟件低級別需求等層級開展需求管理,從而保證各層級需求的完整性、活動的協(xié)調(diào)性和一致性,有效實現(xiàn)各層級需求數(shù)據(jù)之間的追溯性。重視并嚴格管理需求基線,控制進入基線的需求數(shù)據(jù)變更,保證需求變更的合理性、充分性和證據(jù)鏈的正確性。需求基線管理和需求變更管理是相互關(guān)聯(lián)的兩個活動,建立基線的時機和變更需求的條件應(yīng)該在需求管理流程中進行定義。
軟件研制方應(yīng)形成完整的需求管理流程,作為軟件開發(fā)流程或軟件工程化管理的組成部分,在項目中按照流程進行需求管理。研制方可以在項目軟件開發(fā)計劃或項目需求管理計劃中明確項目適用的需求管理活動、人員角色和職責(zé)、采用的需求管理工具、需求管理輸出物等。
軟件驗證是基于軟件需求的驗證,包含軟件高級別需求和軟件低級別需求。表1和表2中列出的目標中包含了對軟件高級別需求的驗證目標和軟件低級別需求的驗證目標,通常滿足目標使用的驗證方法包括分析、評審和測試。在實際軟件驗證過程中,軟件研制方需要根據(jù)軟件的開發(fā)等級、軟件特征、軟件驗證工具及系統(tǒng)級驗證策略等因素,綜合考慮軟件驗證方法的使用,并在軟件驗證計劃中描述驗證目標、驗證方法和驗證活動。
采用評審的需求驗證方法是進行一個或多個同行評審,采用軟件需求評審檢查單覆蓋關(guān)注的需求,保證傳遞至設(shè)計過程的軟件需求是正確的和完整的。評審流程應(yīng)保證發(fā)現(xiàn)的問題及時進行記錄并確認問題反饋及關(guān)閉情況。需要注意的是,同行評審參與人員應(yīng)考慮軟件同行專家、項目系統(tǒng)工程師、項目安全性工程師等角色。
另一種常見的需求驗證方式是軟件測試[5]。軟件測試有時會劃分為軟件測試運行和軟件正式測試??紤]到多數(shù)情況下,軟件開發(fā)過程中設(shè)計和測試等活動是并行開展的,大部分集成和測試活動不能保證在同一基線上開展,因此前期的測試工作可以被視為非正式的軟件測試。待全部獨立的活動完成后,為了確認各軟件組件之間不存在互相影響等問題,表明對RTCA DO-178相應(yīng)驗證目標的符合性,需要在非正式軟件測試基礎(chǔ)上開展正式的軟件測試,由軟件質(zhì)量保證人員參加目擊并記錄結(jié)果。
在機載軟件開發(fā)過程中,軟件研制方應(yīng)重視整個軟件生命周期中的需求各項工作,在軟件策劃階段針對需求開發(fā)和需求管理的策略進行充分定義,在軟件開發(fā)階段開展需求開發(fā)和需求管理過程活動,確保定義的軟件需求在功能、性能及安全性等方面正確、完整,在軟件驗證階段進行充分的軟件評審、分析和測試工作。本文以RTCA DO-178需求相關(guān)目標為研究對象,分析了軟件高級別需求和低級別需求的差異,總結(jié)了軟件需求開發(fā)過程中需要關(guān)注的內(nèi)容,旨在為機載軟件開發(fā)人員定義軟件需求開發(fā)過程、提升軟件需求質(zhì)量提供參考。