在整個軟件開發生命周期和所有開發工件中定義和雙向跟蹤需求的能力是開發高保證軟件不可或缺的方面。在許多情況下,這也是讓監管機構認證代碼的一部分。它是確保當今關鍵軟件可靠、安全和可靠的關鍵要素。所有這三個方面,尤其是作為其他兩個基礎的安全性,必須從頭開始構建到代碼中。它變得過于復雜,無法像繃帶一樣固定。
為了完成所有這三個要素,開發人員必須能夠清楚地說明系統的功能、安全和安保要求,然后能夠驗證軟件和系統是否滿足這些要求。他們需要需求可追溯性,包括將需求從其文檔跟蹤到執行它的代碼的能力,以及從該代碼追溯到需求的能力。
曾經有一段時間,可以通過走查等非正式方法來實現可追溯性,但如今的代碼已經變得如此龐大和復雜——更不用說至關重要了——以至于這些方法根本不再值得信任。自動化工具既可以測試代碼是否存在以執行既定要求,也可以確保此類代碼不會受到細微編碼錯誤的影響。第一步是建立雙向需求可追溯性,可以跟蹤從每個需求的代碼到實現該功能的源代碼,并且同樣能夠從該源代碼追溯到需求。
通過驗證實現軟件質量目標所需的工具包括靜態和動態分析。靜態分析工具使用未編譯的源代碼來分析它的各種質量方面,例如清晰度、一致性和復雜性,并根據編碼規則檢查它以符合特定的安全或安全相關編碼標準。此外,靜態分析可用于建立數據和控制流的基礎知識,這對于了解代碼中的潛在弱點和漏洞至關重要。也就是說,誰或哪些人或軟件實體可以訪問哪些數據以及它們如何影響控制?這有助于確定給定的所需功能是否正在獲得所需的訪問權限,或者未經授權的實體是否也可能正在這樣做。
另一方面,動態分析在編譯和執行的代碼上運行。動態分析利用靜態分析過程中產生的信息對編譯后的代碼進行測試,并與源代碼協調,自動生成一套測試。然后可以通過從需求文檔派生的手動創建的測試來補充這些測試。這些可以包括功能安全測試,例如通過向設備提供錯誤數據來獲得對設備的控制的模擬嘗試。
覆蓋分析提供了對代碼執行了多少的度量,但更具體地說,通過圖形可視化提供了分支/決策覆蓋和過程/函數調用覆蓋,從而更深入地了解代碼對給定刺激的響應。這不僅會告訴您需求是否已得到解決,而且還會告訴您它們是否已正確執行而沒有隱藏的危險。需求可追溯性與覆蓋分析的結合還可能出現“死代碼”或從未執行過的代碼區域。這段代碼可能會給您帶來不便,但如果黑客能夠獲得訪問權限并從中獲得控制權,它也可能構成安全威脅。它是無法追蹤的代碼,因此應該被淘汰。
在整個生命周期和整個開發工件(包括執行代碼)中定義和跟蹤需求的能力是能夠驗證代碼的不可或缺的方面,并且在許多情況下,對于獲得監管機構認證的代碼而言。在當今軟件日益復雜的世界中,必須使用自動化工具來完成。需求跟蹤既支持也支持其他測試活動以構成整體,但它代表了追求其他活動的基礎,例如標準合規性、正確編碼、單元系統和集成測試等。
審核編輯:郭婷
-
源代碼
+關注
關注
96文章
2946瀏覽量
66811 -
代碼
+關注
關注
30文章
4803瀏覽量
68754
發布評論請先 登錄
相關推薦
評論