敏捷開(kāi)發(fā)流程之Scrum:3個(gè)角色、5個(gè)會(huì)議、12原則
一、Scrum的定義和目的
Scrum是一個(gè)用于開(kāi)發(fā)和維護(hù)復(fù)雜產(chǎn)品的框架,是一個(gè)增量的、迭代的開(kāi)發(fā)過(guò)程,目的是讓開(kāi)發(fā)人員像打橄欖球一樣迅猛并充滿激情,通過(guò)團(tuán)隊(duì)合作,提高工作效率。通過(guò)團(tuán)隊(duì)間的有效交互,為企業(yè)創(chuàng)造價(jià)值。
二、敏捷宣言
其實(shí),在發(fā)表《敏捷宣言》之前,很多的敏捷實(shí)踐都已經(jīng)存在且使用了,比如:Scrum、XP、KanBan等。之所以發(fā)表《敏捷宣言》,是因?yàn)檫@些實(shí)踐都是在單打獨(dú)斗地推進(jìn)敏捷開(kāi)發(fā),而不是以一個(gè)聯(lián)合體的形式,且沒(méi)有一個(gè)統(tǒng)一的指導(dǎo)方針。所以17位敏捷聯(lián)合創(chuàng)始人決定發(fā)表《敏捷宣言》,共同在全世界推進(jìn)敏捷開(kāi)發(fā)運(yùn)動(dòng)。下面是敏捷宣言的4句話:

三、Scrum中的人員角色
Scrum中的人員分為3個(gè)角色:產(chǎn)品所有者(Product Owner), Scrum Master,開(kāi)發(fā)團(tuán)隊(duì)(Team)。
產(chǎn)品所有者:定義所有產(chǎn)品功能,決定產(chǎn)品發(fā)布的內(nèi)容以及日期,對(duì)產(chǎn)品的投入產(chǎn)出負(fù)責(zé),根據(jù)市場(chǎng)變化對(duì)需要開(kāi)發(fā)的功能排列優(yōu)先順序,合理地調(diào)整產(chǎn)品功能和迭代順序,認(rèn)同或者拒絕迭代的交付。
ScrumMaster :ScrumMaster不是項(xiàng)目經(jīng)理,他沒(méi)有分配任務(wù)的權(quán)力,沒(méi)有考核的權(quán)力,沒(méi)有下命令的權(quán)力,他指導(dǎo)項(xiàng)目組的成員按照Scrum的原則、方法做事情,領(lǐng)導(dǎo)團(tuán)隊(duì)完成Scrum的實(shí)踐以及體現(xiàn)其價(jià)值,排除團(tuán)隊(duì)遇到的困難,確保團(tuán)隊(duì)勝任其工作,并保持高效的生產(chǎn)率,使得團(tuán)隊(duì)緊密合作,使得團(tuán)隊(duì)個(gè)人具有多方面職能的工作能力,保護(hù)團(tuán)隊(duì)不受到外來(lái)無(wú)端影響。
開(kāi)發(fā)團(tuán)隊(duì):經(jīng)典團(tuán)隊(duì)擁有 5-9 人,團(tuán)隊(duì)成員包含程序員、測(cè)試員、用戶體驗(yàn)設(shè)計(jì)等等,團(tuán)隊(duì)關(guān)系在一個(gè)迭代中應(yīng)該是固定的,個(gè)人的職能可以在新迭代開(kāi)始時(shí)發(fā)生調(diào)整,團(tuán)隊(duì)自我組織和管理(自組織,自驅(qū)動(dòng)),團(tuán)隊(duì)成員都全職工作。
四、Scrum的開(kāi)發(fā)流程

不同于瀑布模型將開(kāi)發(fā)過(guò)程劃分為需求、設(shè)計(jì)、編碼、測(cè)試等階段,Scrum將整個(gè)開(kāi)發(fā)過(guò)程分為多次迭代(稱為Sprint,沖刺),一般為期2~4周,最常見(jiàn)的為2周。Scrum并非以一段時(shí)間集中完成一個(gè)過(guò)程,而是將所有過(guò)程中必須的每一部分集中在這段時(shí)間內(nèi)完成。需求、設(shè)計(jì)、編碼、測(cè)試、上線都必須在一個(gè)迭代中完成,每個(gè)迭代必須產(chǎn)生一個(gè)可以工作的軟件。
4.1 五個(gè)會(huì)議
Scrum 整個(gè)開(kāi)發(fā)過(guò)程分為五個(gè)會(huì)議:
1)待辦事項(xiàng)整理會(huì)議(Backlog Grooming Meeting)
迭代計(jì)劃會(huì)議開(kāi)始之前3天召開(kāi),Product Owner與Scrum Master必須參加,關(guān)鍵開(kāi)發(fā)者或架構(gòu)師需要參加;時(shí)間控制在30分鐘到1小時(shí)。
由Product Owner將一批希望團(tuán)隊(duì)在下次迭代時(shí)實(shí)現(xiàn)的用戶故事,按照實(shí)現(xiàn)順序描述給在場(chǎng)的團(tuán)隊(duì)成員,Scrum Master與在場(chǎng)成員分析用戶故事,明確指出團(tuán)隊(duì)認(rèn)為需求不明確的地方,Product Owner現(xiàn)場(chǎng)記錄,會(huì)后補(bǔ)全,Scrum Master與架構(gòu)師,還有在場(chǎng)成員分析用戶故事需要包含哪些技術(shù)任務(wù),Scrum Master先把子任務(wù)建立,方便迭代計(jì)劃會(huì)議的時(shí)候團(tuán)隊(duì)可以更準(zhǔn)確地預(yù)估任務(wù)故事點(diǎn)。
會(huì)議結(jié)束時(shí),Product Owner確保在迭代計(jì)劃會(huì)議開(kāi)始之前團(tuán)隊(duì)提出的問(wèn)題都能被解決,會(huì)議重點(diǎn)如果團(tuán)隊(duì)發(fā)現(xiàn)需要加強(qiáng)或是完善的地方,Product Owner還有兩到三天的時(shí)間可以補(bǔ)強(qiáng),而不是浪費(fèi)迭代計(jì)劃會(huì)議的時(shí)間去做這件事情。
2)迭代計(jì)劃會(huì)議(Sprint Planning Meeting)
產(chǎn)品負(fù)責(zé)人建立產(chǎn)品功能列表(Product Backlog)。產(chǎn)品功能列表是一組條目化需求,它必須從客戶價(jià)值角度描述,并按優(yōu)先級(jí)排序。
Scrum Master召集相關(guān)人員召開(kāi)迭代計(jì)劃會(huì),迭代計(jì)劃會(huì)在每個(gè)迭代第一天召開(kāi),目的是選擇本次迭代的Backlog和估算本次迭代的工作量。
產(chǎn)品負(fù)責(zé)人逐條講解最重要的產(chǎn)品功能,開(kāi)發(fā)團(tuán)隊(duì)共同估算Backlog所需工作量,直到本迭代工作量達(dá)到飽和。產(chǎn)品負(fù)責(zé)人參與討論并回答和需求相關(guān)的問(wèn)題,但不干擾估算結(jié)果。隊(duì)員認(rèn)領(lǐng)任務(wù)(或由組長(zhǎng)協(xié)商分發(fā)),獨(dú)立或與別人一起完成任務(wù);會(huì)議時(shí)間控制在1-2小時(shí)內(nèi)。
3)每日站會(huì)(Standup Meeting)
團(tuán)隊(duì)內(nèi)部利用每日立會(huì)來(lái)溝通進(jìn)度,15分鐘結(jié)束,開(kāi)發(fā)團(tuán)隊(duì)利用燃盡圖來(lái)展示整體進(jìn)度;如無(wú)特殊原因,迭代期內(nèi)無(wú)變更,在每日站會(huì)上團(tuán)隊(duì)成員需要回答以下3個(gè)問(wèn)題:
- 昨天你做了什么?
 - 今天你將要做什么?
 - 你有需要幫助的地方嗎?
 
這些都是團(tuán)隊(duì)成員的彼此承諾。
4)評(píng)審會(huì)(Retrospective Meeting)
小組向產(chǎn)品負(fù)責(zé)人展示迭代工作結(jié)果,產(chǎn)品負(fù)責(zé)人給出評(píng)價(jià)和反饋。以用戶故事是否能成功交付來(lái)評(píng)價(jià)任務(wù)完成情況。整個(gè)團(tuán)隊(duì)都需要參加,ScrumMaster、產(chǎn)品所有者、團(tuán)隊(duì),可能還有客戶,時(shí)間控制在1-2小時(shí)內(nèi)。
5)反思會(huì)(Retrospective Meeting)
在每個(gè)迭代后召開(kāi)簡(jiǎn)短的反思會(huì),總結(jié)哪些事情做得好,哪些事情做得不好。做得好的保留,不好的摒棄。會(huì)議得出這樣的結(jié)論:開(kāi)始做什么、繼續(xù)做什么、停止做什么,一般控制在15-30分鐘。
Scrum是一套開(kāi)發(fā)流程,是敏捷的一種,實(shí)施主要還是看人,強(qiáng)調(diào)是自組織、自驅(qū)動(dòng)的,只有不斷的在實(shí)際應(yīng)用中仔細(xì)體會(huì),才能理解Scrum的真諦,把Scrum用好。
4.2 12原則
下面給出敏捷開(kāi)發(fā)的12原則,這12原則作為敏捷開(kāi)發(fā)對(duì)于軟件開(kāi)發(fā)流程的指導(dǎo)性綱領(lǐng),也是對(duì)敏捷宣言進(jìn)行了具有實(shí)際操作意義的解釋,希望大家在實(shí)際應(yīng)用中仔細(xì)體會(huì)。
我們遵循以下準(zhǔn)則:
- 我們的最高目標(biāo)是,通過(guò)盡早和持續(xù)地交付有價(jià)值的軟件來(lái)滿足客戶。
 - 歡迎對(duì)需求提出變更——即使是在項(xiàng)目開(kāi)發(fā)后期。要善于利用需求變更,幫助客戶獲得競(jìng)爭(zhēng)優(yōu)勢(shì)。
 - 要不斷交付可用的軟件,周期從幾周到幾個(gè)月不等,且越短越好。
 - 項(xiàng)目過(guò)程中,業(yè)務(wù)人員與開(kāi)發(fā)人員必須在一起工作。
 - 要善于激勵(lì)項(xiàng)目人員,給他們以所需要的環(huán)境和支持,并相信他們能夠完成任務(wù)。
 - 無(wú)論是團(tuán)隊(duì)內(nèi)還是團(tuán)隊(duì)間,最有效的溝通方法是面對(duì)面的交談。
 - 可用的軟件是衡量進(jìn)度的主要指標(biāo)。
 - 敏捷過(guò)程提倡可持續(xù)的開(kāi)發(fā)。項(xiàng)目方、開(kāi)發(fā)人員和用戶應(yīng)該能夠保持恒久穩(wěn)定的進(jìn)展速度。
 - 對(duì)技術(shù)的精益求精以及對(duì)設(shè)計(jì)的不斷完善將提升敏捷性。
 - 要做到簡(jiǎn)潔,即盡最大可能減少不必要的工作。這是一門藝術(shù)。
 - 最佳的架構(gòu)、需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)。
 - 團(tuán)隊(duì)要定期反省如何能夠做到更有效,并相應(yīng)地調(diào)整團(tuán)隊(duì)的行為。
 
【本文是51CTO專欄機(jī)構(gòu)宜信技術(shù)學(xué)院的原創(chuàng)文章,微信公眾號(hào)“宜信技術(shù)學(xué)院( id: CE_TECH)”】















 
 
 




 
 
 
 