敏捷開(kāi)發(fā)入門(mén)教程

敏捷開(kāi)發(fā)(agile development)是非常流行的軟件開(kāi)發(fā)方法柒莉。據(jù)統(tǒng)計(jì)闻坚,2018年90%的軟件開(kāi)發(fā)采用敏捷開(kāi)發(fā)。

但是兢孝,到底什么是敏捷開(kāi)發(fā)窿凤,能說(shuō)清的人卻不多。本文嘗試用簡(jiǎn)潔易懂的語(yǔ)言跨蟹,解釋敏捷開(kāi)發(fā)雳殊。

一、迭代開(kāi)發(fā)

敏捷開(kāi)發(fā)的核心是迭代開(kāi)發(fā)(iterative development)窗轩。敏捷一定是采用迭代開(kāi)發(fā)的方式夯秃。

那么什么是"迭代開(kāi)發(fā)"呢?迭代的英文是 iterative痢艺,直譯為"重復(fù)"仓洼,迭代開(kāi)發(fā)其實(shí)就是"重復(fù)開(kāi)發(fā)"。

對(duì)于大型軟件項(xiàng)目堤舒,傳統(tǒng)的開(kāi)發(fā)方式是采用一個(gè)大周期(比如一年)進(jìn)行開(kāi)發(fā)色建,整個(gè)過(guò)程就是一次"大開(kāi)發(fā)";迭代開(kāi)發(fā)的方式則不一樣植酥,它將開(kāi)發(fā)過(guò)程拆分成多個(gè)小周期镀岛,即一次"大開(kāi)發(fā)"變成多次"小開(kāi)發(fā)"弦牡,每次小開(kāi)發(fā)都是同樣的流程,所以看上去就好像重復(fù)在做同樣的步驟漂羊。

舉例來(lái)說(shuō)驾锰,SpaceX 公司想造一個(gè)大推力火箭,將人類(lèi)送到火星走越。但是椭豫,它不是一開(kāi)始就造大火箭,而是先造一個(gè)最簡(jiǎn)陋的小火箭 Falcon 1旨指。結(jié)果赏酥,第一次發(fā)射就爆炸了,直到第四次發(fā)射谆构,才成功進(jìn)入軌道裸扶。然后,開(kāi)發(fā)了中型火箭 Falcon 9搬素,九年中發(fā)射了70次呵晨。最后,才開(kāi)發(fā) Falcon 重型火箭熬尺。如果 SpaceX 不采用迭代開(kāi)發(fā)摸屠,它可能直到現(xiàn)在還無(wú)法上天。

迭代開(kāi)發(fā)將一個(gè)大任務(wù)粱哼,分解成多次連續(xù)的開(kāi)發(fā)季二,本質(zhì)就是逐步改進(jìn)。開(kāi)發(fā)者先快速發(fā)布一個(gè)有效但不完美的最簡(jiǎn)版本揭措,然后不斷迭代胯舷。每一次迭代都包含規(guī)劃、設(shè)計(jì)蜂筹、編碼需纳、測(cè)試芦倒、評(píng)估五個(gè)步驟艺挪,不斷改進(jìn)產(chǎn)品,添加新功能兵扬。通過(guò)頻繁的發(fā)布麻裳,以及跟蹤對(duì)前一次迭代的反饋,最終接近較完善的產(chǎn)品形態(tài)器钟。

二津坑、增量開(kāi)發(fā)

迭代開(kāi)發(fā)只是要求將開(kāi)發(fā)分成多個(gè)迭代,并沒(méi)有回答一個(gè)重要的問(wèn)題:怎么劃分迭代傲霸,哪個(gè)任務(wù)在這個(gè)迭代疆瑰,哪個(gè)任務(wù)在下個(gè)迭代眉反?這時(shí),一般采用"增量開(kāi)發(fā)"(incremental development)劃分迭代穆役。

所謂"增量開(kāi)發(fā)"寸五,指的是軟件的每個(gè)版本,都會(huì)新增一個(gè)用戶(hù)可以感知的完整功能耿币。也就是說(shuō)梳杏,按照新增功能來(lái)劃分迭代。

舉例來(lái)說(shuō)淹接,房產(chǎn)公司開(kāi)發(fā)一個(gè)10棟樓的小區(qū)十性。如果采用增量開(kāi)發(fā)的模式,該公司第一個(gè)迭代就是交付一號(hào)樓塑悼,第二個(gè)迭代交付二號(hào)樓......每個(gè)迭代都是完成一棟完整的樓劲适。而不是第一個(gè)迭代挖好10棟樓的地基,第二個(gè)迭代建好每棟樓的骨架厢蒜,第三個(gè)迭代架設(shè)屋頂......

增量開(kāi)發(fā)加上迭代開(kāi)發(fā)减响,才算真正的敏捷開(kāi)發(fā)。

三郭怪、敏捷開(kāi)發(fā)的好處

3.1 早期交付

敏捷開(kāi)發(fā)的第一個(gè)好處支示,就是早期交付,從而大大降低成本鄙才。

還是以上一節(jié)的房產(chǎn)公司為例颂鸿,如果按照傳統(tǒng)的"瀑布開(kāi)發(fā)模式",先挖10棟樓的地基攒庵、再蓋骨架嘴纺、然后架設(shè)屋頂,每個(gè)階段都等到前一個(gè)階段完成后開(kāi)始浓冒,可能需要兩年才能一次性交付10棟樓栽渴。也就是說(shuō),如果不考慮預(yù)售稳懒,該項(xiàng)目必須等到兩年后才能回款闲擦。

敏捷開(kāi)發(fā)是六個(gè)月后交付一號(hào)樓,后面每?jī)蓚€(gè)月交付一棟樓场梆。因此墅冷,半年就能回款10%,后面每個(gè)月都會(huì)有現(xiàn)金流或油,資金壓力就大大減輕了寞忿。

3.2 降低風(fēng)險(xiǎn)

敏捷開(kāi)發(fā)的第二個(gè)好處是,及時(shí)了解市場(chǎng)需求顶岸,降低產(chǎn)品不適用的風(fēng)險(xiǎn)腔彰。

請(qǐng)想一想叫编,哪一種情況損失比較小:10棟樓都造好以后霹抛,才發(fā)現(xiàn)賣(mài)不出去宵溅,還是造好第一棟樓,就發(fā)現(xiàn)賣(mài)不出去上炎,從而改進(jìn)或停建后面9棟樓恃逻?

對(duì)于軟件項(xiàng)目來(lái)說(shuō),先有一個(gè)原型產(chǎn)品藕施,了解市場(chǎng)的接受程度寇损,往往是項(xiàng)目成功的關(guān)鍵。有一本書(shū)叫做《夢(mèng)斷代碼》裳食,副標(biāo)題就是"20+個(gè)程序員矛市,三年時(shí)間,4732個(gè)bug诲祸,100+萬(wàn)美元浊吏,最后失敗的故事",這就是沒(méi)有采用敏捷開(kāi)發(fā)的結(jié)果救氯。相反的找田,Instagram 最初是一個(gè)地理位置打卡 App,后來(lái)發(fā)現(xiàn)用戶(hù)不怎么在乎地理位置着憨,更喜歡上傳照片墩衙,就改做照片上傳軟件,結(jié)果成了獨(dú)角獸甲抖。

由于敏捷開(kāi)發(fā)可以不斷試錯(cuò)漆改,找出對(duì)業(yè)務(wù)最重要的功能,然后通過(guò)迭代准谚,調(diào)整軟件方向挫剑。相比傳統(tǒng)方式,大大增加了產(chǎn)品成功的可能性柱衔。如果市場(chǎng)需求不確定樊破,或者你對(duì)該領(lǐng)域不熟悉,那么敏捷開(kāi)發(fā)幾乎是唯一可行的應(yīng)對(duì)方式秀存。

四捶码、如何進(jìn)行每一次迭代

雖然敏捷開(kāi)發(fā)將軟件開(kāi)發(fā)分成多個(gè)迭代,但是也要求或链,每次迭代都是一個(gè)完整的軟件開(kāi)發(fā)周期,必須按照軟件工程的方法論档押,進(jìn)行正規(guī)的流程管理澳盐。

具體來(lái)說(shuō)祈纯,每次迭代都必須依次完成以下五個(gè)步驟。

需求分析(requirements analysis)

設(shè)計(jì)(design)

編碼(coding)

測(cè)試(testing)

部署和評(píng)估(deployment / evaluation)

每個(gè)迭代大約持續(xù)2~6周叼耙。

五腕窥、敏捷開(kāi)發(fā)的價(jià)值觀

《敏捷軟件開(kāi)發(fā)宣言》里面提到四個(gè)價(jià)值觀。

程序員的主觀能動(dòng)性筛婉,以及程序員之間的互動(dòng)簇爆,優(yōu)于既定流程和工具。

軟件能夠運(yùn)行爽撒,優(yōu)于詳盡的文檔入蛆。

跟客戶(hù)的密切協(xié)作,優(yōu)于合同和談判硕勿。

能夠響應(yīng)變化哨毁,優(yōu)于遵循計(jì)劃。

六源武、十二條原則

該宣言還提出十二條敏捷開(kāi)發(fā)的原則扼褪。

通過(guò)早期和持續(xù)交付有價(jià)值的軟件,實(shí)現(xiàn)客戶(hù)滿(mǎn)意度粱栖。

歡迎不斷變化的需求话浇,即使是在項(xiàng)目開(kāi)發(fā)的后期。要善于利用需求變更闹究,幫助客戶(hù)獲得競(jìng)爭(zhēng)優(yōu)勢(shì)凳枝。

不斷交付可用的軟件,周期通常是幾周跋核,越短越好岖瑰。

項(xiàng)目過(guò)程中,業(yè)務(wù)人員與開(kāi)發(fā)人員必須在一起工作砂代。

項(xiàng)目必須圍繞那些有內(nèi)在動(dòng)力的個(gè)人而建立蹋订,他們應(yīng)該受到信任。

面對(duì)面交談是最好的溝通方式刻伊。

可用性是衡量進(jìn)度的主要指標(biāo)露戒。

提倡可持續(xù)的開(kāi)發(fā),保持穩(wěn)定的進(jìn)展速度捶箱。

不斷關(guān)注技術(shù)是否優(yōu)秀智什,設(shè)計(jì)是否良好。

簡(jiǎn)單性至關(guān)重要丁屎,盡最大可能減少不必要的工作荠锭。

最好的架構(gòu)、要求和設(shè)計(jì)晨川,來(lái)自團(tuán)隊(duì)內(nèi)部自發(fā)的認(rèn)識(shí)证九。

團(tuán)隊(duì)要定期反思如何更有效删豺,并相應(yīng)地進(jìn)行調(diào)整。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愧怜,一起剝皮案震驚了整個(gè)濱河市呀页,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拥坛,老刑警劉巖蓬蝶,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異猜惋,居然都是意外死亡丸氛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)惨奕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雪位,“玉大人,你說(shuō)我怎么就攤上這事梨撞”⑾矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵卧波,是天一觀的道長(zhǎng)时肿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)港粱,這世上最難降的妖魔是什么螃成? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮查坪,結(jié)果婚禮上寸宏,老公的妹妹穿的比我還像新娘。我一直安慰自己偿曙,他們只是感情好氮凝,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著望忆,像睡著了一般罩阵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上启摄,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天稿壁,我揣著相機(jī)與錄音,去河邊找鬼歉备。 笑死傅是,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播落午,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谎懦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肚豺!你這毒婦竟也來(lái)了溃斋?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吸申,失蹤者是張志新(化名)和其女友劉穎梗劫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體截碴,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梳侨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了日丹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片走哺。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哲虾,靈堂內(nèi)的尸體忽然破棺而出丙躏,到底是詐尸還是另有隱情,我是刑警寧澤束凑,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布晒旅,位于F島的核電站,受9級(jí)特大地震影響汪诉,放射性物質(zhì)發(fā)生泄漏废恋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一扒寄、第九天 我趴在偏房一處隱蔽的房頂上張望鱼鼓。 院中可真熱鬧,春花似錦该编、人聲如沸迄本。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)岸梨。三九已至,卻和暖如春稠氮,著一層夾襖步出監(jiān)牢的瞬間曹阔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工隔披, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赃份,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抓韩,于是被迫代替她去往敵國(guó)和親纠永。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容