這篇文章主要介紹“總結(jié)軟件缺陷的定義、分類、檢測和修復(fù)”,在日常操作中,相信很多人在總結(jié)軟件缺陷的定義、分類、檢測和修復(fù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”總結(jié)軟件缺陷的定義、分類、檢測和修復(fù)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),電白企業(yè)網(wǎng)站建設(shè),電白品牌網(wǎng)站建設(shè),網(wǎng)站定制,電白網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,電白網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
計(jì)算機(jī)學(xué)科中的中文詞匯很多是從英文翻譯過來的,有時(shí)不能夠準(zhǔn)確地描述或刻畫詞匯真實(shí)的含義。在軟件領(lǐng)域,你能想到的和缺陷相關(guān)的詞匯可能有:bug,defect,fault,error,failure,exception等等。說實(shí)話,我一直也沒搞懂這些詞匯的區(qū)別。但理解這些詞匯的區(qū)別不僅僅是文字游戲,也能夠幫助我們理解針對它們的檢測和修復(fù)技術(shù)的不同。于是我google了一下,但大多文章對這些詞匯的定義都不太一致。以下是我比較認(rèn)同的這些詞匯在軟件代碼上的定義。
· Fault/Bug:軟件中出現(xiàn)不符合業(yè)務(wù)邏輯的代碼,比如+號寫成-號;
· Error:軟件運(yùn)行中出現(xiàn)不符合預(yù)期的值,比如a的值為2,被計(jì)算成3;
· Failure:軟件與人的交互中出現(xiàn)不符合預(yù)期的行為,比如程序崩潰。因此Fault可能導(dǎo)致Error,最終可能導(dǎo)致Failure,注意這里是可能,并不是一定;
· Defect:一種Defect是一類代碼自身缺陷的統(tǒng)稱(歸納),比如內(nèi)存泄漏。
Fault通常需要從Error,F(xiàn)ailure中檢測到,也就是比較程序的執(zhí)行結(jié)果與預(yù)期的規(guī)范(Specification)是否吻合。這個(gè)過程其實(shí)就是debugging(調(diào)試)和testing(測試)。Fault也可以稱為業(yè)務(wù)邏輯相關(guān)的缺陷。而Defect是代碼本身的問題,不依賴于執(zhí)行結(jié)果和預(yù)期的規(guī)范的一種軟件問題,因此Defect通常是通過靜態(tài)地掃描(不運(yùn)行)代碼來檢測的。
從上文可以看到,F(xiàn)ault是通過測試來檢測的,而Defect是通過靜態(tài)分析來檢測。在企業(yè)中,F(xiàn)ault檢測的普及率和認(rèn)可度通常比Defect檢測的高,主要原因有如下幾點(diǎn):
(1)Fault會(huì)直接影響軟件的行為,被視為比較嚴(yán)重的問題,而很多Defect不能直接影響軟件的行為,或者在很特殊的場景下才影響軟件的行為,開發(fā)人員覺得可有可無;
(2)Fault引起的軟件錯(cuò)誤容易被觀測,有直接證據(jù)證明軟件中存在錯(cuò)誤,開發(fā)人員會(huì)傾向去修改,而Defect通常比較難觀測;
(3)測試的門檻低一些,測試人員只需要寫一些測試腳本就可以,但靜態(tài)分析需要有程序分析方面技術(shù)的積累;
(4)靜態(tài)分析固有的一些缺點(diǎn)(耗時(shí),誤報(bào))引起開發(fā)人員的不滿。
自動(dòng)修復(fù)方面,這幾年在學(xué)術(shù)界比較熱門,慢慢也在企業(yè)中開始使用,但目前應(yīng)該還處于初級階段。與檢測相反,F(xiàn)ault的自動(dòng)修復(fù)難度是比較大的,因?yàn)樯婕暗綐I(yè)務(wù)邏輯,需要人工加入一些邏輯,當(dāng)然最近也有很多學(xué)術(shù)研究使用機(jī)器學(xué)習(xí)來自動(dòng)學(xué)習(xí)Fault的自動(dòng)修復(fù);而很多的Defect的修復(fù)是不需要加入業(yè)務(wù)邏輯相關(guān)的代碼,所以自動(dòng)化程度反而可以達(dá)到較高水平,不過目前也沒有看到這方面的自動(dòng)化工具。
我們不難發(fā)現(xiàn),F(xiàn)ault的檢測已經(jīng)比較成熟;而Defect的檢測受重視程度還不夠。以前我們可能只關(guān)注軟件的正確性,所以Fault的檢測和修復(fù)比較受歡迎,但Defect也會(huì)影響軟件的質(zhì)量,同樣需要受到關(guān)注。
最近公司在提倡提升軟件工程能力,打造高可信的軟件產(chǎn)品,也是強(qiáng)調(diào)我們不僅僅要關(guān)注軟件功能的正確性,也需要關(guān)注非功能方面的質(zhì)量,寫出“優(yōu)美”的代碼。因此,Defect的自動(dòng)檢測和修復(fù)是一個(gè)比較有價(jià)值的方向,以下是一些可能做的事情:
(1)對開發(fā)人員加強(qiáng)Defect方面的培訓(xùn),讓開發(fā)人員了解常見的Defect,在編碼時(shí)盡量地避免寫出這樣的Defect,這比后續(xù)的檢測和修復(fù)付出的代價(jià)要少很多。現(xiàn)在公司雖然有很多的編程規(guī)范定義不同的Defect,但開發(fā)人員可能并沒有用心去學(xué)習(xí),如何讓開發(fā)人員意識到Defect的危害是比較關(guān)鍵的;
(2)加強(qiáng)代碼的Review的機(jī)制。這一點(diǎn)我個(gè)人深有體會(huì):沒有Review時(shí),寫的代碼就比較隨意,有Review時(shí)就會(huì)考慮得全面一些,畢竟要給別人看;
(3)Defect的自動(dòng)檢測。對于Fault的檢測,人比機(jī)器更擅長(比如寫測試用例),但對于Defect的檢測,機(jī)器比人更擅長(比如枚舉程序路徑),因此Defect的檢測是更適合自動(dòng)化的。目前公司也引入了一些Defect的自動(dòng)檢測工具,如coverity,fortify,findbugs等等,但這些工具通常只是作為黑盒來使用。這樣能夠覆蓋更多的Defect,同時(shí)也帶來一些問題:同樣的Defect實(shí)例被不同工具重復(fù)報(bào)告出來,新增一些Defect檢測規(guī)則比較難,處理Defect例外場景比較難。因此,我們可能需要一個(gè)統(tǒng)一的Defect檢測工具。
(4)Defect的自動(dòng)修復(fù)。Defect的檢測除了耗時(shí)和誤報(bào)外,另一個(gè)不受歡迎的地方是開發(fā)人員不知道怎么修復(fù)。因此,Defect的自動(dòng)修復(fù)也是提高Defect受重視程度的一個(gè)有效途徑。而且,相比Fault的自動(dòng)修復(fù),Defect的自動(dòng)修復(fù)對于機(jī)器而言是要簡單一些的,因?yàn)镈efect的類別是有限的可以枚舉的,同時(shí)Defect的性質(zhì)是比較形式化不依賴于業(yè)務(wù)邏輯的。未來希望能開發(fā)出一個(gè)統(tǒng)一的Defect修復(fù)工具。
到此,關(guān)于“總結(jié)軟件缺陷的定義、分類、檢測和修復(fù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
新聞標(biāo)題:總結(jié)軟件缺陷的定義、分類、檢測和修復(fù)
URL分享:http://jinyejixie.com/article8/ipipop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、外貿(mào)建站、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)