敏捷開發(fā):5種主流開發(fā)方法介紹

3 評論 61280 瀏覽 142 收藏 18 分鐘

文章較為系統(tǒng)地分享了關(guān)于敏捷開發(fā)的5種方法,希望能夠給你帶來一些幫助。

一、極限編程

極限編程(ExtremeProgramming,簡稱XP)是由KentBeck在1996年提出的。極限編程是一個輕量級的、靈巧的軟件開發(fā)方法;同時它也是一個非常嚴謹和周密的方法。

XP是一種近螺旋式的開發(fā)方法,它將復(fù)雜的開發(fā)過程分解為一個個相對比較簡單的小周期;通過積極的交流、反饋以及其它一系列的方法,開發(fā)人員和客戶可以非常清楚開發(fā)進度、變化、待解決的問題和潛在的困難等,并根據(jù)實際情況及時地調(diào)整開發(fā)過程。

1.1、XP的核心價值

XP的核心價值觀是溝通(Communication)、簡單(Simplicity)、反饋(Feedback)、勇氣(Courage)、謙遜(Modesty)。  XP用“溝通、簡單、反饋、勇氣和謙遜”來減輕開發(fā)壓力和包袱;無論是術(shù)語命名、專著敘述內(nèi)容和方式、過程要求,都可以從中感受到輕松愉快和主動奮發(fā)的態(tài)度和氣氛。這是一種幫助理解和更容易激發(fā)人的潛力的手段。XP用自己的實踐,在一定范圍內(nèi)成功地打破了軟件工程“必須重量”才能成功的傳統(tǒng)觀念。

XP精神可以啟發(fā)我們?nèi)绾螌W(xué)習(xí)和對待快速變化、多樣的開發(fā)技術(shù)。成功學(xué)習(xí)XP的關(guān)鍵,是用“溝通、簡單、反饋、勇氣和謙遜”的態(tài)度來對待XP;輕松愉快地來感受XP的實踐思想;自己認真實踐后,通過對真實反饋的分析,來決定XP對自己的價值;有勇氣接受它,或改進它。

1.2、為什么稱為“Extreme”(極限)

“Extreme”(極限)是指,對比傳統(tǒng)的項目開發(fā)方式,XP強調(diào)把它列出的每個方法和思想做到極限、做到最好;其它所不提倡的,XP則一概忽略(如開發(fā)前期的整體設(shè)計等)。一個嚴格實施XP的項目,其開發(fā)過程應(yīng)該是平穩(wěn)的、高效的和快速的,能夠做到一周40小時工作制而不拖延項目進度。

1.3、XP核心實踐

基于敏捷的核心思想和價值目標,XP要求項目團隊遵循13個核心實踐

  • 團隊協(xié)作:通過客戶、開發(fā)團隊、項目經(jīng)理三方共同參加的會議來確定開發(fā)計劃。
  • 規(guī)劃策略: 計劃是持續(xù)的、循序漸進的。每2周,開發(fā)人員就為下2周估算候選特性的成本,而客戶則根據(jù)成本和商務(wù)價值來選擇要實現(xiàn)的特性。
  • 結(jié)對編程:系統(tǒng)的每一行代碼都是兩個人用一個鍵盤完成的。
  • 測試驅(qū)動開發(fā):先寫測試,后寫代碼。
  • 重構(gòu):不斷優(yōu)化系統(tǒng)設(shè)計,使之保持簡單。
  • 簡單設(shè)計:為明確的功能進行最優(yōu)的設(shè)計,不考慮未來可能需要的功能。
  • 代碼集體所有權(quán):開發(fā)隊伍中任何人可以修改任何其他人的代碼,代碼不屬于某個個人。
  • 持續(xù)集成:至少每天將整個系統(tǒng)集成一次,保持一個能運轉(zhuǎn)的系統(tǒng)。
  • 客戶測試:客戶自己也是軟件開發(fā)隊伍的重要一份子。
  • 小版本發(fā)布:盡快發(fā)布,盡早發(fā)布。
  • 每周40小時工作制:保證休息,保持體力。
  • 編碼標準:必須有統(tǒng)一的編碼規(guī)范,確保代碼的可讀性。
  • 系統(tǒng)隱喻:將整個系統(tǒng)聯(lián)系在一起的全局視圖;它是系統(tǒng)的未來影像,是它使得所有單獨模塊的位置和外觀變得明顯直觀。如果模塊的外觀與整個隱喻不符,那么你就知道該模塊是錯誤的。

二、 水晶方法

水晶(Crystal)方法論由Alistair Cockburn在20世紀90年代末提出。他把開發(fā)看做是一系列的協(xié)作游戲,而寫文檔的目標是幫助團隊在下一個游戲中取得勝利。水晶方法的工作產(chǎn)品包括用例、風(fēng)險列表、迭代計劃、核心領(lǐng)域模型,以及記錄了一些選擇結(jié)果的設(shè)計注釋。水晶方法也為這些產(chǎn)品定義了相應(yīng)的角色。值得注意的是這些文檔沒有模板,描述也不太規(guī)范,但目標清晰,能夠滿足下次游戲開始的條件。

對于水晶方法論,根據(jù)方法論的輕重可以分為透明水晶和橙色水晶等。透明水晶一般適用于輕量級的團隊。不管是哪種水晶,都會對團隊的角色、團隊的工作項和產(chǎn)出、核心實踐、支持過程等進行定義。

三、動態(tài)系統(tǒng)開發(fā)方法

動態(tài)系統(tǒng)開發(fā)方法(DSDM)倡導(dǎo)以業(yè)務(wù)為核心,快速而有效地進行系統(tǒng)開發(fā)??梢园袲SDM看成一種控制框架,其重點在于快速交付并補充如何應(yīng)用這些控制的指導(dǎo)原則。

DSDM是一整套的方法論,不僅僅包括軟件開發(fā)內(nèi)容和實踐,也包括了組織結(jié)構(gòu)、項目管理、估算、工具環(huán)境、測試、配置管理、風(fēng)險管理、重用等各個方面的內(nèi)容。

3.1、DSDM的基本觀點

DSDM認為任何事情都不可能一次性圓滿完成,應(yīng)該用20%的時間完成80%的有用功能,以適合商業(yè)目的為準。實施的思路是,在時間進度和可用資源預(yù)先固定的情況下,力爭最大化地滿足業(yè)務(wù)需求(傳統(tǒng)方法一般是需求固定,時間和資源可變),交付所需要的系統(tǒng)。對于交付的系統(tǒng),必須達到足夠的穩(wěn)定程度以在實際環(huán)境中運行;對于業(yè)務(wù)方面的某些緊急需求,也必須能夠在短時間內(nèi)得到滿足,并在后續(xù)迭代階段中對功能進行完善。

3.2、DSDM的基本原則

  • 活動用戶必須參與。
  • 必須授權(quán)DSDM團隊進行決策。
  • 注重頻繁交付產(chǎn)品。
  • 判斷產(chǎn)品是否可接受的一個基本標準是符合業(yè)務(wù)目的。
  • 對準確的業(yè)務(wù)解決方案需要采用循環(huán)和增量開發(fā)。
  • 開發(fā)期間的所有更改都是可逆的。
  • 基本要求是高層次的并區(qū)分優(yōu)先級(以在低優(yōu)先級的項目上獲得一定的靈活性)。
  • 在整個生命周期集成測試。
  • 在所有參與者之間采用協(xié)作和合作方法。

四、精益開發(fā)

精益(Lean)管理的思想起源于豐田公司,旨在創(chuàng)造價值的目標下,通過改良流程不斷地消除浪費。這種方法現(xiàn)已被廣泛用于生產(chǎn)制造管理,對于IT系統(tǒng)建設(shè),精益開發(fā)的常用工具模型是價值流模型。

4.1、精益開發(fā)的基本原則

  • 杜絕浪費:將所有的時間花在能夠增加客戶價值的事情上。
  • 推遲決策:根據(jù)實際情況保持可選方案的開放性,但時間不能過長。
  • 加強學(xué)習(xí):使用科學(xué)的學(xué)習(xí)方法。
  • 快速交付:當客戶索取價值時應(yīng)立即交付價值。
  • 打造精品:使用恰當?shù)姆椒ù_保質(zhì)量。
  • 授權(quán)團隊:讓創(chuàng)造增值的員工充分發(fā)揮自己的潛力。
  • 優(yōu)化整體:防止以損害整體為代價而優(yōu)化部分的傾向。

五、Scrum

Scrum 是一個用于開發(fā)和維護復(fù)雜產(chǎn)品的框架 ,是一個增量的、迭代的開發(fā)過程。在這個框架中,整個開發(fā)過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的建議長度是2到4周。

在Scrum中,使用產(chǎn)品Backlog來管理產(chǎn)品的需求,產(chǎn)品backlog是一個按照商業(yè)價值排序的需求列表,列表條目的體現(xiàn)形式通常為用戶故事。Scrum團隊總是先開發(fā)對客戶具有較高價值的需求。在Sprint中,Scrum團隊從產(chǎn)品Backlog中挑選最高優(yōu)先級的需求進行開發(fā)。

挑選的需求在Sprint計劃會議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表,我們稱它為Sprint backlog。在每個迭代結(jié)束時,Scrum團隊將遞交潛在可交付的產(chǎn)品增量。 Scrum起源于軟件開發(fā)項目,但它適用于任何復(fù)雜的或是創(chuàng)新性的項目。

5.1、Scrum 過程框架

Scrum以經(jīng)驗性過程控制理論(經(jīng)驗主義)做為理論基礎(chǔ)的過程。經(jīng)驗主義主張知識源于經(jīng)驗, 以及基于已知的東西做決定。Scrum 采用迭代、增量的方法來優(yōu)化可預(yù)見性并控制風(fēng)險。Scrum過程框架的基石包括如下三個方面:

第一:透明性(Transparency)。透明度是指,在軟件開發(fā)過程的各個環(huán)節(jié)保持高度的可見性,影響交付成果的各個方面對于參與交付的所有人、管理生產(chǎn)結(jié)果的人保持透明。管理生產(chǎn)成果的人不僅要能夠看到過程的這些方面,而且必須理解他們看到的內(nèi)容。也就是說,當某個人在檢驗一個過程,并確信某一個任務(wù)已經(jīng)完成時,這個完成必須等同于他們對完成的定義。

第二:檢驗(Inspection)。開發(fā)過程中的各方面必須做到足夠頻繁地檢驗,確保能夠及時發(fā)現(xiàn)過程中的重大偏差。在確定檢驗頻率時,需要考慮到檢驗會引起所有過程發(fā)生變化。當規(guī)定的檢驗頻率超出了過程檢驗所能容許的程度,那么就會出現(xiàn)問題。幸運的是,軟件開發(fā)并不會出現(xiàn)這種情況。另一個因素就是檢驗工作成果人員的技能水平和積極性。

第三:適應(yīng)(Adaptation)。如果檢驗人員檢驗的時候發(fā)現(xiàn)過程中的一個或多個方面不滿足驗收標準,并且最終產(chǎn)品是不合格的,那么便需要對過程或是材料進行調(diào)整。調(diào)整工作必須盡快實施,以減少進一步的偏差。

Scrum中通過三個活動進行檢驗和適應(yīng):每日例會檢驗Sprint目標的進展,做出調(diào)整,從而優(yōu)化次日的工作價值;Sprint評審和計劃會議檢驗發(fā)布目標的進展,做出調(diào)整,從而優(yōu)化下一個Sprint的工作價值;Sprint回顧會議是用來回顧已經(jīng)完成的Sprint,并且確定做出什么樣的改善可以使接下來的Sprint更加高效、更加令人滿意,并且工作更快樂。

5.2、Scrum的四大支柱

第一、迭代開發(fā)。在Scrum的開發(fā)模式下,我們將開發(fā)周期分成多個1-4周的迭代,每個迭代都交付一些增量的可工作的功能。迭代的長度是固定的,如果我們選擇了1周的迭代,那么保持它的長度不要發(fā)生變化,在整個產(chǎn)品開發(fā)周期內(nèi)每個迭代都是1周的長度。這里需要強調(diào)的是在每個迭代必須產(chǎn)出可工作的增量功能,而不是第一個迭代做需求、第二個迭代做設(shè)計、第三個迭代做代碼。

第二、增量交付。增量是一個 Sprint 及以前所有 Sprint 中完成的所有產(chǎn)品代辦事項列表條目的總和。 在 Sprint 的結(jié)尾,新的增量必須“完成”,這意味著它必須可用并且達到了 Scrum 團隊 “完成”的定義的標準。無論產(chǎn)品負責(zé)人是否決定真正發(fā)布它,增量必須可用。增量是從用戶的角度來描述的,它意味著從用戶的角度可工作。

第三、自組織團隊。Scrum團隊是一個自組織的團隊,傳統(tǒng)的命令與控制式的團隊只有執(zhí)行任務(wù)的權(quán)利,而自組織團隊有權(quán)進行設(shè)計、計劃和執(zhí)行任務(wù),自組織團隊還需要自己監(jiān)督和管理他們的工程過程和進度,自組織團隊自己決定團隊內(nèi)如何開展工作,決定誰來做什么,即分工協(xié)作的方式。

第四、高優(yōu)先級的需求驅(qū)動。在Scrum中,我們使用Product Backlog來管理需求,Product Backlog是一個需求的清單,Product Backlog中的需求是漸進明細的,Backlog當中的條目必須按照商業(yè)價值的高低排序。Scrum團隊在開發(fā)需求的時候,從Backlog最上層的高優(yōu)先級的需求開始開發(fā)。在Scrum中,只要有足夠1-2個Sprint開發(fā)的細化了的高優(yōu)先級的需求,我們就可以啟動Sprint了,而不必等到所有的需求都細化之后。我們可以在開發(fā)期間通過Backlog的梳理來逐步的細化需求。

5.3、Scrum團隊介紹

在Scrum的工作方式下,總共只有三個角色, 這三個角色分別是產(chǎn)品負責(zé)人(PO),Scrum Master和開發(fā)團隊。

我們通??梢砸詣濤堉鄣膱F隊角色來類比Scrum的角色,劃龍舟通常有舵手、鼓手、劃槳團隊三個角色。Scrum中的PO就是舵手的角色,他對產(chǎn)品的方向負責(zé),對產(chǎn)品的Why和What負責(zé),對產(chǎn)品的愿景,產(chǎn)品包括哪些主要的特性負責(zé)。Scrum中的Scrum Master鼓手的角色,他幫助團隊保持高昂的士氣,并進行良好的協(xié)作,他是一個Scrum的專家,團隊的教練,團隊的服務(wù)式領(lǐng)導(dǎo)。Scrum中的團隊,對應(yīng)到龍舟賽的劃槳團隊,團隊必須協(xié)調(diào)一致,作為一個整體前進,在這樣的環(huán)境下單打獨斗,各自為政沒有任何勝算。

Scrum的開發(fā)團隊對實現(xiàn)Sprint目標需要做的所有事情負責(zé),包括技術(shù)方案和決策,團隊分工(誰做什么),執(zhí)行Sprint開發(fā)任務(wù)等,而且作為自組織的團隊,他們也對他們的工作進度的跟蹤和管理負責(zé)。Scrum開發(fā)團隊的主要職責(zé)包括如下五個方面:

  • 執(zhí)行Sprint
  • 每日檢視和調(diào)整,每個開發(fā)團隊成員都應(yīng)該參與每日站會,一起檢驗Sprint目標的進展情況,跟進當天的工作情況調(diào)整計劃。
  • 梳理產(chǎn)品列表,每個Sprint都需要花一些時間來準備下一個Sprint,主要用來梳理產(chǎn)品列表,包括PBI的創(chuàng)建和細化、估算和排列優(yōu)先級順序。
  • sprint規(guī)劃,在Sprint計劃會議(Sprint Planning Meeting)上,在ScrumMaster的引導(dǎo)下,開發(fā)團隊和PO合作,為下一個Sprint建立目標。
  • 檢視和調(diào)整產(chǎn)品與過程,每個Sprint結(jié)束后,開發(fā)團隊都要參加兩個檢視和調(diào)整的活動,即Sprint評審會議(Sprint Review Meeting)和 Sprint回顧會議(Sprint Retrospective Meeting)。

5.4、什么是用戶故事

用戶故事是從用戶的角度來描述用戶渴望得到的功能。一個好的用戶故事包括三個要素:

  1. 角色:誰要使用這個功能。
  2. 活動:需要完成什么樣的功能。
  3. 商業(yè)價值:為什么需要這個功能,這個功能帶來什么樣的價值。

用戶故事通常按照如下的格式來表達:作為一個<角色>, 我想要<活動>, 以便于<商業(yè)價值>

 

本文由 @PMO雜談 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Pixabay,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 我們公司有個偉大的帶頭人簡稱就是XP,??

    回復(fù)
    1. ??

      回復(fù)