出錯(cuò)時(shí)的軟件開發(fā)
在開發(fā)的過程中有錯(cuò)誤發(fā)生了,此時(shí)你該如何應(yīng)對(duì)呢?John Ferguson Smart在他的最新博客中提出了一些想法,大家可以參考一下(2008.10.27最后更新)現(xiàn)今比以后任何時(shí)候,都需要開發(fā)者更加高效。極度高效。組織需要提高從它們的開發(fā)項(xiàng)目中得到的附加值,并且它們也樂于尋找實(shí)現(xiàn)這一目標(biāo)的方法。
當(dāng)然,你可以采用傳統(tǒng)的方法--努力工作。為了消除項(xiàng)目中不可預(yù)見的癥狀,每天工作16個(gè)小時(shí),還沒有周末。但做的更聰明一點(diǎn)兒,會(huì)不會(huì)更好些?
在引進(jìn)新的實(shí)踐方法及改進(jìn)現(xiàn)有方法方面投入的相對(duì)多一些,以使組織能努力獲得更多回報(bào),這就是開發(fā)的過程。一般而言,事物中有許多方面都可以被改進(jìn),但此處有一些小竅門能使你的開發(fā)流程更加合理,只是為你開個(gè)頭罷了。
持續(xù)集成(CI)通知策略的再思考
到目前為止,最通用的CI通知機(jī)制就是陳舊的郵件服務(wù)器。然而,你能肯定在你手邊能完成這項(xiàng)任務(wù)的最合適系統(tǒng)就是電子郵件嗎?嘗試不使用電子郵件,而使用即時(shí)消息去完成你的CI通知。記住,電子郵件易成為一種干擾--如果你僅僅大約每?jī)尚r(shí)才查閱一次郵件,你就會(huì)變得十分高效。電子郵件只是,或至少是,用于構(gòu)建失敗--人們需要快速地知曉失敗任務(wù)。
積極地優(yōu)化構(gòu)建過程
構(gòu)建度量(Build Metrics)是一種監(jiān)控構(gòu)建過程健康狀況的極好方法。為什么過去3周中,代碼覆蓋率一直在下降?為什么單元測(cè)試的數(shù)量并未呈有規(guī)律的增長(zhǎng)?為什么要花費(fèi)很長(zhǎng)的時(shí)間去修復(fù)這樣的構(gòu)建?運(yùn)行單元測(cè)試需要多長(zhǎng)時(shí)間--是否有一些測(cè)試需要執(zhí)行過分長(zhǎng)的時(shí)間?這些信息并非華而不實(shí)的東西--在不斷改進(jìn)構(gòu)建過程的工作中,它們都扮演著關(guān)鍵的角色。現(xiàn)代CI工具,如Hudson,Bamboo和TeamCity,能為構(gòu)建展示豐富的統(tǒng)計(jì)。Bamboo在這方面做的尤佳。無論你正使用何種CI工具,都要學(xué)習(xí)如何最大限度地使用它的報(bào)表特性,并使用這些特性去定位及修復(fù)開發(fā)過程中討厭污點(diǎn)。如果你的CI工具不能給你所需要的全部信息,那就找一個(gè)能做到的。
合理化發(fā)布過程
在發(fā)布過程中有許多必做的工作,如準(zhǔn)備發(fā)行說明,確定該版本中哪些問題已被解決了,標(biāo)記版本,等等。這些都是軟件生命周期的重要部分,如果你忽略了它們,QA們和最終用戶可能會(huì)很生氣。但要盡量自動(dòng)地去做這些工作。許多CI工具能很好地與問題追蹤系統(tǒng)(如JIRA和Trac)進(jìn)行集成,以便你能基于版本控制日志看到某個(gè)問題是在哪次特定的構(gòu)建中被解決的。如果你在使用Eclipse,Mylyn能幫你將處理過的問題歸總成邏輯變化組,并使用標(biāo)準(zhǔn)的模板列出在某項(xiàng)工作中已被解決的(或僅是影響到的)問題。或者你可使用Subversion的hook腳本去確保每次向Subversion做的提交都能對(duì)應(yīng)到一個(gè)有效的問題編號(hào)。
這只是一些想法罷了--還有更多。底線就是--你不需要忍耐一個(gè)次理想的開發(fā)過程--相反,要進(jìn)入其中,并做些能改進(jìn)它的事情。祝好運(yùn)!