1. 程式人生 > >談談我理解的敏捷開發--轉載

談談我理解的敏捷開發--轉載

運用 距離 更新 黑板 區域 安排 項目管理 alt pri

“敏捷開發” 幾乎成了互聯網家戶喻曉的一個熱門話題。每個人都在聊敏捷、Scrum、XP。

我對“敏捷”的認識還算是在一個正在探索的階段。網上有非常多的資料,五花八門,對於初學者來說無形之中會設了很多的坎。剛好借此機會寫個文章幫助自己進行知識的梳理和總結,另外一方面也希望對剛接觸的人有所幫助。

敏捷開發” 知多少?

敏捷開發(Agile Development)是一種以人為核心、叠代、循序漸進的開發方式。

它並不是一門技術,而是一種開發方式,也就是一種軟件開發的流程。它會指導我們用規定的環節去一步一步完成項目的開發。因為它采用的是叠代式開發,所以這種開發方式的主要驅動核心是人。

那為什麽說人才是主要的驅動核心了?我們學過瀑布開發模型,它是以文檔作為驅動,開發人員都是根據產品部門提供的需求文檔進行開發的,一切的核心是文檔,所以說文檔是這個模型中的一個核心。而敏捷開發的意義在於它只關註文檔中的重要點,或者盡可能的去簡化文檔,敏捷開發其實更註重的是人與人之間的溝通、交流。所以它強調以人為核心。

叠代:叠代是指把一個復雜且開發周期很長的開發任務,分解為很多小周期可完成的任務,這樣的一個周期就是一次叠代的過程;同時每一次叠代都可以生產或開發出一個可以交付的軟件產品。

Scrum 和 XP

Scrum: 英文意思是橄欖球運動的一個專業術語,表示“爭球”的動作;把一個開發流程的名字取名為Scrum,我想你一定能想象出你的開發團隊在開發一個項目時,
大家像打橄欖球一樣迅速、富有戰鬥激情、人人你爭我搶地完成它,你一定會感到非常興奮的。而Scrum就是這樣的一個開發流程,運用該流程,你就能看到你團隊高效的工作。
XP:極限編程(Extreme Programming)。可參考:http://blog.csdn.net/fw0124/article/details/48713959

文章開頭談敏捷的時候更註重的是概念性的,並沒有談到實際敏捷開發的實際應用情景。這裏開始之所以聊 Scrum 和 XP,因為這就是敏捷開發的具體方式了。在實際開發中,你可以采用 Scrum 方式也可以采用 XP 方式。

Scrum 和 XP 的區別是,Scrum 偏重於過程,XP 則偏重於實踐,但是實際中,兩者是結合一起應用的。

Scrum開發流程中你會經常聽到三個項目角色,比如 PO \ SM \ ST ,對於一個剛接觸敏捷開發的初學者來說,聽到這種簡稱內心還是極為崩潰的,我當初也是感同身受。這裏順便簡單的補充下關於這三個角色的一個簡介

產品負責人(Product Owner):主要負責確定產品的功能和達到要求的標準,指定軟件的發布日期和交付的內容,同時有權力接受或拒絕開發團隊的工作成果。
流程管理員(Scrum Master):主要負責整個Scrum流程在項目中的順利實施和進行,以及清除擋在客戶和開發工作之間的溝通障礙,使得客戶可以直接驅動開發。
開發團隊(Scrum Team):主要負責軟件產品在Scrum規定流程下進行開發工作,人數控制在5~10人左右,每個成員可能負責不同的技術方面,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力;成員可以采用任何工作方式,只要能達到Sprint的目標。

Scrum 的流程圖:(以下圖片來自網絡)

技術分享圖片

讀到這裏,我想你對敏捷開發應該有了一個初步的認識了。接著我們繼續聊下敏捷開發的具體開發流程。

在此之前,我們先來談個在敏捷開發中最長聽到的單詞 “Sprint” 。談到這個詞,以往我第一次聽到的時候私下去查了,各種各樣的解釋,真是十臉懵逼。借著這次機會也給大家簡單的解釋下。

請看以下小段落:

Sprint:是短距離賽跑的意思,這裏面指的是一次叠代,而一次叠代的周期是1個月時間(即4個星期),也就是我們要把一次叠代的開發內容以最快的速度完成它,這個過程我們稱它為 Sprint

那麽最後我們來細聊下如何進行 Scrum 的開發。

1.首先我們需要確認一個 PB ( Product Backlog , 即按優先順序排列的一個產品需求列表) ,這是由 PO(Product Owner) 負責的

2.ST(Scrum Team) 會根據 PB 列表,進行工作量的預估和安排

3.有了 PB 列表,我們需要通過 Sprint Planning Meeting( Sprint 計劃會議)來從中挑選出一個 Story 作為本次叠代完成的目標,這個目標的時間周期是1~4個星期,然後把這個Story進行細化,形成一個Sprint Backlog

4.Sprint Backlog 是由 ST 去完成的,每個成員根據Sprint Backlog再細化成更小的任務(細到每個任務的工作量在2天內能完成)

5.在Scrum Team完成計劃會議上選出的Sprint Backlog過程中,需要進行 Daily Scrum Meeting(每日站立會議),每次會議控制在15分鐘左右,每個人都必須發言,並且要向所有成員當面匯報你昨天完成了什麽,並且向所有成員承諾你今天要完成什麽,同時遇到不能解決的問題也可以提出,每個人回答完成後,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖)

6.做到每日集成,也就是每天都要有一個可以成功編譯、並且可以演示的版本;很多人可能還沒有用過自動化的每日集成,其實TFS就有這個功能,它可以支持每次有成員進行簽入操作的時候,在服務器上自動獲取最新版本,然後在服務器中編譯,如果通過則馬上再執行單元測試代碼,如果也全部通過,則將該版本發布,這時一次正式的簽入操作才保存到TFS中,中間有任何失敗,都會用郵件通知項目管理人員

7.當一個Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,這時,我們要進行 Srpint Review Meeting(演示會議),也稱為評審會議,產品負責人和客戶都要參加(最好本公司老板也參加),每一個Scrum Team的成員都要向他們演示自己完成的軟件產品(這個會議非常重要,一定不能取消)

8.最後就是 Sprint Retrospective Meeting(回顧會議),也稱為總結會議,以輪流發言方式進行,每個人都要發言,總結並討論改進的地方,放入下一輪Sprint的產品需求中

下面是運用 Scrum 開發流程中的一些場景圖:

每日站立會議,參會人員可以隨意姿勢站立,任務看板要保證讓每個人看到,當每個人發言完後,要走到任務版前更新自己的燃盡圖

技術分享圖片

(任務看版包含 未完成、正在做、已完成 的工作狀態,假設你今天把一個未完成的工作已經完成,那麽你要把小卡片從未完成區域貼到已完成區域。每個人的工作進度和完成情況都是公開的,如果有一個人的工作任務在某一個位置放了好幾天,大家都能發現他的工作進度出現了什麽問題(成員人數最好是5~7個,這樣每人可以使用一種專用顏色的標簽紙,一眼就可以從任務版看出誰的工作進度快,誰的工作進度慢)

技術分享圖片

(計劃紙牌,它的作用是防止項目在開發過程中,被某些人所領導。

怎麽用的呢?比如A程序員開發一個功能,需要5個小時,B程序員認為只需要半小時,那他們各自取相應的牌,藏在手中,最後攤牌,如果時間差距很大,那麽A和B就可以討論A為什麽要5個小時)

技術分享圖片

談談我理解的敏捷開發--轉載