詳解敏捷開發(fā)全景圖
今天的主角是下面這張圖,它全景式展現(xiàn)了敏捷開發(fā)在不同粒度上的關(guān)注點。(看不清可以看***的Slideshare)
這張圖主體上是要給敏捷在不同粒度上下一個定義,并且告訴我們它的產(chǎn)出是“Working software”
從最內(nèi)部的環(huán)開始看,什么是持續(xù)要做的呢?測試驅(qū)動開發(fā)(TDD),編譯構(gòu)建,集成,代碼重構(gòu),協(xié)作開發(fā),這些事情仿佛是心跳一樣,不僅不能停還要保持一定的節(jié)奏。《Continuous Integration》一文對此做了很好的注解?!禖ontinuous Integration》源文檔 http://martinfowler.com/articles/continuousIntegration.html
外一層要描述的就是敏捷開發(fā)每天要做的事情了:站立會議和驗收測試。站立式會議在團隊范圍內(nèi)實現(xiàn)信息共享,簡單,直接,有效。
較之每天的行為,一個粗粒度的概念就是迭代,我個人認為這里是最能體現(xiàn)敏捷精神的地方。我們先看一下迭代需要做的工作:檢查,回顧,制定迭代計劃。檢查是對已完成工作的質(zhì)量保證的手段,回顧是對之前項目進行中的得失進行反思,而制定計劃是在一個有更多參考參數(shù)的情況下安排下一步工作?,F(xiàn)在敏捷社區(qū)在提倡“精益”思想,即根據(jù)歷史數(shù)據(jù)動態(tài)的調(diào)整優(yōu)化。敏捷開發(fā)是一套活理論,不是一堆死方法,這一點我深信不疑。
發(fā)布處于迭代外層,可以看到這階段會制定發(fā)布計劃,梳理積壓未完成的事情,做出評估。
處于最外層的是策略層,這一層我們看到了目標、視角等等元素。雖然身處開發(fā)***線的我們往往感受不到這些東西的存在,但是這些方面如果沒有人考慮或者考慮錯了的影響遠大于一段糟糕的代碼。
圓圈兩側(cè)我們可以看到敏捷開發(fā)的倡導的價值觀和代表了其可量化的指標。
從傳統(tǒng)的或者習慣的開發(fā)模型遷移到敏捷會有種種困難,需要有形式和行為上的真正變化。如果拋開這種想法呢,換一個角度呢?不搞大變革,大動作,我們能否從敏捷開發(fā)中取經(jīng)來改善我們現(xiàn)有的情況呢?比如我們加快了構(gòu)建的效率,我們堅持做代碼檢查和站立會議,見縫插針對糟糕的代碼進行重構(gòu)… …實踐了這些之后或許我們還不是敏捷開發(fā),但是我們已經(jīng)擁有了“敏捷態(tài)度”。
總結(jié)
敏捷:不動搖,不懈怠,不折騰