成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

遇到代碼缺陷不要慌,馬上教你快速檢測(cè)和修復(fù)

開(kāi)發(fā) 前端
人類思維中總存在缺陷,寫出的代碼一樣會(huì)存在缺陷,導(dǎo)致軟件系統(tǒng)出現(xiàn)不符合預(yù)期的行為。本文討論了軟件缺陷的定義、分類、檢測(cè)和修復(fù)。

 人類思維中總存在缺陷,寫出的代碼一樣會(huì)存在缺陷,導(dǎo)致軟件系統(tǒng)出現(xiàn)不符合預(yù)期的行為。自動(dòng)化地檢測(cè)和修復(fù)缺陷是提高軟件開(kāi)發(fā)效率和軟件質(zhì)量的重要手段。本文討論了軟件缺陷的定義、分類、檢測(cè)和修復(fù)。

軟件缺陷與其分類

計(jì)算機(jī)學(xué)科中的中文詞匯很多是從英文翻譯過(guò)來(lái)的,有時(shí)不能夠準(zhǔn)確地描述或刻畫詞匯真實(shí)的含義。在軟件領(lǐng)域,你能想到的和缺陷相關(guān)的詞匯可能有:bug,defect,fault,error,failure,exception等等。說(shuō)實(shí)話,我一直也沒(méi)搞懂這些詞匯的區(qū)別。但理解這些詞匯的區(qū)別不僅僅是文字游戲,也能夠幫助我們理解針對(duì)它們的檢測(cè)和修復(fù)技術(shù)的不同。于是我google了一下,但大多文章對(duì)這些詞匯的定義都不太一致。以下是我比較認(rèn)同的這些詞匯在軟件代碼上的定義。

· Fault/Bug:軟件中出現(xiàn)不符合業(yè)務(wù)邏輯的代碼,比如+號(hào)寫成-號(hào);

· 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中檢測(cè)到,也就是比較程序的執(zhí)行結(jié)果與預(yù)期的規(guī)范(Specification)是否吻合。這個(gè)過(guò)程其實(shí)就是debugging(調(diào)試)和testing(測(cè)試)。Fault也可以稱為業(yè)務(wù)邏輯相關(guān)的缺陷。而Defect是代碼本身的問(wèn)題,不依賴于執(zhí)行結(jié)果和預(yù)期的規(guī)范的一種軟件問(wèn)題,因此Defect通常是通過(guò)靜態(tài)地掃描(不運(yùn)行)代碼來(lái)檢測(cè)的。

缺陷的檢測(cè)和修復(fù)現(xiàn)狀

從上文可以看到,F(xiàn)ault是通過(guò)測(cè)試來(lái)檢測(cè)的,而Defect是通過(guò)靜態(tài)分析來(lái)檢測(cè)。在企業(yè)中,F(xiàn)ault檢測(cè)的普及率和認(rèn)可度通常比Defect檢測(cè)的高,主要原因有如下幾點(diǎn):

(1)Fault會(huì)直接影響軟件的行為,被視為比較嚴(yán)重的問(wèn)題,而很多Defect不能直接影響軟件的行為,或者在很特殊的場(chǎng)景下才影響軟件的行為,開(kāi)發(fā)人員覺(jué)得可有可無(wú);

(2)Fault引起的軟件錯(cuò)誤容易被觀測(cè),有直接證據(jù)證明軟件中存在錯(cuò)誤,開(kāi)發(fā)人員會(huì)傾向去修改,而Defect通常比較難觀測(cè);

(3)測(cè)試的門檻低一些,測(cè)試人員只需要寫一些測(cè)試腳本就可以,但靜態(tài)分析需要有程序分析方面技術(shù)的積累;

(4)靜態(tài)分析固有的一些缺點(diǎn)(耗時(shí),誤報(bào))引起開(kāi)發(fā)人員的不滿。

自動(dòng)修復(fù)方面,這幾年在學(xué)術(shù)界比較熱門,慢慢也在企業(yè)中開(kāi)始使用,但目前應(yīng)該還處于初級(jí)階段。與檢測(cè)相反,F(xiàn)ault的自動(dòng)修復(fù)難度是比較大的,因?yàn)樯婕暗綐I(yè)務(wù)邏輯,需要人工加入一些邏輯,當(dāng)然最近也有很多學(xué)術(shù)研究使用機(jī)器學(xué)習(xí)來(lái)自動(dòng)學(xué)習(xí)Fault的自動(dòng)修復(fù);而很多的Defect的修復(fù)是不需要加入業(yè)務(wù)邏輯相關(guān)的代碼,所以自動(dòng)化程度反而可以達(dá)到較高水平,不過(guò)目前也沒(méi)有看到這方面的自動(dòng)化工具。

Defect的檢測(cè)和修復(fù)的問(wèn)題和展望

我們不難發(fā)現(xiàn),F(xiàn)ault的檢測(cè)已經(jīng)比較成熟;而Defect的檢測(cè)受重視程度還不夠。以前我們可能只關(guān)注軟件的正確性,所以Fault的檢測(cè)和修復(fù)比較受歡迎,但Defect也會(huì)影響軟件的質(zhì)量,同樣需要受到關(guān)注。

最近公司在提倡提升軟件工程能力,打造高可信的軟件產(chǎn)品,也是強(qiáng)調(diào)我們不僅僅要關(guān)注軟件功能的正確性,也需要關(guān)注非功能方面的質(zhì)量,寫出“優(yōu)美”的代碼。因此,Defect的自動(dòng)檢測(cè)和修復(fù)是一個(gè)比較有價(jià)值的方向,以下是一些可能做的事情:

(1)對(duì)開(kāi)發(fā)人員加強(qiáng)Defect方面的培訓(xùn),讓開(kāi)發(fā)人員了解常見(jiàn)的Defect,在編碼時(shí)盡量地避免寫出這樣的Defect,這比后續(xù)的檢測(cè)和修復(fù)付出的代價(jià)要少很多。現(xiàn)在公司雖然有很多的編程規(guī)范定義不同的Defect,但開(kāi)發(fā)人員可能并沒(méi)有用心去學(xué)習(xí),如何讓開(kāi)發(fā)人員意識(shí)到Defect的危害是比較關(guān)鍵的;

(2)加強(qiáng)代碼的Review的機(jī)制。這一點(diǎn)我個(gè)人深有體會(huì):沒(méi)有Review時(shí),寫的代碼就比較隨意,有Review時(shí)就會(huì)考慮得全面一些,畢竟要給別人看;

(3)Defect的自動(dòng)檢測(cè)。對(duì)于Fault的檢測(cè),人比機(jī)器更擅長(zhǎng)(比如寫測(cè)試用例),但對(duì)于Defect的檢測(cè),機(jī)器比人更擅長(zhǎng)(比如枚舉程序路徑),因此Defect的檢測(cè)是更適合自動(dòng)化的。目前公司也引入了一些Defect的自動(dòng)檢測(cè)工具,如coverity,fortify,findbugs等等,但這些工具通常只是作為黑盒來(lái)使用。這樣能夠覆蓋更多的Defect,同時(shí)也帶來(lái)一些問(wèn)題:同樣的Defect實(shí)例被不同工具重復(fù)報(bào)告出來(lái),新增一些Defect檢測(cè)規(guī)則比較難,處理Defect例外場(chǎng)景比較難。因此,我們可能需要一個(gè)統(tǒng)一的Defect檢測(cè)工具。

(4)Defect的自動(dòng)修復(fù)。Defect的檢測(cè)除了耗時(shí)和誤報(bào)外,另一個(gè)不受歡迎的地方是開(kāi)發(fā)人員不知道怎么修復(fù)。因此,Defect的自動(dòng)修復(fù)也是提高Defect受重視程度的一個(gè)有效途徑。而且,相比Fault的自動(dòng)修復(fù),Defect的自動(dòng)修復(fù)對(duì)于機(jī)器而言是要簡(jiǎn)單一些的,因?yàn)镈efect的類別是有限的可以枚舉的,同時(shí)Defect的性質(zhì)是比較形式化不依賴于業(yè)務(wù)邏輯的。未來(lái)希望能開(kāi)發(fā)出一個(gè)統(tǒng)一的Defect修復(fù)工具。

責(zé)任編輯:張燕妮 來(lái)源: 華為云開(kāi)發(fā)者社區(qū)
相關(guān)推薦

2012-01-13 16:11:44

2019-11-17 23:23:46

Python Nump函數(shù)數(shù)據(jù)處理

2024-12-23 14:12:41

2023-12-05 13:26:00

MySQL修復(fù)

2023-08-18 14:22:42

2022-06-20 10:48:56

Commvault

2011-03-30 10:27:57

Chrome瀏覽器

2012-05-25 13:18:15

Windows 8重啟

2017-09-14 11:49:21

內(nèi)存攢機(jī)存儲(chǔ)

2023-05-25 19:23:29

2020-04-23 11:02:53

惡意代碼信息泄露黑客

2013-12-06 11:14:54

開(kāi)發(fā)者程序員bug

2009-12-04 15:40:53

快速升級(jí)Windows

2013-11-14 09:39:32

2010-03-19 15:59:08

2020-03-02 10:01:31

Linux工具數(shù)據(jù)

2024-12-05 08:58:47

2020-11-17 12:54:56

Python代碼開(kāi)發(fā)

2019-12-03 08:29:39

代碼調(diào)優(yōu)網(wǎng)絡(luò)

2020-05-21 14:50:48

代碼機(jī)器學(xué)習(xí)圖像
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美日韩久久精品 | 免费视频一区二区 | 欧美日本免费 | 99精品国产一区二区青青牛奶 | 中文字幕在线观看成人 | 国产精品嫩草影院精东 | 九九热这里只有精品在线观看 | aaa大片免费观看 | 国产一区在线看 | a在线观看 | 久久lu| 国产精品成人在线播放 | 精品一区二区观看 | 欧美日韩精品一区二区 | 欧美1级| 亚洲福利一区二区 | 国产在线观看不卡一区二区三区 | 欧美三级久久久 | 亚洲成人久久久 | 中文字幕在线观看精品 | 天天色天天色 | 国产日韩欧美 | 99精品99久久久久久宅男 | 国产福利在线视频 | 中文字幕亚洲区一区二 | 亚洲国产欧美日韩 | 亚洲精品毛片av | 久草热播 | 国产精品久久久 | 日韩在线观看一区 | 午夜影院黄 | 国产成人免费视频 | 在线视频91 | 亚洲精品久久视频 | 亚洲高清av | 精品视频久久久 | 久久久91| www.久久久 | 国产精品69久久久久水密桃 | 成年人网站在线观看视频 | 欧美成人免费在线 |