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