專利名稱:軟件代碼的自動(dòng)開發(fā)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于軟件的代碼開發(fā)方面的方法及其實(shí)現(xiàn),例如,該方法可以用于諸如航空電子設(shè)備的系統(tǒng)的控制。
背景技術(shù):
這些年來(lái),隨著為了提供更加復(fù)雜的控制操作而對(duì)軟件的依賴的增長(zhǎng),在硬件中控制功能的基于軟件的實(shí)現(xiàn)變得越來(lái)越復(fù)雜。這導(dǎo)致了要開發(fā)非常大量的軟件代碼,以備復(fù)雜的控制操作之用。
一個(gè)這樣的示例是,開發(fā)用于諸如Eurofighter的現(xiàn)代戰(zhàn)斗機(jī)的航空電子設(shè)備系統(tǒng)內(nèi)的實(shí)現(xiàn)的軟件代碼。這種飛行器的性能特性在于其運(yùn)行在空氣動(dòng)力學(xué)非穩(wěn)定的狀態(tài)下。這需要大量極端復(fù)雜的計(jì)算機(jī)軟件的幫助。這種軟件的開發(fā)和認(rèn)證可能是非常耗時(shí)的過(guò)程。就Eurofighter而言,飛行控制系統(tǒng)已經(jīng)開發(fā)了12年以上。已知的是,包括用于安全關(guān)鍵系統(tǒng)的軟件在內(nèi),沒(méi)有軟件可以被絕對(duì)地證實(shí)為沒(méi)有差錯(cuò)或故障。過(guò)去已經(jīng)發(fā)生的基于陸、海和空實(shí)時(shí)和非實(shí)時(shí)系統(tǒng)的眾多的引人關(guān)注的失敗證實(shí)了這一結(jié)論。因此,這就需要廣泛的認(rèn)證過(guò)程,以確定軟件在所有情況下都以所期望的方式運(yùn)行。當(dāng)初始開發(fā)軟件時(shí),以及隨后對(duì)軟件或軟件運(yùn)行其中的系統(tǒng)進(jìn)行修改的任何時(shí)候,都需要這種認(rèn)證。這有助于確保軟件的運(yùn)行方式被認(rèn)證為是正確的。
對(duì)軟件的需求從系統(tǒng)規(guī)范導(dǎo)出。一旦軟件需求已被最終確定,就可以將規(guī)范寫為軟件需求的數(shù)學(xué)描述。然后開發(fā)軟件代碼以準(zhǔn)確地反映所述規(guī)范。尤其是對(duì)于安全關(guān)鍵軟件,這是通常由手工完成的非常辛苦的過(guò)程。這是開發(fā)任何軟件的非常低效的方法。
大約20年前,出現(xiàn)了一種稱作形式方法(EM)的軟件開發(fā)的數(shù)學(xué)方法,其是用于確保軟件代碼將準(zhǔn)確地反映規(guī)范的潛在方法。FM使用了寫為數(shù)學(xué)描述的形式規(guī)范。從這種形式規(guī)范可以通過(guò)各種數(shù)學(xué)技術(shù)來(lái)產(chǎn)生精確地實(shí)現(xiàn)所述形式規(guī)范的軟件代碼。這種數(shù)學(xué)技術(shù)可以經(jīng)受證明——一種稱作驗(yàn)證的技術(shù)。不過(guò),由于FM非常難于理解,F(xiàn)M尚未開發(fā)成廣泛可用的格式,還主要在學(xué)術(shù)界使用。FM使用了非常難理解的數(shù)學(xué)分支,這可能導(dǎo)致了人們不愿使用,從而沒(méi)能獲得更廣泛的認(rèn)可。尤其是,提供證明是非常費(fèi)力、耗時(shí)并且極端需要技巧的過(guò)程。此外,F(xiàn)M即使對(duì)于小的應(yīng)用程序都是笨拙的,并且由于缺少?gòu)臉I(yè)者而受到阻礙,這進(jìn)而使得它的實(shí)施成本昂貴。
上面的后果就是廠商明顯不愿利用軟件來(lái)實(shí)現(xiàn)安全關(guān)鍵過(guò)程。不過(guò),在過(guò)去的幾年中,在自動(dòng)化軟件開發(fā)領(lǐng)域中工作有所進(jìn)展。尤其是,Malvern,Worcs,England的Defence Evaluation&Research Agency(DERA)已經(jīng)開發(fā)了用于自動(dòng)推導(dǎo)形式驗(yàn)證的飛行控制規(guī)則代碼的工具。該方法被用于驗(yàn)證Eurofighter的飛行控制系統(tǒng)代碼。它通過(guò)使用現(xiàn)有的商業(yè)軟件包生成Simulink模型來(lái)運(yùn)行。Simulink形成了稱作MATLAB的商業(yè)軟件包的部分,MATLAB是MathWorks Inc.的產(chǎn)品。Simulink模型是軟件需求的數(shù)學(xué)描述。Simulink自動(dòng)地生成SPARK Ada代碼,SPARK Ada是計(jì)算機(jī)編程語(yǔ)言。Simulink模型還由稱作ClawZ的工具使用,以自動(dòng)地用稱作“Z”的數(shù)學(xué)語(yǔ)言生成形式規(guī)范。ClawZ是由DERA開發(fā)的工具,其用于在Simulink模型與“Z”之間對(duì)控制規(guī)則模型的表達(dá)式進(jìn)行翻譯。接著對(duì)采用“Z”和SPARK Ada的形式規(guī)范進(jìn)行比較,按照要求改變SPARKAda,以使用ProofPower內(nèi)的一致標(biāo)記工具構(gòu)建一致變量;這是自動(dòng)完成的。ProofPower是Lemma 1 Ltd的產(chǎn)品。一致標(biāo)記工具接著生成修改過(guò)的SPARK Ada作為可編輯的文件和驗(yàn)證條件(VC)。通過(guò)使用ProofPower的定理證明器部分,就可以對(duì)VC是數(shù)學(xué)上“真”進(jìn)行軟件工具輔助的數(shù)學(xué)證明。這進(jìn)而證實(shí)了修改過(guò)的SPARK Ada代碼是形式規(guī)范的正確描述,因此也是Simulink模型的正確描述,或者相反。很多證明工作都是自動(dòng)進(jìn)行的。
與上述獨(dú)立地,還有一些工作是利用基于狀態(tài)的建模來(lái)開發(fā)商業(yè)軟件包,狀態(tài)模型根據(jù)軟件需求來(lái)開發(fā)。
狀態(tài)模型的概念最好通過(guò)示例來(lái)解釋;這里所選的示例是飛行器的噴氣發(fā)動(dòng)機(jī)上的推力反向器的示例。推力反向器的狀態(tài)模型將利用對(duì)應(yīng)的“規(guī)則”列表對(duì)推力反向器可能占用的每個(gè)“狀態(tài)”進(jìn)行建模[例如,狀態(tài)1未工作;狀態(tài)2部分工作;狀態(tài)3完全工作],所述“規(guī)則”控制著每個(gè)狀態(tài)內(nèi)的許可動(dòng)作和每個(gè)狀態(tài)間的過(guò)渡。同樣的原理還可應(yīng)用于軟件代碼的開發(fā)和操作。
發(fā)明內(nèi)容
因此,提供了一種用于根據(jù)需求生成驗(yàn)證的軟件代碼的方法,該方法包括以下步驟i.使用軟件以生成需求的狀態(tài)模型,ii.使用狀態(tài)模型開發(fā)該狀態(tài)模型的軟件代碼描述和該狀態(tài)模型的數(shù)學(xué)描述,iii.對(duì)軟件代碼描述和數(shù)學(xué)描述進(jìn)行比較,以驗(yàn)證軟件代碼描述是所述數(shù)學(xué)描述的正確實(shí)現(xiàn)。
當(dāng)開發(fā)系統(tǒng)包括多個(gè)、同時(shí)激活并且彼此交互的組件時(shí),可能發(fā)生諸如活鎖(live-lock)和死鎖(dead-lock)的差錯(cuò)。這些差錯(cuò)可能導(dǎo)致較差的性能、不可預(yù)測(cè)的行為和系統(tǒng)失效。為了避免這些問(wèn)題,可以使用一種稱作模型檢查(Model Checking)的技術(shù),模型檢查是用于形式地驗(yàn)證有限狀態(tài)并發(fā)系統(tǒng)的技術(shù)。因此,上述方法可以包括附加的步驟執(zhí)行模型檢查以證明沒(méi)有諸如死鎖和活鎖的狀態(tài)相關(guān)差錯(cuò)。
該方法使得可以通過(guò)使用基于狀態(tài)的建模來(lái)自動(dòng)進(jìn)行軟件代碼的開發(fā)。盡管這尤其在安全關(guān)鍵軟件的領(lǐng)域中有用,但沒(méi)有理由說(shuō)它不能應(yīng)用于任何軟件的開發(fā)。與使用現(xiàn)有方法(例如FM)的情況相比,通過(guò)使開發(fā)可以在大大縮短的時(shí)間范圍內(nèi)完成,這將導(dǎo)致軟件開發(fā)成本可觀的節(jié)省。這對(duì)于減少設(shè)備的終身成本而言也有特殊的價(jià)值,因?yàn)槿魏胃淖兌伎稍谛枨蠹?jí)上進(jìn)行,并且剩余工作的大部分都是自動(dòng)進(jìn)行的。尤其是,該方法在航空電子設(shè)備系統(tǒng)領(lǐng)域中有用。因此,可以使用該方法,以便所產(chǎn)生的驗(yàn)證的軟件代碼是軟件控制代碼。
可以使用合適的商業(yè)軟件包(諸如Stateflow)來(lái)開發(fā)狀態(tài)模型。Stateflow是Mathworks Inc.的產(chǎn)品??梢允褂媚軌蜻m應(yīng)并行程序設(shè)計(jì)需求的語(yǔ)言的自動(dòng)生成的安全子集(例如Ravenscar profile for Ada(現(xiàn)在稱作“RavenSPARK”))或者某種其他的類似方法來(lái)開發(fā)狀態(tài)模型的軟件代碼描述??梢允褂弥T如“Circus”的自動(dòng)生成的形式語(yǔ)言或某種其他可比的形式語(yǔ)言來(lái)開發(fā)狀態(tài)模型的數(shù)學(xué)描述?!癈ircus”本質(zhì)上是結(jié)合了兩種其他的形式語(yǔ)言的語(yǔ)言,即Communicating SequentialProcesses(CSP)和“Z”??梢允褂弥T如FDR(Failures-DivergenceRefinement)的工具進(jìn)行模型檢查。
根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,提供了一種用于生成驗(yàn)證的軟件代碼的方法,該方法包括以下步驟i.開發(fā)需求聲明,ii.根據(jù)需求聲明使用軟件以生成狀態(tài)模型,iii.根據(jù)狀態(tài)模型用數(shù)學(xué)描述開發(fā)形式規(guī)范,iv.使用狀態(tài)模型開發(fā)表達(dá)該狀態(tài)模型的軟件代碼,v.使用數(shù)學(xué)描述和所開發(fā)的軟件代碼來(lái)構(gòu)建一致變量,以提供驗(yàn)證條件,vi.如果在數(shù)學(xué)描述與所開發(fā)的軟件代碼之間存在不同,則生成新的軟件代碼。
vii.取出驗(yàn)證條件,以證明新的軟件代碼是數(shù)學(xué)描述的正確描述,因此也是需求聲明的正確描述。
上面的方法可以包括附加的步驟對(duì)所述形式規(guī)范執(zhí)行模型檢查。
本發(fā)明被認(rèn)為在航空電子設(shè)備系統(tǒng)領(lǐng)域中具有特殊的價(jià)值,尤其是通過(guò)按Advanced Avionics Architectures(AAA)(高級(jí)航空電子設(shè)備體系)來(lái)實(shí)現(xiàn)后。AAA的原則是從分立的系統(tǒng)中去除公共的功能,然后將這些公共功能實(shí)現(xiàn)在“共有”資源上。這使得諸如飛行控制、武器控制和傳感(例如雷達(dá))的不同系統(tǒng)可以共享公共的資源。AAA系統(tǒng)具有固有的冗余度,這使得系統(tǒng)可以重新配置其自身以妥善處理多個(gè)硬件組件的失效,同時(shí)保持功能。不過(guò),提供了擁有這種冗余度的AAA的特征使底層軟件的認(rèn)證非常困難。AAA的主要驅(qū)動(dòng)力是軍用硬件組件的缺乏。因此,必須使用行業(yè)現(xiàn)成的(COTS)組件。使用基于COTS的可重配置航空電子設(shè)備系統(tǒng)的成本收益是它們易于升級(jí),具有由此帶來(lái)的長(zhǎng)期益處。不過(guò),給這種系統(tǒng)提供功能的軟件必須是獨(dú)立于平臺(tái)(微處理器)的,并且軟件設(shè)計(jì)盡可能自動(dòng)進(jìn)行并可容易地認(rèn)證。它還采用了開放系統(tǒng)方法,因此可以很廣泛地應(yīng)用。本發(fā)明具有如下的目的,即,生成按照每個(gè)實(shí)例中的規(guī)范可以認(rèn)證的軟件代碼。其他方法具有不可認(rèn)證的高風(fēng)險(xiǎn),會(huì)浪費(fèi)開發(fā)等所致的成本。本發(fā)明使系統(tǒng)設(shè)計(jì)人員可以對(duì)設(shè)計(jì)進(jìn)行大量的復(fù)用,而在實(shí)現(xiàn)用于每個(gè)復(fù)用的認(rèn)證系統(tǒng)中只用了很小的成本。這對(duì)于在用的安全關(guān)鍵軟件尤其有用,其在過(guò)去已花了極高的代價(jià)修改。利用本發(fā)明,任何修改都是相對(duì)簡(jiǎn)單的,因?yàn)樗亲詣?dòng)進(jìn)行的,并且結(jié)果是可認(rèn)證的。這對(duì)于升級(jí)也具有重要的意義,其可能需要在運(yùn)行至關(guān)重要的時(shí)間進(jìn)行。這在戰(zhàn)斗期間的軍用設(shè)備(例如,戰(zhàn)斗機(jī)航空電子設(shè)備)的升級(jí)領(lǐng)域中尤其是正確的。不過(guò),本發(fā)明在其他領(lǐng)域中也是有價(jià)值的,例如在產(chǎn)品召回極端昂貴的汽車工業(yè)中。
下面參照附圖,僅通過(guò)示例來(lái)說(shuō)明本發(fā)明,圖中圖1示出以軟件實(shí)現(xiàn)的高級(jí)航空電子設(shè)備體系(AAA)的示意性示例,圖2示意性地示出在開發(fā)認(rèn)證的軟件控制代碼中使用的已知方法,即,傳統(tǒng)的基于ClawZ的方法,圖3示意性地示出在開發(fā)認(rèn)證的軟件控制代碼中使用的本發(fā)明的方法,即使用基于狀態(tài)的建模,和圖4示意性地示出當(dāng)本發(fā)明可以應(yīng)用于AAA時(shí)的應(yīng)用的概貌。
具體實(shí)施例方式
可以將如圖1中所示的AAA內(nèi)的軟件看作三個(gè)分立的部分。它們包括由虛線所示的實(shí)時(shí)操作系統(tǒng)層(1),由虛線所示的應(yīng)用層軟件(2),和AAA控制軟件(3)。操作系統(tǒng)層(1)包括操作系統(tǒng)(1a)。應(yīng)用層軟件(2)包括大量的功能應(yīng)用程序(4)。操作系統(tǒng)層(1)和應(yīng)用層軟件(2)通過(guò)AAA控制軟件(3)鏈接在一起,AAA控制軟件(3)包括與應(yīng)用層軟件(2)相關(guān)聯(lián)的應(yīng)用管理代碼(5)和與操作系統(tǒng)層(1)相關(guān)聯(lián)的一般系統(tǒng)管理軟件(6)。這三個(gè)部分全由底板支持層(7)和處理器(8)支持。
為了認(rèn)證AAA軟件,必須對(duì)三個(gè)部分中的每一部分進(jìn)行認(rèn)證。AAA的關(guān)鍵是平臺(tái)獨(dú)立性。因此,重要的是三個(gè)部分要盡可能與處理器(8)隔離。AAA控制軟件(3)根據(jù)需要分配資源優(yōu)先級(jí),并且在硬件失效時(shí)為處理器重新指定功能。它通常是根據(jù)預(yù)編碼算法的“if-then-else”函數(shù)和優(yōu)先級(jí)。這導(dǎo)致對(duì)與應(yīng)用層軟件(2)的認(rèn)證的困難,因?yàn)樵诓黄茐腁AA的主要優(yōu)點(diǎn)的情況下不能隔離上述函數(shù)。這使對(duì)AAA控制代碼軟件和應(yīng)用軟件的認(rèn)證本身就難以實(shí)現(xiàn)。
如圖2所示,使用專家軟件的已知方法使得可以生成已開發(fā)的應(yīng)用層軟件(2)的Simulink模型(9)。接著可以使用該模型來(lái)自動(dòng)地生成Simulink模型(9)的采用SPARK Ada的軟件代碼描述(10)和采用ClawZ“Z”文件形式的數(shù)學(xué)描述(11)。然后比較軟件代碼描述(10)與ClawZ“Z”文件(11),以構(gòu)建ProofPower中的一致變量,并生成由(12)所示的驗(yàn)證條件。如果驗(yàn)證了ClawZ“Z”文件(11)和軟件代碼描述(10)一致,那么取出(13)提供所需的認(rèn)證的驗(yàn)證條件。
圖3所示本發(fā)明的方法示出通過(guò)將控制系統(tǒng)的需求輸入到合適的軟件包,例如Stateflow,就可以直接發(fā)展出狀態(tài)模型(14)。接著使用該狀態(tài)模型(14)來(lái)為CSP/Z文件(15)的自動(dòng)生成提供輸入,CSP/Z文件(15)是狀態(tài)模型(14)的數(shù)學(xué)描述。狀態(tài)模型(14)還用于為RavenSPARKAda軟件控制代碼(16)的自動(dòng)生成作準(zhǔn)備。使用CSP/Z文件(15)和軟件控制代碼(16)來(lái)構(gòu)建ProofPower中的一致變量,其將生成由(17)所示的驗(yàn)證條件。如果驗(yàn)證了CSP/Z文件(15)和軟件控制代碼(16)一致,那么取出(18)提供所需認(rèn)證依據(jù)的驗(yàn)證條件。最后,模型檢查(未示出)將顯示是否還有任何狀態(tài)相關(guān)的差錯(cuò)。
圖4示意性地示出可以使用AAA(19)來(lái)生成用于飛行控制系統(tǒng)(21)、武器控制系統(tǒng)(22)和公用設(shè)施控制系統(tǒng)(23)的Stateflow輸入(20)。然后可以容易地將飛行控制系統(tǒng)(21)轉(zhuǎn)換成ClawZ文件(24)。武器控制系統(tǒng)(22)和公用設(shè)施控制系統(tǒng)(23)被示出分別具有Stateflow輸出25和26。
權(quán)利要求
1.一種用于按照需求生成驗(yàn)證的軟件代碼的方法,該方法包括以下步驟i.使用軟件生成所述需求的狀態(tài)模型,ii.使用所述狀態(tài)模型開發(fā)該狀態(tài)模型的軟件代碼描述和該狀態(tài)模型的數(shù)學(xué)描述,iii.對(duì)所述軟件代碼描述和所述數(shù)學(xué)描述進(jìn)行比較,以驗(yàn)證所述軟件代碼描述是所述數(shù)學(xué)描述的正確實(shí)現(xiàn)。
2.根據(jù)權(quán)利要求1的方法,其中,該方法包括附加步驟執(zhí)行模型檢查以證明沒(méi)有諸如死鎖和活鎖的狀態(tài)相關(guān)差錯(cuò)。
3.根據(jù)權(quán)利要求1或2的方法,其中,用于生成所述需求的狀態(tài)模型的軟件是Stateflow。
4.根據(jù)權(quán)利要求1至3中的任何一項(xiàng)的方法,其中,所述狀態(tài)模型的軟件代碼描述利用RavenSPARK Ada來(lái)產(chǎn)生。
5.根據(jù)權(quán)利要求1至4中的任何一項(xiàng)的方法,其中,所述狀態(tài)模型的數(shù)學(xué)描述利用“Circus”或某種其他的可比形式語(yǔ)言來(lái)產(chǎn)生。
6.根據(jù)前述權(quán)利要求中的任何一項(xiàng),其中,所產(chǎn)生的驗(yàn)證軟件代碼是軟件控制代碼。
7.一種用于生成驗(yàn)證的軟件代碼的方法,該方法包括以下步驟i.開發(fā)需求聲明,ii.根據(jù)所述需求聲明使用軟件生成狀態(tài)模型,iii.根據(jù)所述狀態(tài)模型用數(shù)學(xué)描述開發(fā)形式規(guī)范,iv.使用所述狀態(tài)模型開發(fā)表達(dá)該狀態(tài)模型的軟件代碼,v.使用所述數(shù)學(xué)描述和所開發(fā)的軟件代碼來(lái)構(gòu)建一致變量,以提供驗(yàn)證條件,vi.如果在所述數(shù)學(xué)描述與所開發(fā)的軟件代碼之間存在不同,則生成新的軟件代碼,vii.取出驗(yàn)證條件,以證明所述新的軟件代碼是所述數(shù)學(xué)描述的正確描述,因此也是所述需求聲明的正確描述。
8.根據(jù)權(quán)利要求7所述的方法,其中,該方法包括附加的步驟對(duì)所述形式規(guī)范執(zhí)行模型檢查。
9.根據(jù)權(quán)利要求1至8中的任何一項(xiàng)生成的驗(yàn)證的軟件代碼。
全文摘要
開發(fā)驗(yàn)證的軟件代碼是非常費(fèi)力的過(guò)程,也是重要的,尤其是對(duì)于考慮安全關(guān)鍵應(yīng)用程序的情況而言。提供了一種用于按照需求生成驗(yàn)證的軟件代碼的方法,該方法包括以下步驟i.使用軟件生成所述需求的狀態(tài)模型,ii.使用所述狀態(tài)模型開發(fā)該狀態(tài)模型的軟件代碼描述和該狀態(tài)模型的數(shù)學(xué)描述,iii.對(duì)所述軟件代碼和所述數(shù)學(xué)描述進(jìn)行比較,以驗(yàn)證所述軟件代碼描述是所述數(shù)學(xué)描述的正確實(shí)現(xiàn)。
文檔編號(hào)G06F9/44GK1531681SQ02811465
公開日2004年9月22日 申請(qǐng)日期2002年6月6日 優(yōu)先權(quán)日2001年6月8日
發(fā)明者尼古拉斯·詹姆士·都鐸, 尼古拉斯 詹姆士 都鐸 申請(qǐng)人:英國(guó)國(guó)防部