2016-2022 All Rights Reserved.平安財經網.復制必究 聯(lián)系QQ 備案號:
本站除標明“本站原創(chuàng)”外所有信息均轉載自互聯(lián)網 版權歸原作者所有。
郵箱:toplearningteam#gmail.com (請將#換成@)
軟件庫,供應商或團隊聲稱他們開發(fā)高質量的軟件并不罕見。這個宣言的問題在于,不同的開發(fā)人員和團隊之間的質量定義可以有很大的不同。一個團隊可能會認為任何符合MISRA-C的代碼庫都是高質量的代碼庫,而另一個團隊可能只關心每個函數(shù)的圈復雜度為10或更低。其他人可能只是運行一些測試用例并聲稱他們的軟件沒有錯誤,因此也是高質量的軟件。由于每個人都有自己的質量定義,因此團隊必須以一種既不是文件記錄也可以衡量的方式來定義質量。在這篇文章中,我們將探討幾個可用于定義軟件質量的可衡量的軟件度量標準。
嵌入式系統(tǒng)行業(yè)充滿了標準,旨在幫助開發(fā)人員避免擺在他們面前的開發(fā)人員的陷阱和痛苦。這些標準的重點可能略有不同,從簡單的風格標準到MISRA-C等標準,為開發(fā)人員提供了C語言的子集。按照規(guī)定的標準開發(fā)軟件可以避免常見的陷阱。最終,它提升了軟件的質量。
成千上萬的新英格蘭工程師和擁有購買力的高管將來到新英格蘭設計與制造公司,這是該地區(qū)最先進的制造業(yè)展覽會。他們的第一目標:尋找供應商。為了吸引他們,數(shù)百家公司將參加展會。如果您現(xiàn)在預訂展位,可以加入他們。
在驗證編碼標準時,通常有兩個必需的組件:自動工具分析和代碼審查。例如,MISRA-C是開發(fā)人員遵循的一種非常常見的編碼標準。靜態(tài)代碼分析器可用于驗證標準中90%的指令,但有些指令無法通過工具進行驗證。為了確保滿足標準,開發(fā)人員需要定期執(zhí)行代碼審查并手動檢查剩余的指令。滿足標準可以是確保在軟件中滿足最低質量水平的好方法。
我認為每個開發(fā)團隊應該監(jiān)控并添加其質量定義的我最喜歡的質量測量之一是McCabe Cyclomatic Complexity測量。這是一個簡單的測量,可以在任何確定通過函數(shù)的路徑數(shù)的函數(shù)上執(zhí)行。值為10或更小的函數(shù)被認為是易于測試和維護的簡單函數(shù)。盡管如此,測試所需的路徑數(shù)量開始變得更加復雜,困難,并且易于開發(fā)和維護,這可以用來表明代碼質量較低。事實上,當復雜度數(shù)接近大于20的數(shù)字時,幾乎不可能正確地測試函數(shù)。如果無法正確測試功能,如何顯示其正常工作?
測量復雜性也可以是自動化過程。有免費的工具,如CCCC和Eclipse測量儀插件,可用于測量圈復雜度。還有IDE,例如Understanding,可用于收集有關代碼庫的度量信息。成功測量該指標的關鍵是:首先,決定進行測量;第二,在將新代碼檢入代碼庫之前執(zhí)行測量。它也應該在持續(xù)集成服務器上執(zhí)行。
我遇到的軟件庫和代碼庫太多,沒有警告就不能編譯。警告是編譯器告訴開發(fā)人員他們正在做一些看起來不太正確的事情的方法。鑒于大多數(shù)編譯器都會讓開發(fā)人員在代碼中做一些可怕的事情,編譯器通過警告調用開發(fā)人員的事實意味著開發(fā)人員應該注意!在沒有單一警告的情況下編譯的代碼是一種易于衡量的指標,表明軟件滿足其他軟件可能無法滿足的質量水平。它仍然可能存在錯誤或其他質量問題,但至少代碼本身在語義上是正確的。
我認為,我在行業(yè)開發(fā)周期中看到的最大缺陷之一是開發(fā)能夠獲得100%代碼覆蓋率的測試。實際上,問題不在于100%的代碼覆蓋率;它只是了解測試實際覆蓋的代碼量!如果團隊知道他們的測試用例覆蓋了85%的軟件,那將是一回事。然而,大多數(shù)團隊甚至都不知道。代碼覆蓋率可以是跟蹤顯示軟件質量水平的重要指標。顯然,已經測試到85%的東西將比僅測試到50%的東西更強大和更高的質量。開發(fā)人員可以測量此值并將其用作代碼質量的內部指標。我們將在以后的文章中介紹如何執(zhí)行此操作。
代碼驗證與測試覆蓋類似,不同之處在于我們不是測量覆蓋了多少代碼,而是測量實際通過或失敗的測試百分比。例如,我們可以根據以下因素生成數(shù)值:
使用這些指標,我們可以根據測試執(zhí)行的成功程度生成0到10范圍內的數(shù)值。然后,這為我們提供了一個評估指標,如果我們沒有達到所需的代碼驗證級別,我們可以返回并改進測試過程,直到我們達到所需的級別,這也對應于所需的代碼質量級別。
為了獲得高質量的軟件,開發(fā)團隊需要定義“質量”一詞。該定義應包括可在整個開發(fā)過程中輕松跟蹤和監(jiān)控的可衡量指標。在本文中,我們探討了一些高級定義,這些定義應該是為了創(chuàng)建高質量代碼庫而遵循的最小度量和過程。實施這些指標不僅可以幫助您提升一般代碼質量,還可以消除和防止軟件缺陷。
Jacob Beningo是一名嵌入式軟件顧問,目前與十幾個國家的客戶合作,通過提高產品質量,成本和上市時間來大幅改變他們的業(yè)務。他發(fā)表了200多篇關于嵌入式軟件開發(fā)技術的文章,是一位廣受歡迎的演講者和技術培訓師,擁有三個學位,其中包括密歇根大學的工程碩士學位。請隨時通過jacob@beningo.com或他的網站與他聯(lián)系。另外,請注冊他的每月Embedded Bytes時事通訊。
2016-2022 All Rights Reserved.平安財經網.復制必究 聯(lián)系QQ 備案號:
本站除標明“本站原創(chuàng)”外所有信息均轉載自互聯(lián)網 版權歸原作者所有。
郵箱:toplearningteam#gmail.com (請將#換成@)