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