软件健康管理技术浅析
軟件健康管理是近幾年興起的一個綜合性研究領域,涉及到軟件信息分析技術、缺陷檢測技術、故障診斷技術、健康評估技術以及缺陷修復技術等多個方面。在軟件研發過程中,通過對整個軟件進行多維度監控、檢測和分析,以提高軟件運行安全性和可靠性。雖然說不同行業,對軟件健康關注的角度不同,但是核心還是相同或相似的,包括軟件故障模式分析、異常檢測與故障診斷算法、度量分析技術以及故障修復技術等。如果對于武器裝備系統軟件,則可能還要關注軟件傳感器技術、軟件容錯技術等。對于互聯網行業,則可能關注負載、容量、并發等技術。
軟件健康管理包括兩個方面,一方面是通過實施監控運行軟件,對可能的異常情況進行檢測、識別、定位和評估,并采取啟動冗余備份、重啟、復位等措施處理,保證軟件的安全或將異常情況的影響降低到可接受范圍之內。另一個方面則是通過軟件靜態檢測技術,通過分析代碼中的各種屬性和缺陷等,進行綜合度量。
?
現在我們拋離軟件在不同行業、不同領域應用上的不同,從源代碼的屬性上進行分析,分析如何根據從代碼靜態分析結果,度量軟件的健康情況。
?
由于當今對軟件質量的重視程度日益加強,已經從原來軟件六大質量屬性評估軟件質量,發展為八大質量屬性評估質量。建下圖:
?
在上面圖中,其中四個質量屬性是可以根據代碼靜態屬性來度量的,包括可靠性、性能效率、安全性和可維護性。
根據CISQ(信息和軟件質量聯盟)發布的國際標準來看,對四個質量屬性的度量可以從代碼靜態屬性上度量軟件健康情況,且對該度量一直處于研究和不斷完善之中。通過下面的圖可以看到,對四個質量屬性的度量元近三年來,一直在調整。在2019年,可靠性由29個子屬性進行度量,安全性由22個子屬性進行度量、性能效率和可維護性分別由15個和20個子屬性進行度量。
?
對于安全性的度量子屬性,下面截圖可以看到,是由CWE公開的22個安全漏洞模式來進行度量。這些安全漏洞可以通過靜態安全漏洞檢測工具通過掃描源代碼可以得到。
?
CISQ給出的度量方法是通過代碼中檢測到安全漏洞的總次數轉化為百萬分之一機會的弱點,以確定該度量屬性的西格瑪值。一個軟件的安全性健康情況如果達到6σ,則每百萬機會3.4個安全漏洞。通過我們多年對源代碼安全檢測的結果來看,要達到這個水平是一個非常難的過程。需要一個軟件開發組織對源代碼開發過程中,持續檢測和修復才有可能達到這個水平。
?
那對于百萬分之一機會是指什么呢?
根據CISQ給出的AFP(Automated Function Points)標準來看,CISQ自動化計算功能點需要通過應用程序的所有層進行分析,以創建可拆分為數據實體和用戶事務的應用程序的功能映射。通過對數據功能點和事務性功能點進行分析獲得。
數據功能點:
事務性功能:
?
如果要自動的獲取這些代碼中的屬性,則還是需要通過對源代碼的掃描分別獲得數據統計。業界目前還沒有見到適用性比較好的AFP工具。但是對ATP的探討近兩年比較火,讀者可以去百度相關的資料。
如果能夠自動分析出源代碼中的功能點數,就可以計算西格瑪值,進而可以采用各種度量方式對源代碼的質量情況進行計算并展示。例如下圖,可以通過值的形式展示軟件的健康情況,當然也很容易轉化為西格瑪值。
?
?
隨著計算能力和算法研究的深入,開發出自動分析功能點的工具是指日可待,將來會為企業管理層帶來更多價值,對于評估軟件質量可以建立一套公平、公正的標準,作為對提交代碼的質量評估,是目前在單元測試推廣遇到障礙情況下,評估開發人員代碼質量的一個重要手段。當然也可以納入DevOps工具鏈。
?
?
(完)
總結
以上是生活随笔為你收集整理的软件健康管理技术浅析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php7 nextcloud,CentO
- 下一篇: Day517.索引优化与查询优化 -my