要在如核反應堆控制保護系統、飛行器控制系統等安全重要系統中使用計算機系統,除了硬體系統的可靠性外,必須確保其控制軟體具有足夠高的可靠性。通常採取的措施有:利用成功的經驗,自頂向下的設計方法,模組化的結構,清晰的檔案系統,可審核的檔案,每個階段的驗證,整個計算機系統的確認(鑑定)等。其中驗證與確認(V&V)是保證軟體系統質量和可靠性的重要措施,用以確認各項設計要求已得到實施,使計算機系統開發過程中產生缺陷的可能性減至最小,因而是開發過程中的重要環節。
驗證(正確地幹事):驗證是一種有計畫的行動,旨在試驗所開發的控制軟體在各種不同運行工況下的正確的功能,在審評其設計和性能時考察是否滿足預定的要求。
確認(乾正確的事):確認也是一種有計畫的行動,用以確定最終產品是否滿足需求規格書所確立的有關目標,並制訂測試和驗收的標準,以確信上述要求已得到滿足,為硬體和軟體中正確體現系統要求所規定的性能提供全面保證。
V&V是指由勝任的非原設計人員獨立進行的複審、檢查、分析、測試等活動。可通過下列活動的組合實現:獨立地進行這些活動,或獨立見證原設計人員的活動,或獨立複審、檢查原設計人員活動產生的文檔化的結果。對文檔化工作如測試等的獨立複審應滿足ASME-NQA-1—1989的要求,用以確信安全系統設計基本要求在被安裝的系統上是可跟蹤的,並得到滿足。檢查包括對設計過程、代碼編制、文檔化試驗結果等的演繹和分析,可採用(但不限於)格式化證明、petri網(一種軟體分析的方法)或其他圖形分析方法和相關技術等;測試分為對模組或系統的功能特性的功能測試(包括黑箱試驗、工廠驗收試驗、現場驗收試驗三類),對單元和模組的內部結構進行的結構測試(又稱為進程試驗 ,可通過分支測試或路徑測試等實現)。
V&V過程涉及計算機開發過程中以順序(即瀑布法)或循環(即螺旋形研製法)方式進行的各階段,包括非計算機的硬體要求、非計算機的硬體設計與實現、計算機硬體要求、計算機硬體設計與實現、軟體要求、軟體設計與實現、(軟硬體)集成要求、計算機系統集成及系統測試(工廠驗收測試)、現場驗收測試等,任何階段通不過驗證都將導致本階段或整個項目的重新開發。
對軟體部分的V&V有特殊的要求。對於驗證工作的結果,要形成檔案,包括軟體驗證計畫、設計階段驗證報告、軟體測試技術條件、軟體測試報告等。軟體研製周期各個階段都要求有軟體驗證計畫,規定驗證過程中所採用的準則、方法和工具,其詳盡程度必須使一個獨立的小組能夠執行該驗證計畫,並能對該軟體是否滿足了它的性能要求得出客觀的判斷。下圖示出軟體研製周期各個階段的V&V的主要任務。
V&V從概念設計開始。需求分析是制訂系統開發及軟體研製技術規格書的主要依據。需求分析階段的驗證報告應包括,需求內容的根據,合理性和可實施性,符合概念設計提出的目標、任務、性能及技術指標。並制訂為達到上述要求需進行的系統測試和驗收測試的大綱。設計階段的驗證報告應包含下列內容:與軟體功能要求不符合的項目,與設計標準不符合的項目,與有關要求不相適應的模組、數據、結構和算法。根據設計小組提供的被測軟體的總說明書編制軟體測試的技術條件,其中規定編碼階段驗證工作的原則,內容包括:進行測試的環境、測試步驟、驗收準則、檢錯與糾錯方法,以及在編碼階段應完成的檔案目錄。編碼階段的驗證應從模組測試開始,按自下而上的方法驗證整個軟體。通過模
塊測試確認每個模組是否執行了它該執行的功能,而不執行不希望它執行的功能。同時進行模組的集成測試,以便在研製的最初階段就能發現所有模組是否能互相配合,執行所需要的功能。分析的內容包括:算法分析、資料庫分析、控制流分析、程式大小和執行時間分析等。軟體測試報告針對軟體測試技術條件所述的測試結果說明該軟體是否達到了軟體功能要求所規定的性能要求,具體內容包括:用於測試的硬體結構,所用的存儲介質及被測的最終編碼的存取要求,輸入測試清單,輸出測試清單,有關定時、事件序列等的附加數據,與測試技術條件規定的驗收準則的一致性,出錯事件記錄。
為保證控制軟體的正常執行,必須對集成系統進行驗證,即把已驗證過的硬體與軟體模組組合成一個執行某些特定功能的系統進行測試,以確定硬體與軟體的接口是否滿足要求,以及軟體是否能在這個特定的硬體環境下運行。進行這一測試的系統必須與實際系統一樣完整。為系統測試所選擇的測試方案必須使所有模組接口及模組本身的基本運行都受到試驗。用於系統測試的設備和軟體工具必須經過鑑定。集成系統驗證的結果必須以測試報告方式整理歸檔。報告應包括:所使用的硬體和軟體、測試設備及其標定、系統及接口部件的仿真、所發現的測試結果偏差及所採取的校正措施。
最終對整個計算機系統(包括軟硬體)應通過測試進行確認(鑑定),以確定滿足需求規格書所確立的目標,以及安全系統所必需遵循的準則。確認必須按正式的確認計畫進行。計算機系統必須加以靜態與動態的仿真輸入信號,分別模擬正常運行、預期運行事件及要求計算機系統動作的事故工況。這些測試應覆蓋所有的信號範圍;有代表性地覆蓋應計算的參數範圍;廣泛覆蓋表決邏輯和其他邏輯,以及各種邏輯的組合。按最終裝置的結構對所有輸入和輸出信號進行測試,保證精確度和回響時間滿足要求,保證對於任何設備故障或故障組合能採取正確動作。確認報告總結計算機系統確認的結果,並對系統是否符合所有要求做出評估 。