經(jīng)理:該Bug何時(shí)能得到修復(fù)? 經(jīng)驗(yàn)缺乏的程序員:也許一個(gè)小時(shí)?最多兩個(gè)小時(shí)!馬上去做! 經(jīng)驗(yàn)豐富的程序員:嗯,捉一條魚需要多少時(shí)間呢? 在現(xiàn)實(shí)操作中,很難能明確知道一個(gè)軟件缺陷需要多久可以修復(fù),尤其是當(dāng)你對(duì)代碼不了解的情況下。James Shore在“敏捷開發(fā)藝術(shù)”一書中指出:“在你需要修復(fù)Bug時(shí),你必須找到是哪里出錯(cuò)了?”,問題的關(guān)鍵是不能準(zhǔn)確估算多久才能找出是哪里報(bào)錯(cuò)的。只有知道“病源”在哪?你才能準(zhǔn)確估算修復(fù)的時(shí)間。但那為時(shí)已晚,根據(jù)Steve McConnell: “發(fā)現(xiàn)缺陷—理解缺陷—通常占了工作的90%”。 有許多缺陷只需要改一行代碼就可以修復(fù)。時(shí)間都花在確定該行上面,就好像釣魚的時(shí)候該把魚鉤放哪?何時(shí)何地魚會(huì)上鉤一樣。每個(gè)Bug都有它們自己的性格特征,有些可能很容易被發(fā)現(xiàn),而有些可能會(huì)跟你玩“捉迷藏”并且容易發(fā)現(xiàn)的Bug不一定就很難修復(fù),當(dāng)然,那些擅長(zhǎng)玩“隱藏”的Bug有可能很容易被修復(fù)。 查找和修復(fù) 下面讓我們來看看如何發(fā)現(xiàn)并修復(fù)Bug。當(dāng)調(diào)試時(shí),Paul Butcher把每個(gè)步驟都進(jìn)行了很好的描述。經(jīng)驗(yàn)豐富的程序員會(huì)很熟悉這種結(jié)構(gòu)化和紀(jì)律性的步驟要領(lǐng)。
發(fā)現(xiàn)和修復(fù)需要多久 設(shè)置測(cè)試環(huán)境所需的時(shí)間,重現(xiàn)一個(gè)Bug或者修復(fù)可能遠(yuǎn)遠(yuǎn)超過在代碼中查找和修復(fù)的時(shí)間。但是對(duì)于那種小缺陷,在發(fā)現(xiàn)時(shí)即可修復(fù)。 在軟件開發(fā)中,關(guān)于大多數(shù)軟件缺陷來自哪里?Dewayne Perry解釋到:發(fā)現(xiàn)一個(gè)Bug(理解并重現(xiàn)Bug)比多久去修復(fù)更難。研究發(fā)現(xiàn),大多數(shù)Bug(幾乎3/4)很容易被發(fā)現(xiàn)和理解,并且不會(huì)花多少時(shí)間去修復(fù):5天或更少(這是在大型實(shí)時(shí)系統(tǒng)與一個(gè)重量級(jí)的SDLC中,經(jīng)過大量檢查和測(cè)試發(fā)現(xiàn)的)。這里有一個(gè)長(zhǎng)期隱藏型Bug,可能需要花更長(zhǎng)的時(shí)間修復(fù),即使這個(gè)Bug微不足道:
所以在你發(fā)現(xiàn)Bug的時(shí)候,可以和自己打賭,它很快就會(huì)被修復(fù),這個(gè)命中率會(huì)很高。但是當(dāng)打賭失敗時(shí),你可能會(huì)錯(cuò)很多,或者徹底來個(gè)大錯(cuò)特錯(cuò)。 |
|