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