,, ,,
(中國(guó)船舶工業(yè)綜合技術(shù)經(jīng)濟(jì)研究院,北京 100081)
當(dāng)前,艦船行業(yè)軟件可信性保證技術(shù)的應(yīng)用情況遠(yuǎn)遠(yuǎn)落后于其它國(guó)防行業(yè)。近年來(lái),軍方對(duì)型號(hào)軟件的可信性予以了高度重視,對(duì)于一些重點(diǎn)型號(hào),要求在軟件研制中進(jìn)行可信性設(shè)計(jì)分析及管理,在交付前進(jìn)行評(píng)估等[1]。
本文針對(duì)艦船裝備軟件研制過(guò)程開(kāi)展軟件可信性分析工作中缺乏數(shù)據(jù)基礎(chǔ)支撐、與工程實(shí)踐不夠緊密以及缺乏嵌入式的軟-硬件系統(tǒng)可信性分析技術(shù)的現(xiàn)狀,收集艦船裝備軟件缺陷信息,進(jìn)行缺陷分類(lèi)、缺陷模式研究,基于缺陷數(shù)據(jù)進(jìn)行艦船裝備軟件可信性設(shè)計(jì)準(zhǔn)則、艦船裝備軟件可信性分析技術(shù)的研究,在技術(shù)研究基礎(chǔ)上選擇典型艦船裝備軟件進(jìn)行技術(shù)應(yīng)用驗(yàn)證,以及開(kāi)發(fā)相應(yīng)的輔助工具和數(shù)據(jù)庫(kù)系統(tǒng);為艦船裝備軟件開(kāi)展可信性設(shè)計(jì)分析活動(dòng)提供基本的技術(shù)、方法、工具和數(shù)據(jù),也為制定艦船行業(yè)內(nèi)的有關(guān)軟件可信性的規(guī)范、標(biāo)準(zhǔn)提供技術(shù)依據(jù)。
軟件可信性設(shè)計(jì)、分析技術(shù)發(fā)展至今,已經(jīng)具備一定的技術(shù)基礎(chǔ)。然而目前在艦船裝備領(lǐng)域,軟件可信性設(shè)計(jì)分析技術(shù)應(yīng)用的總體現(xiàn)狀是:各種技術(shù)方法與工程實(shí)踐結(jié)合欠缺,能指導(dǎo)工程應(yīng)用的較少;技術(shù)方法缺少數(shù)據(jù)的支撐,沒(méi)有數(shù)據(jù)、示例的支撐,方法應(yīng)用起來(lái)效果較差;對(duì)于嵌入式的軟-硬件系統(tǒng),軟件可信性分析技術(shù)相對(duì)匱乏。這種現(xiàn)狀導(dǎo)致了當(dāng)前在艦船行業(yè)可信性工作難以開(kāi)展,沒(méi)有真正形成有效的艦船裝備軟件可信性設(shè)計(jì)分析的能力,以下分別對(duì)相關(guān)技術(shù)的研究現(xiàn)狀和發(fā)展必要進(jìn)行闡述。
在利用缺陷模式進(jìn)行可信性分析研究上,目前僅有很少數(shù)研究提出了利用軟件缺陷模式特征,利用靜態(tài)分析方法進(jìn)行軟件失效推理的方法,但是由于缺陷模式特征是和編程語(yǔ)言相關(guān)的,缺陷模式特征知識(shí)庫(kù)的建立需要更多數(shù)據(jù)的支持,目前的研究還僅僅是非常初步的理論研究,需要進(jìn)一步收集更多地缺陷數(shù)據(jù),提取軟件缺陷模式特征,建立缺陷模式特征知識(shí)庫(kù),提出更為有效的方法,建立合理的軟件工具,將缺陷模式特征庫(kù)應(yīng)用到軟件可信性分析技術(shù)中,能夠較為有效地幫助發(fā)現(xiàn)軟件中存在的缺陷。
軟件缺陷的分類(lèi)是研究軟件缺陷的基礎(chǔ)。軟件缺陷的分類(lèi)有多種方法,目的不同,角度和復(fù)雜程度也不一樣[2]。具代表性的軟件缺陷分類(lèi)方法包括:1)基于軟件錯(cuò)誤來(lái)源的軟件缺陷分類(lèi),代表有Putnam等人、國(guó)家軍用標(biāo)準(zhǔn)GJB-437;2)基于錯(cuò)誤性質(zhì)的軟件缺陷分類(lèi),代表有Goel、Thayer、Beizer等人;3)基于正交分類(lèi)的軟件缺陷分類(lèi),由IBM TJ Watson研究中心在1992年提出;4)基于軟件生命周期活動(dòng)軟件缺陷分類(lèi),由電氣和電子工程師學(xué)會(huì)制定的軟件異常分類(lèi)標(biāo)準(zhǔn)(IEEE Standard Classification for Anomalies1044 1093)對(duì)軟件異常進(jìn)行的全面的分類(lèi);5)基于開(kāi)發(fā)階段的軟件缺陷分類(lèi)(Phase-DC),通過(guò)對(duì)缺陷所作的實(shí)際修該來(lái)確定類(lèi)型,缺陷類(lèi)型定義為著重關(guān)注缺陷關(guān)聯(lián)的開(kāi)發(fā)階段,確定每個(gè)缺陷的引入階段和發(fā)現(xiàn)階段,利用階段的信息對(duì)采用專(zhuān)家方法和正式評(píng)審的方式將缺陷類(lèi)型進(jìn)行的定義;6)基于某類(lèi)特定軟件研究軟件缺陷分類(lèi),如針對(duì)型號(hào)軟件的特點(diǎn),將軟件缺陷可分為“基本軟件缺陷-子類(lèi)”這樣的一種層次結(jié)構(gòu)分類(lèi)。
國(guó)外相關(guān)機(jī)構(gòu)對(duì)軟件可信性設(shè)計(jì)進(jìn)行了長(zhǎng)期研究,最早由著名軟件工程專(zhuān)家Myers提出在可靠性設(shè)計(jì)中必須遵循的兩個(gè)原則:一是控制程序的復(fù)雜程度;二是與用戶保持緊密聯(lián)系[3]。美國(guó)航空和宇宙航行局制定了NASA-GB-8719.13-2004《美國(guó)宇航局軟件安全性指南》和NASA-STD-8719.13B-2004《美國(guó)宇航局軟件安全性標(biāo)準(zhǔn)》,為軟件開(kāi)發(fā)人員和從事軟件安全性工作的工程師們提供適用的軟件安全性設(shè)計(jì)和分析方法和技術(shù),美國(guó)航空航天局(NASA)下屬機(jī)構(gòu)馬歇爾空間飛行中心(MSFC)在某型號(hào)項(xiàng)目實(shí)施的可信性設(shè)計(jì)準(zhǔn)則。這些標(biāo)準(zhǔn)或要求反映了當(dāng)時(shí)已有的經(jīng)驗(yàn)教訓(xùn)、最佳實(shí)踐的要求和類(lèi)似環(huán)境和軟件可能經(jīng)受的類(lèi)似或相同問(wèn)題。國(guó)外雖積累了豐富的工程實(shí)踐經(jīng)驗(yàn),但由于語(yǔ)言和經(jīng)驗(yàn)的限制,對(duì)于其準(zhǔn)則細(xì)則不能完全理解透徹,難以用于國(guó)內(nèi)的項(xiàng)目實(shí)踐中。
國(guó)內(nèi)對(duì)軟件可信性設(shè)計(jì)研究始于近20年,已頒布GJB/Z 102-1997《軟件可靠性和安全性設(shè)計(jì)準(zhǔn)則》,作為指導(dǎo)性技術(shù)標(biāo)準(zhǔn),給出計(jì)算機(jī)軟件可靠性和安全性設(shè)計(jì)的準(zhǔn)則和要求,指導(dǎo)武器裝備嵌入式軟件的開(kāi)發(fā)與設(shè)計(jì),主要是空空導(dǎo)彈的開(kāi)發(fā)項(xiàng)目。2012年,結(jié)合國(guó)內(nèi)外軟件可靠性和安全性研究和實(shí)踐的現(xiàn)狀,補(bǔ)充國(guó)內(nèi)外相關(guān)研究成果和優(yōu)秀實(shí)踐,對(duì)GJB/Z 102進(jìn)行了修訂,形成了GJB/Z 102A-2012《軍用軟件安全性設(shè)計(jì)指南》。但是GJB/Z 102A仍舊講述的概念寬泛,可操作性不強(qiáng),在國(guó)內(nèi)未能廣泛應(yīng)用。
軟件可信性設(shè)計(jì)準(zhǔn)則可以用于在軟件設(shè)計(jì)開(kāi)發(fā)過(guò)程中對(duì)軟件缺陷進(jìn)行預(yù)防,對(duì)已有的缺陷數(shù)據(jù)進(jìn)行研究,提出相應(yīng)的缺陷預(yù)防措施,可以避免類(lèi)似缺陷的再發(fā)生。因此,有必要對(duì)軟件缺陷的信息進(jìn)行充分的分析和利用,進(jìn)行軟件可信性設(shè)計(jì)準(zhǔn)則的研究。
SFMEA和SFTA(軟件故障樹(shù)分析)兩種技術(shù)自20世紀(jì)70年代末提出以來(lái),主要應(yīng)用在安全性要求較高的模塊中,但它們?cè)趹?yīng)用時(shí)有各自的缺點(diǎn),比如:SFMEA是一種自底向上分析的單一失效線索的方法,其分析結(jié)果以表格方式列出,無(wú)法完善的表達(dá)失效原因之間的各種邏輯關(guān)系,因此也影響了失效措施的制定,即,只制定單點(diǎn)失效的改進(jìn)方案,缺少對(duì)多點(diǎn)失效的考慮;SFTA是一種自頂向下的依照樹(shù)狀結(jié)構(gòu)倒推失效原因的方法,選取頂事件時(shí),往往會(huì)遺漏潛在因素的頂層影響,另外,SFTA在分析底事件時(shí)也會(huì)有所遺漏,這回影響到底事件的重要度排序,從而影響實(shí)施改進(jìn)措施的輕重緩急判斷。二者在表達(dá)方式也各有不足,表格方式不如樹(shù)形結(jié)構(gòu)直觀,而樹(shù)形結(jié)構(gòu)在分析復(fù)雜的軟件系統(tǒng)時(shí)相當(dāng)龐大,人工查找單一失效的線索不是很方便。目前,將它們相結(jié)合,互相彌補(bǔ)不足,使分析過(guò)程更加完備的綜合分析方法以及方法的應(yīng)用日益受到人們的重視。
目前對(duì)SFMEA的研究,還存在以下問(wèn)題:
1)如何收集軟件失效模式和失效原因。失效模式和失效原因是系統(tǒng)級(jí)SFMEA的基礎(chǔ),硬件系統(tǒng)標(biāo)準(zhǔn)單元的失效模式一般比較明確,失效原因也便于提取,但軟件系統(tǒng)的失效模式和失效原因卻不是非常明確、難以準(zhǔn)確提取[4]。
2)如何對(duì)目標(biāo)軟件系統(tǒng)劃分層次、確定模塊間的邏輯關(guān)系以及系統(tǒng)各模塊間的失效影響。傳統(tǒng)的系統(tǒng)級(jí)SFMEA對(duì)目標(biāo)系統(tǒng)(尤其是任務(wù)交叉、不易分割的軟-硬件系統(tǒng))層次劃分和模塊間邏輯關(guān)系的確定沒(méi)有很明確清晰的方法,對(duì)硬件和軟件的相互作用也欠缺考慮,沒(méi)有準(zhǔn)確判斷軟件模塊間失效影響的有效方法,往往依賴(lài)于軟件分析人員的經(jīng)驗(yàn),分析過(guò)程精確性低、客觀性差,且沒(méi)有效率。
3)如何由系統(tǒng)級(jí)SFMEA的分析結(jié)果指導(dǎo)詳細(xì)級(jí)SFMEA,以及詳細(xì)級(jí)SFMEA的實(shí)施過(guò)程和方法。由于詳細(xì)級(jí)SFMEA要涉及復(fù)雜多樣的程序結(jié)構(gòu),目前還沒(méi)有一套簡(jiǎn)易有效的方法,阻礙了SFMEA在工程中的應(yīng)用。
4)如何提高分析過(guò)程的自動(dòng)化程度。目前針對(duì)硬件的FMEA自動(dòng)化工具國(guó)內(nèi)外已經(jīng)開(kāi)發(fā)了許多,例如國(guó)內(nèi)的可維公司就已成功自主研發(fā)FMEA自動(dòng)化工具。但是針對(duì)SFMEA的自動(dòng)化工具還是比較缺乏,系統(tǒng)級(jí)SFMEA的大量工作仍需手工完成,詳細(xì)級(jí)SFMEA輔助分析工具更為匱乏,導(dǎo)致了分析效率低下。
根據(jù)艦船裝備軟件可信性設(shè)計(jì)、可信性分析研究的需要,首先進(jìn)行艦船裝備軟件缺陷數(shù)據(jù)收集,從而使后續(xù)的研究更具有針對(duì)性、適用性。在此基礎(chǔ)上進(jìn)行艦船裝備軟件缺陷模式分析,基于缺陷收集和缺陷模式分析,進(jìn)一步考慮艦船裝備軟件可信性設(shè)計(jì)準(zhǔn)則的研究。針對(duì)目前嵌入式軟-硬件系統(tǒng)可信性分析及分配技術(shù)中存在的問(wèn)題。對(duì)于技術(shù)研究過(guò)程中形成的和方法和數(shù)據(jù),開(kāi)發(fā)相應(yīng)的數(shù)據(jù)庫(kù)系統(tǒng);在技術(shù)方法的應(yīng)用上,選擇典型艦船裝備軟件進(jìn)行可信性分析以及可信性分配技術(shù)應(yīng)用驗(yàn)證。整個(gè)課題研究為艦船裝備軟件開(kāi)展可信性設(shè)計(jì)分析活動(dòng)提供技術(shù)方法和數(shù)據(jù)庫(kù)系統(tǒng)。項(xiàng)目總體實(shí)施途徑如圖1所示。
圖1 軟件可信性分析設(shè)計(jì)過(guò)程
1)按照不同軟件類(lèi)別,包括嵌入式/非嵌入式、編程語(yǔ)言(C/C++/C#等)、應(yīng)用領(lǐng)域(科學(xué)計(jì)算/人機(jī)交互/數(shù)據(jù)處理等)分類(lèi),收集艦船裝備軟件缺陷信息,對(duì)缺陷進(jìn)行原因分析;
2)在現(xiàn)有的軟件缺陷分類(lèi)、缺陷模式研究基礎(chǔ)上,針對(duì)開(kāi)展艦船裝備軟件可信性設(shè)計(jì)、艦船裝備軟件SFMEA等分析工作的需要,進(jìn)行艦船裝備軟件缺陷分類(lèi)研究、定義并提煉艦船裝備軟件缺陷模式,并對(duì)收集到的缺陷數(shù)據(jù)按缺陷分類(lèi)、缺陷模式進(jìn)行統(tǒng)計(jì);
3)基于缺陷分類(lèi)和缺陷模式研究,進(jìn)行艦船裝備軟件缺陷模式特征知識(shí)庫(kù)的研究,將軟件缺陷模式特征與知識(shí)庫(kù)進(jìn)行綜合研究;開(kāi)展基于軟件缺陷模式特征知識(shí)庫(kù)的軟件失效推理技術(shù)的研究[5]。
4)建立艦船裝備軟件缺陷、缺陷模式數(shù)據(jù)庫(kù),以及相應(yīng)的數(shù)據(jù)庫(kù)管理工具。
1)基于缺陷收集和缺陷模式研究,考慮避錯(cuò)、容錯(cuò)、查錯(cuò)、改錯(cuò)4種軟件可信性設(shè)計(jì)技術(shù),提出軟件研制過(guò)程的需求分析階段、設(shè)計(jì)階段、編碼階段、測(cè)試階段的可信性設(shè)計(jì)準(zhǔn)則;
2)針對(duì)每部分設(shè)計(jì)準(zhǔn)則,給出準(zhǔn)則示例,即從滿足設(shè)計(jì)準(zhǔn)則時(shí)可采取的設(shè)計(jì)措施方面對(duì)設(shè)計(jì)準(zhǔn)則的應(yīng)用進(jìn)行細(xì)化。
3)建立艦船裝備軟件可信性設(shè)計(jì)準(zhǔn)則、準(zhǔn)則示例數(shù)據(jù)庫(kù)及相應(yīng)的數(shù)據(jù)庫(kù)管理工具。
1)基于系統(tǒng)層次結(jié)構(gòu)及依賴(lài)關(guān)系的系統(tǒng)級(jí)SFMEA方法。區(qū)分嵌入式軟-硬件系統(tǒng)的軟-硬件功能交叉、不易分割的情況,以及軟件系統(tǒng)任務(wù)與硬件系統(tǒng)獨(dú)立、可分割兩種情況,分別研究基于系統(tǒng)層次結(jié)構(gòu)及依賴(lài)關(guān)系的系統(tǒng)級(jí)SFMEA方法,包括系統(tǒng)層次結(jié)構(gòu)及依賴(lài)關(guān)系的獲取,以及系統(tǒng)級(jí)SFMEA的實(shí)施步驟和方法。
2)艦船裝備軟件詳細(xì)級(jí)SFMEA分析技術(shù)研究。在系統(tǒng)級(jí)SFMEA的研究基礎(chǔ)上,研究系統(tǒng)級(jí)SFMEA與詳細(xì)級(jí)SFMEA接口、從而由系統(tǒng)級(jí)SFMEA分析結(jié)果到詳細(xì)級(jí)SFMEA實(shí)施的步驟和方法,給出應(yīng)用示例。
3)艦船裝備軟件SFMEA/SFTA綜合分析方法研究。結(jié)合SFMEA的研究基礎(chǔ),研究艦船裝備軟件SFMEA與SFTA綜合分析方法的研究,包括正向綜合分析與逆向綜合分析的實(shí)施步驟和方法[6]。
4)艦船裝備軟件SFMEA/SFTA分析輔助工具開(kāi)發(fā)。根據(jù)技術(shù)方法,實(shí)現(xiàn)SFMEA計(jì)算機(jī)輔助分析工具,SFMEA/SFTA綜合分析輔助工具。
艦船裝備軟件缺陷收集、缺陷模式研究包括收集艦船裝備軟件缺陷信息、艦船裝備軟件缺陷分類(lèi)研究、艦船裝備軟件缺陷模式特征知識(shí)庫(kù)的研究以及基于軟件缺陷模式特征知識(shí)庫(kù)的軟件失效推理技術(shù)的研究。本項(xiàng)內(nèi)容的主要研究方案如圖2所示。
圖2 艦船裝備軟件缺陷模式研究方案
首先對(duì)艦船裝備軟件缺陷進(jìn)行收集:主要包括C、C++、匯編語(yǔ)言實(shí)現(xiàn)的各種實(shí)時(shí)控制、數(shù)據(jù)解算系統(tǒng)等。數(shù)據(jù)的來(lái)源主要依靠?jī)煞N方式:軟件測(cè)評(píng)機(jī)構(gòu)的測(cè)試項(xiàng)目數(shù)據(jù)以及對(duì)軟件研制單位調(diào)研。
其次,在缺陷收集的基礎(chǔ)上,研究艦船裝備軟件缺陷的分類(lèi)。分析現(xiàn)有的各類(lèi)方法側(cè)重點(diǎn)及適用條件,得出各自的優(yōu)缺點(diǎn)和適用范圍。在分析的基礎(chǔ)上,選取采用其中一種分類(lèi)方式為主,提煉艦船裝備軟件缺陷模式及模式特征,并根據(jù)其他分類(lèi),對(duì)該模式及模式特征進(jìn)行補(bǔ)充完善。軟件缺陷分類(lèi)參考以下幾種方式:
1)基于軟件錯(cuò)誤來(lái)源的軟件缺陷分類(lèi)方法;
2)基于錯(cuò)誤性質(zhì)的軟件缺陷分類(lèi)方法;
3)基于軟件生命周期活動(dòng)軟件缺陷分類(lèi)方法;
圖4 艦船裝備SFMEA分析技術(shù)研究方案
4)基于某類(lèi)特定軟件研究軟件缺陷分類(lèi)方法。
然后,根據(jù)提煉的艦船裝備軟件缺陷模式及特征,運(yùn)用知識(shí)庫(kù)技術(shù),考慮使用靜態(tài)分析手段,開(kāi)展基于軟件缺陷模式特征知識(shí)庫(kù)的軟件失效推理技術(shù)的研究,提出進(jìn)行失效推理基本方法和思路。
最后,對(duì)研究形成的缺陷數(shù)據(jù)及缺陷模式數(shù)據(jù)建立數(shù)據(jù)庫(kù)系統(tǒng),提供便捷的查詢、更新功能。
本部分主要提出軟件研制過(guò)程的需求分析階段、設(shè)計(jì)階段、編碼階段、測(cè)試階段的可信性設(shè)計(jì)準(zhǔn)則、準(zhǔn)則細(xì)化以及建立艦船裝備軟件可信性設(shè)計(jì)準(zhǔn)則、準(zhǔn)則示例數(shù)據(jù)庫(kù)系統(tǒng)。主要技術(shù)方案如圖3所示。
圖3 軟件可信性設(shè)計(jì)準(zhǔn)則研究方案
首先,基于本項(xiàng)目第一部分的研究中的數(shù)據(jù)收集,以艦船裝備軟件缺陷為基礎(chǔ),分析艦船裝備軟件研制過(guò)程的需求分析、設(shè)計(jì)、編碼開(kāi)發(fā)、測(cè)試各階段涉及到的缺陷模式。軟件可靠性設(shè)計(jì)的實(shí)質(zhì)是在常規(guī)的軟件設(shè)計(jì)中,應(yīng)用各種必須的方法和技術(shù),使程序的設(shè)計(jì)在兼顧用戶的各種需求時(shí),全面滿足軟件的可靠性要求[7]。軟件可靠性設(shè)計(jì)應(yīng)和軟件的常規(guī)設(shè)計(jì)緊密結(jié)合,貫穿在軟件常規(guī)設(shè)計(jì)的始終。通過(guò)采用避錯(cuò)、容錯(cuò)、查錯(cuò)、改錯(cuò)等可靠性設(shè)計(jì)方法,使軟件產(chǎn)品在設(shè)計(jì)過(guò)程中不出現(xiàn)錯(cuò)誤或少出現(xiàn)錯(cuò)誤,使程序在運(yùn)行中自動(dòng)查找存在的錯(cuò)誤,以及使錯(cuò)誤發(fā)生時(shí)不影響系統(tǒng)的特性,或使影響限制在容許的范圍內(nèi),從而提高軟件的可靠性。
其次,分析各階段所涉及缺陷模式的產(chǎn)生原因,從避錯(cuò)、容錯(cuò)、查錯(cuò)、改錯(cuò)4種軟件可信性設(shè)計(jì)技術(shù)角度進(jìn)行考慮,參考《GJB/Z 102 軟件可信性安全性設(shè)計(jì)準(zhǔn)則》等資料,提出針對(duì)各個(gè)階段所涉及缺陷模式的預(yù)防或改進(jìn)措施,將這些措施提煉形成各設(shè)計(jì)階段的可信性設(shè)計(jì)準(zhǔn)則。
1)在各種艦船裝備嵌入式軟件可靠性設(shè)計(jì)方法的指導(dǎo)下,以預(yù)防各艦船裝備軟件缺陷模式為目標(biāo),結(jié)合各種成熟先進(jìn)的軟件工程方法和技術(shù),通過(guò)分解、分類(lèi)、分層的機(jī)制,將預(yù)防措施轉(zhuǎn)化為艦船裝備嵌入式軟件可信性設(shè)計(jì)準(zhǔn)則。
2)收錄部分GJB/Z102A-2012的設(shè)計(jì)準(zhǔn)則,加以補(bǔ)充和細(xì)化,形成艦船裝備嵌入式軟件可信性設(shè)計(jì)準(zhǔn)則。GJB/Z102-1997《軟件可靠性和安全性設(shè)計(jì)準(zhǔn)則》講述的概念寬泛,可操作性不強(qiáng)。2012年,總裝備部發(fā)布了GJB/Z102A《軍用軟件安全性設(shè)計(jì)指南》,標(biāo)準(zhǔn)的細(xì)化和可操作性程度大大提升。經(jīng)過(guò)分析對(duì)比,本文中所提出的部分準(zhǔn)則與該指南存在少量重疊和交叉,因此,在該標(biāo)準(zhǔn)發(fā)布之后,本文又進(jìn)行了補(bǔ)充完善。本文“安全和保密需求完整性準(zhǔn)則、配合硬件進(jìn)行處理的若干設(shè)計(jì)考慮、中斷設(shè)計(jì)準(zhǔn)則、安全關(guān)鍵功能的設(shè)計(jì)、安全關(guān)鍵信息的設(shè)計(jì)、安全關(guān)鍵接口的設(shè)計(jì)”基本直接來(lái)源于GJB102A,補(bǔ)充了應(yīng)用示例;設(shè)計(jì)階段的其他軟件可信性設(shè)計(jì)準(zhǔn)則根據(jù)本文第2章中所提出的可靠性設(shè)計(jì)方法導(dǎo)出,另一方面,也一定程度上參考了GJB102A的“容錯(cuò)和容失效的設(shè)計(jì)、接口設(shè)計(jì)、人機(jī)界面設(shè)計(jì)、通訊設(shè)計(jì)、模塊設(shè)計(jì)”等,加以補(bǔ)充細(xì)化,形成設(shè)計(jì)準(zhǔn)則。
3)收集實(shí)踐證明有效的軟件工程領(lǐng)域的設(shè)計(jì)技術(shù)和方法,對(duì)形成的艦船裝備嵌入式軟件可信性設(shè)計(jì)準(zhǔn)則進(jìn)行補(bǔ)充。
4)參考相關(guān)軍用標(biāo)準(zhǔn)的要求,對(duì)測(cè)試階段的軟件可信性設(shè)計(jì)準(zhǔn)則進(jìn)行補(bǔ)充。
然后,對(duì)典型可信性設(shè)計(jì)準(zhǔn)則,給出準(zhǔn)則示例,即從滿足設(shè)計(jì)準(zhǔn)則時(shí)可采取的設(shè)計(jì)措施方面細(xì)化設(shè)計(jì)準(zhǔn)則,保證軟件可信性設(shè)計(jì)準(zhǔn)則的實(shí)用性。對(duì)本項(xiàng)研究形成的可信性準(zhǔn)則及準(zhǔn)則示例數(shù)據(jù)建立數(shù)據(jù)庫(kù)系統(tǒng),提供便捷的查詢、更新功能。
最后,軟件開(kāi)發(fā)工程化中應(yīng)用可信性設(shè)計(jì)準(zhǔn)則。采用軟件工程方法是軟件可信性設(shè)計(jì)的前提。應(yīng)特別注意以下幾點(diǎn):
1)軟件開(kāi)發(fā)規(guī)范化。應(yīng)按照GJB 2786A-2009《軍用軟件開(kāi)發(fā)通用要求》和GJB438B-2009《軍用軟件開(kāi)發(fā)文檔通用要求》的規(guī)定,將軟件開(kāi)發(fā)過(guò)程分為若干階段,每個(gè)階段軟件開(kāi)發(fā)人員間相互配合編制必要的文檔,并進(jìn)行檢查、分析和評(píng)審,嚴(yán)格實(shí)行配置管理。圖形符號(hào)、程序構(gòu)造及表示應(yīng)符合GB1526和GB13502的規(guī)定。
2)軟件開(kāi)發(fā)人員間(包括系統(tǒng)設(shè)計(jì)人員、需求分析人員、設(shè)計(jì)人員及編碼人員)應(yīng)采用統(tǒng)一的方法(N版本程序設(shè)計(jì)中要求相異性設(shè)計(jì)除外)。盡可能采用先進(jìn)、適用的軟件開(kāi)發(fā)工具,并確保開(kāi)發(fā)工具免受計(jì)算機(jī)病毒侵害。
3)加強(qiáng)軟件檢查和測(cè)試。應(yīng)盡早開(kāi)展軟件檢查和測(cè)試,采取措施(如自檢、互檢、專(zhuān)檢相結(jié)合的“三檢制”,制定設(shè)計(jì)檢查單等)使檢查工作切實(shí)有效,軟件測(cè)試應(yīng)達(dá)到規(guī)定的要求[8]。
進(jìn)行SFMEA分析的基礎(chǔ)包括兩個(gè)方面,第一是獲取系統(tǒng)的各種失效模式,第二是確定所采用的分析技術(shù)。主要技術(shù)方案如圖4所示。
本論文中SFMEA基于兩個(gè)方面考慮:一方面是提供艦船裝備失效模式的提煉方法;另一方面是針對(duì)現(xiàn)有SFMEA分析方法的不足,給出適用于艦船裝備嵌入式軟-硬件系統(tǒng)的軟件FMEA分析方法和步驟。在艦船裝備失效模式的提煉方法研究中,考慮以下方式:
1)基于本項(xiàng)目第一部分的研究?jī)?nèi)容中的缺陷及缺陷分類(lèi)數(shù)據(jù),分析待SFMEA的系統(tǒng)屬于哪個(gè)類(lèi)別,檢索該類(lèi)別軟件所有的缺陷數(shù)據(jù),由缺陷數(shù)據(jù)推導(dǎo)可能產(chǎn)生的失效模式;
2)此外,從“通用失效模式”和“特定失效模式”兩個(gè)方面考慮來(lái)引導(dǎo)分析人員獲取失效模式。
其次,在艦船裝備嵌入式軟-硬件系統(tǒng)的軟件FMEA分析方法研究中,研究系統(tǒng)層次結(jié)構(gòu)劃分以及依賴(lài)關(guān)系的獲取方法,在此基礎(chǔ)上給出艦船裝備軟件系統(tǒng)級(jí)SFMEA分析方法及步驟。系統(tǒng)層次結(jié)構(gòu)劃分以及依賴(lài)關(guān)系的獲取綜合考慮以下3個(gè)方面:
1)基于軟件結(jié)構(gòu)的系統(tǒng)層次劃分法,包括軟件程序的邏輯控制結(jié)構(gòu)以及數(shù)據(jù)流的依賴(lài)關(guān)系。可以依據(jù)軟件的設(shè)計(jì)流程圖得出。
2)基于功能的軟件系統(tǒng)層次劃分法,包括系統(tǒng)功能、功能點(diǎn)劃分以及功能、功能點(diǎn)之間的層次、依賴(lài)關(guān)系??梢詤⒖架浖氖褂闷拭娣绞絹?lái)對(duì)系統(tǒng)功能進(jìn)行層次劃分及依賴(lài)關(guān)系描述。
3)軟-硬件系統(tǒng)之間軟/硬件接口關(guān)系分析,包括分析艦船裝備嵌入式軟-硬件系統(tǒng)的軟件和硬件之間相互作用,分析各自失效所能產(chǎn)生的影響,以及影響的傳遞方式??梢钥紤]在分析過(guò)程中,將與軟件存在著制約關(guān)系的硬件部分看作一個(gè)軟件模塊的方式,來(lái)考慮軟-硬件之間的控制及依賴(lài)關(guān)系。
系統(tǒng)級(jí)SFMEA之后,研究系統(tǒng)級(jí)SFMEA與詳細(xì)級(jí)SFMEA分析方法的接口關(guān)系,并針對(duì)詳細(xì)級(jí)SFMEA涉及復(fù)雜多樣的程序結(jié)構(gòu),分析過(guò)程復(fù)雜、失效模式數(shù)目繁多的現(xiàn)狀,采取以系統(tǒng)級(jí)SFMEA分析結(jié)果指導(dǎo)詳細(xì)級(jí)SFMEA過(guò)程,進(jìn)行詳細(xì)級(jí)SFMEA分析策略制定,給出詳細(xì)級(jí)SFMEA的實(shí)施過(guò)程和方法。
對(duì)于軟件詳細(xì)級(jí)FMEA來(lái)說(shuō),由于軟件代碼量龐大,軟件部件之間的邏輯關(guān)系不明顯,且比較復(fù)雜,如果不進(jìn)行有針對(duì)性的選擇分析,對(duì)軟件系統(tǒng)的每一部分都深入到基本的語(yǔ)句結(jié)點(diǎn),將導(dǎo)致分析過(guò)程復(fù)雜、失效模式數(shù)目繁多等問(wèn)題。因此,如何開(kāi)展軟件詳細(xì)級(jí)FMEA成為技術(shù)難點(diǎn)之一。
軟件詳細(xì)級(jí)FMEA技術(shù)與方法如圖5所示,方法被總結(jié)為四步:確定分析層次及模塊、制定分析規(guī)則及失效模式、建立變量線索、影響分析及改進(jìn)措施制定。
圖5 詳細(xì)級(jí)SFMEA分析方法
5.2.1 確定分析層次及分析模塊
為了實(shí)現(xiàn)與系統(tǒng)級(jí)SFMEA的結(jié)合,推薦以系統(tǒng)級(jí)SFMEA的底層作為分析層次。在選定了層次后,具體選擇哪個(gè)模塊進(jìn)行詳細(xì)級(jí)SFMEA可以依據(jù)以下指導(dǎo)原則:1)根據(jù)系統(tǒng)級(jí)SFMEA分析結(jié)果,存在嚴(yán)酷度較高或存在較大影響的失效模式的模塊;2)系統(tǒng)的核心模塊,實(shí)現(xiàn)其主要功能;3)與其他模塊有較多的交互,需要處理較多輸入數(shù)據(jù),交聯(lián)關(guān)系比較復(fù)雜;4)模塊實(shí)現(xiàn)的邏輯比較復(fù)雜。
5.2.2 確定分析規(guī)則及失效模式
在選定好分析層次及分析模塊后,進(jìn)一步的確定分析規(guī)則,而不是無(wú)針對(duì)性的對(duì)所有變量、算法等都進(jìn)行分析(這樣的分析仍然工作量大、無(wú)針對(duì)性、效果不理想)。分析規(guī)則的制定考兩個(gè)方面:1)一方面依據(jù)系統(tǒng)級(jí)SFMEA分析中失效模式的失效原因,重點(diǎn)選取相關(guān)的規(guī)則;2)根據(jù)分析的代碼不同而分別制定。每一組規(guī)則都用于每一個(gè)特定的分析,以下是幾條典型的分析規(guī)則:1)一次只分析一種失效模式;2)只分析變量失效;3)只分析輸入變量;4)重點(diǎn)分析影響邏輯的變量。基本的一套分析規(guī)則制定以后,則可以根據(jù)軟件代碼缺陷及缺陷模式的相關(guān)研究,得出本次分析的各種失效模式。
5.2.3 建立變量線索
由于詳細(xì)級(jí)FMEA是在給定的模塊內(nèi)分析,因此變量線索就是輸入變量經(jīng)過(guò)一系列處理變?yōu)槟K輸出的途徑。通過(guò)分析變量在模塊內(nèi)的讀寫(xiě)過(guò)程,就能把握住變量的處理流程。建立變量線索可以快速跟蹤失效對(duì)模塊的影響。變量線索的表現(xiàn)形式是各種表格。常用的表格有:模塊定義表、函數(shù)定義表、變量定義表,變量使用表、函數(shù)調(diào)用表[9]。
5.2.4 影響分析及改進(jìn)措施制定
通過(guò)建立變量線索,能夠快速把握一個(gè)變量失效模式對(duì)待分析模塊的影響,同時(shí)建立軟件執(zhí)行路徑,能夠得出該模塊的處理結(jié)果與系統(tǒng)的關(guān)系,最終明確該變量失效模式對(duì)系統(tǒng)的影響,并根據(jù)影響分析制定相應(yīng)的改進(jìn)措施。在影響分析過(guò)程中可以結(jié)合系統(tǒng)級(jí)FMEA分析的結(jié)果,以確定對(duì)系統(tǒng)的影響。
軟件故障樹(shù)分析(SFTA)是一種自頂向下的軟件可信性分析方法[10],即從軟件系統(tǒng)不希望發(fā)生的事件(頂事件),向下逐步追查導(dǎo)致頂事件發(fā)生的原因,直至基本事件(底事件)。在軟件FMEA的基礎(chǔ)上,利用FMEA 對(duì)系統(tǒng)中單一故障模式的歸納分析結(jié)果,依據(jù)FMEA 中的嚴(yán)酷度級(jí)別,從高嚴(yán)酷度級(jí)別所對(duì)應(yīng)的故障影響中選擇一個(gè)或多個(gè)嚴(yán)酷度作為故障樹(shù)的頂事件,建立系統(tǒng)的故障樹(shù),分析并補(bǔ)充失效原因,用軟件FTA樹(shù)形結(jié)構(gòu)圖可以更加直觀的表達(dá)各種失效原因之間的邏輯關(guān)系,使失效原因的分析更加徹底,從而在制定失效措施時(shí),能夠考慮到多點(diǎn)失效的邏輯關(guān)聯(lián),提出更為合理的該進(jìn)建議。
通過(guò)本文方法,研制技術(shù)平臺(tái),具備數(shù)據(jù)管理更新、分類(lèi)查詢等各項(xiàng)功能,便于操作使用;具備層次依賴(lài)模型建模、SFMEA輔助填表等各項(xiàng)需求規(guī)定的功能,界面美觀便于操作,對(duì)SFMEA有很大的輔助作用,如圖6所示。
圖6 艦船裝備軟件可信性分析設(shè)計(jì)工具
其主要功能需求如下:
1)工程管理部分主要負(fù)責(zé)工程創(chuàng)建與刪除、項(xiàng)目模型管理、分析級(jí)別管理等;
2)軟件模型建模與分析部分主要用于輔助完成軟件層次依賴(lài)模型構(gòu)造、模型屬性信息輸入、遍歷分析等;
3)SFMEA輔助填表模塊包括原因線索顯示、影響線索顯示、SFMEA表格信息顯示、SFMEA信息管理等;
4)輔助分析數(shù)據(jù)庫(kù)部分主要用于收集和管理可信性分析過(guò)程中所需的失效模式、失效原因、設(shè)計(jì)準(zhǔn)則等數(shù)據(jù);
5)信息輸出包括用于輸出SFMEA報(bào)表等報(bào)告;
6)系統(tǒng)幫助模塊用于指導(dǎo)SFMEA與SFTA綜合分析和軟件使用。
本技術(shù)成果形成的缺陷模式和設(shè)計(jì)準(zhǔn)則較多,以“性能需求完整性準(zhǔn)則”以及相關(guān)“示例”對(duì)成果進(jìn)行展示。性能需求完整性準(zhǔn)則有以下幾方面:
1)定量描述軟件系統(tǒng)應(yīng)滿足的具體性能需求。如處理數(shù)據(jù)的最大容量、精度要求、從詢問(wèn)到響應(yīng)所允許的最長(zhǎng)時(shí)間以及適應(yīng)用戶需求變化的能力等。
2)如有容量要求,須確定系統(tǒng)的容量要求。一般包括處理的記錄數(shù)和處理數(shù)據(jù)的最大容量等。
3)如有精度要求,須確定其精度要求。一般包括數(shù)據(jù)或數(shù)值計(jì)算的精度要求、數(shù)據(jù)傳輸?shù)木纫蟮取?/p>
4)如有時(shí)間特性要求,須確定其時(shí)間特性要求。一般包括處理時(shí)間、響應(yīng)時(shí)間等。
5)對(duì)于實(shí)時(shí)嵌入式軟件,必須說(shuō)明的實(shí)時(shí)性要求。一般包括周期任務(wù)處理時(shí)間、中斷響應(yīng)時(shí)間、采集數(shù)據(jù)時(shí)間、兩次輸出間隔時(shí)間等。
6)制定的性能參數(shù),尤其是安全關(guān)鍵軟件或功能的性能參數(shù),應(yīng)在需求分析完成后,與用戶進(jìn)一步確認(rèn);若不能確定具體值,一般應(yīng)提出適當(dāng)?shù)挠嗔恳?,以保證設(shè)計(jì)正確,艦船裝備嵌入式軟件一般要求留有不少于20%的余量。
舉例1:以下是一些軟件的性能要求。
存儲(chǔ)容量:滿負(fù)荷運(yùn)行時(shí)占用的內(nèi)存資源不超過(guò)100 M,1分鐘內(nèi)處理的記錄數(shù)為10000條,5分鐘內(nèi)導(dǎo)入的數(shù)據(jù)大小10 M。
處理時(shí)間:每2秒完成一次對(duì)25個(gè)傳感器采集信號(hào)的輪詢,每2秒將輪詢結(jié)果上傳至數(shù)據(jù)處理中心。
數(shù)據(jù)精度:向外輸出一個(gè)固定的電壓信號(hào)時(shí),數(shù)據(jù)處理誤差不大于0.05 V。
并發(fā)能力:系統(tǒng)支持100個(gè)用戶同時(shí)上傳數(shù)據(jù)。
舉例2:對(duì)于時(shí)序安排的余量考慮:軟件工作的時(shí)序處理要求,要結(jié)合具體的被控對(duì)象確定各種周期。當(dāng)各種周期在時(shí)間軸上安排不下時(shí),應(yīng)要求采取更高性能的CPU或多CPU并行處理,以確保軟件設(shè)計(jì)時(shí)的工作時(shí)序之間留有足夠的余量[11]。一般包括采樣周期、數(shù)據(jù)處理周期、控制周期、自診斷周期、輸入輸出周期等。
利用本文研究成果,選擇典型艦載控制類(lèi)嵌入式軟件作為對(duì)象進(jìn)行技術(shù)和方法的應(yīng)用,進(jìn)行SFMEA、軟件可信性分配技術(shù)和方法的應(yīng)用。收集了764條缺陷信息及故障信息,歸納并提煉艦船裝備軟件缺陷模式包括需求階段缺陷模式5類(lèi)、設(shè)計(jì)缺陷模式5類(lèi)、代碼缺陷模式30類(lèi)。
基于缺陷收集和缺陷模式研究,收集軟件工程實(shí)踐技術(shù)和方法,分析整理國(guó)內(nèi)已有的軟件可信性設(shè)計(jì)標(biāo)準(zhǔn),給出艦船裝備軟件需求分析階段、設(shè)計(jì)階段、編碼階段以及測(cè)試階段的可信性設(shè)計(jì)準(zhǔn)則,并針對(duì)典型可信性設(shè)計(jì)準(zhǔn)則,給出了準(zhǔn)則示例。共確定需求階段軟件可信性設(shè)計(jì)準(zhǔn)則16條,設(shè)計(jì)階段軟件可信性設(shè)計(jì)準(zhǔn)則24條,編碼階段軟件可信性設(shè)計(jì)準(zhǔn)則15條,測(cè)試階段軟件可信性設(shè)計(jì)準(zhǔn)則7條,其它軟件可信性設(shè)計(jì)準(zhǔn)則3條。
艦船裝備軟件可信性分析技術(shù)為艦船裝備軟件研發(fā)相關(guān)單位提供在艦用軟件研制過(guò)程中提供適用的、有針對(duì)性的可信性分析方法、實(shí)施指南和輔助工具。分析方法和實(shí)施指南結(jié)合收集到缺陷信息,與工程實(shí)踐結(jié)合緊密,同時(shí)提供輔助工具,供工程人員使用,可以提高分析的效率,找到影響軟件可信性的薄弱環(huán)節(jié),進(jìn)行相應(yīng)的改進(jìn),從而提高艦船裝備軟件的質(zhì)量和可信性水平。
對(duì)艦船裝備軟件缺陷信息進(jìn)行收集、分析,并建立缺陷及缺陷模式數(shù)據(jù)庫(kù),對(duì)指導(dǎo)軟件測(cè)試工作具有重要意義,對(duì)曾發(fā)生的缺陷案例進(jìn)行收集,并分析缺陷產(chǎn)生的原因,可以使軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中有意識(shí)地避免類(lèi)似問(wèn)題的發(fā)生,從而提高軟件的可信性。在軟件測(cè)試過(guò)程中,也可參考典型失效案例,有針對(duì)性地對(duì)易發(fā)生缺陷的情況重點(diǎn)測(cè)試。對(duì)軟件缺陷模式的研究和相應(yīng)的缺陷模式庫(kù)的建立,也是軟件可信性設(shè)計(jì)和分析的基礎(chǔ),為開(kāi)展軟件可信性設(shè)計(jì)和分析工作提供指導(dǎo)和幫助;建立缺陷模式特征知識(shí)庫(kù),將缺陷模式特征應(yīng)用到軟件失效推理技術(shù)中,能夠較為有效的幫助發(fā)現(xiàn)軟件中存在的缺陷,提高軟件質(zhì)量與可信性水平。
基于收集到的缺陷信息進(jìn)行的艦船裝備軟件可信性設(shè)計(jì)準(zhǔn)則及示例研究,為艦船裝備軟件研制相關(guān)單位提供在艦用軟件研制過(guò)程中提供更適用的、有針對(duì)性的可信性設(shè)計(jì)準(zhǔn)則;另外,項(xiàng)目研究給出準(zhǔn)則的應(yīng)用示例也為工程人員提供了應(yīng)用準(zhǔn)則的范例指導(dǎo),使得可信性設(shè)計(jì)工程實(shí)踐更為簡(jiǎn)便、有效,可把影響艦用軟件可信性和安全性的因素消除在設(shè)計(jì)過(guò)程的早期,降低后期的研制、維護(hù)費(fèi)用。