《敏捷宣言》
2001年2月,17名軟件專家在美國(guó)猶他州瓦薩奇山雪鳥滑雪勝地相聚,經(jīng)過(guò)幾天的討論和辯論,共同起草了《敏捷軟件開發(fā)宣言》,簡(jiǎn)稱《敏捷宣言》。這些專家包括來(lái)自于極限編程、Scrum、DSDM、自適應(yīng)軟件開發(fā)、水晶系列、特征驅(qū)動(dòng)開發(fā)、實(shí)效編程的代表們。許多人已經(jīng)有了自己創(chuàng)建的方法論,并開始傳播,他們都具有編寫軟件的豐富經(jīng)驗(yàn),并且都在尋求文檔驅(qū)動(dòng)的重量級(jí)軟件開發(fā)流程的替代方案。
敏捷宣言四大價(jià)值觀
- 個(gè)體和互動(dòng)高于流程和工具。
- 工作的軟件高于詳盡的文檔。
- 客戶合作高于合同談判。
- 響應(yīng)變化高于遵循計(jì)劃。
也就是說(shuō),盡管右項(xiàng)有其價(jià)值,但更要重視左項(xiàng)的價(jià)值。
伴隨著四大價(jià)值觀,敏捷宣言提供了12條原則:
1、我們最重要的目標(biāo)是通過(guò)持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意(價(jià)值優(yōu)先)。
2、欣然面對(duì)需求變化,即使在開發(fā)后期也一樣。為了客戶的競(jìng)爭(zhēng)優(yōu)勢(shì),通過(guò)敏捷過(guò)程掌控變化(擁抱變化)。
3、經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個(gè)月,傾向于采取較短的周期(短迭代交付)。
4、業(yè)務(wù)人員和開發(fā)人員必須相互合作,項(xiàng)目中的每一天都不例外(業(yè)務(wù)參與)。
5、激發(fā)個(gè)體的斗志,以他們?yōu)楹诵拇罱?xiàng)目。提供所需的環(huán)境和支援,輔以信任,從而達(dá)成目標(biāo)(以人為本)。
6、無(wú)論團(tuán)隊(duì)內(nèi)外,傳遞信息效果最好、效率也最高的方式是面對(duì)面的交談(面對(duì)面溝通)。
7、可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)(成果導(dǎo)向)。
8、敏捷過(guò)程倡導(dǎo)可持續(xù)開發(fā)。發(fā)起人、開發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)(保持節(jié)奏)。
9、堅(jiān)持不懈地追求技術(shù)卓越和良好設(shè)計(jì),敏捷能力由此增強(qiáng)(追求卓越)。
10、以簡(jiǎn)潔為本,它是極力減少不必要工作量的藝術(shù)(簡(jiǎn)單務(wù)實(shí))。
11、最好的架構(gòu)、需求和設(shè)計(jì)出自于組織團(tuán)隊(duì)(團(tuán)隊(duì)自組織)。
12、團(tuán)隊(duì)定期地反思如何能提高成效,并相應(yīng)地調(diào)整自身的行為(持續(xù)改進(jìn))。
盡管這些價(jià)值觀和原則源自于軟件行業(yè),但至今敏捷方法的應(yīng)用已擴(kuò)展到許多其他的非計(jì)算機(jī)軟件開發(fā)行業(yè),并將其發(fā)展為一種思維模式,在許多不同的實(shí)踐中體現(xiàn)。
敏捷軟件開發(fā)
“敏捷”是一個(gè)囊括了各種框架和方法的涵蓋性術(shù)語(yǔ)。它指的是符合《敏捷宣言》價(jià)值觀和原則的任何方法、技術(shù)、框架、手段或?qū)嵺`。敏捷軟件開發(fā)簡(jiǎn)稱敏捷開發(fā),是從20世紀(jì)90年代開始逐漸引起廣泛關(guān)注的一些新型軟件開發(fā)方法,以應(yīng)對(duì)快速變化的需求。它們的具體名稱、理念、過(guò)程、術(shù)語(yǔ)都不盡相同,相對(duì)于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對(duì)面溝通、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重人的作用。
敏捷開發(fā)的發(fā)展過(guò)程中,出現(xiàn)了多個(gè)不同的流派,比如:極限編程(Extreme Programming,XP)、自適應(yīng)軟件開發(fā)(ASD)、動(dòng)態(tài)系統(tǒng)開發(fā)方法(DSDM)、水晶方法、特性驅(qū)動(dòng)開發(fā)(FDD)等,但其中的基本原則是一致的。從開發(fā)者的角度,主要特點(diǎn)有站立會(huì)議、看板、小版本發(fā)布、較少的文檔、注重合作、客戶參與、自動(dòng)化測(cè)試、適應(yīng)性計(jì)劃調(diào)整、結(jié)對(duì)編程等等。從管理者的角度,主要關(guān)注點(diǎn)有測(cè)試驅(qū)動(dòng)開發(fā)(TDD)、持續(xù)集成(CI)、重構(gòu)等等。在具體項(xiàng)目中,各團(tuán)隊(duì)可選擇適合其項(xiàng)目和組織文化的不同方法和實(shí)踐。
還可以將敏捷方法視為精益方法的子集,它們都是精益方法的具體實(shí)例。
敏捷是許多方法的一個(gè)總稱
看板方法雖然是精益陣營(yíng)中的一種重要方法,但人們也通常將其視為一種重要的敏捷框架,廣泛地應(yīng)用于敏捷環(huán)境中。
所有這些方法都具有以下共同特征:
1、迭代式開發(fā)。即整個(gè)開發(fā)過(guò)程被分為幾個(gè)迭代周期,每個(gè)迭代周期是一個(gè)定長(zhǎng)或不定長(zhǎng)的時(shí)間塊每個(gè)迭代周期持續(xù)的時(shí)間一般較短,通常為一到六周。
2、增量交付。產(chǎn)品是在每個(gè)迭代周期結(jié)束時(shí)被逐步交付使用,而不是在整個(gè)開發(fā)過(guò)程結(jié)束的時(shí)候一次性交付使用。每次交付的都是可以被部署到用戶應(yīng)用環(huán)境中被用戶使用的、能給用戶帶來(lái)即時(shí)效益和價(jià)值的產(chǎn)品。
3、開發(fā)團(tuán)隊(duì)和用戶反饋推動(dòng)產(chǎn)品開發(fā)。敏捷開發(fā)方法主張用戶能夠全程參與到整個(gè)開發(fā)過(guò)程中。這使需求變化和用戶反饋能被動(dòng)態(tài)管理并及時(shí)集成到產(chǎn)品中。同時(shí),團(tuán)隊(duì)對(duì)于用戶的需求也能及時(shí)提供反饋意見。
4、持續(xù)集成。新的功能或需求變化總是盡可能頻繁地被整合到產(chǎn)品中。一些項(xiàng)目是在每個(gè)迭代周期結(jié)束的時(shí)候集成, 有些項(xiàng)目則每天都在這么做。
5、開發(fā)團(tuán)隊(duì)自我管理。擁有一個(gè)積極的、自我管理的、具備自由交流風(fēng)格的開發(fā)團(tuán)隊(duì),是每個(gè)敏捷項(xiàng)目必不可少的條件。人是敏捷開發(fā)的核心。敏捷開發(fā)總是以人為中心建立開發(fā)的過(guò)程和機(jī)制,而非把過(guò)程和機(jī)制強(qiáng)加給人。
敏捷開發(fā)過(guò)程
敏捷開發(fā)過(guò)程
敏捷開發(fā)過(guò)程通過(guò)對(duì)頻繁交付的可交付成果的評(píng)審,團(tuán)隊(duì)將能獲得更多的信息,從而在此基礎(chǔ)上進(jìn)行計(jì)劃和重新計(jì)劃。從業(yè)務(wù)角度看,敏捷就是創(chuàng)建組織更快(早)地交付有價(jià)值的產(chǎn)品和靈活地響應(yīng)變化的能力。
結(jié)構(gòu)化的需求管理
Epic、Feature、Story、Task是用來(lái)劃分需求顆粒度的標(biāo)簽,需求根據(jù)顆粒度大小按分為不同的層級(jí)。
- Epic:史詩(shī),是項(xiàng)目的愿景目標(biāo)。通常是對(duì)整個(gè)項(xiàng)目的概括性描述。
- Feature:可以帶來(lái)價(jià)值的產(chǎn)品功能或特性。Feature比Epic更具體形象,用戶可以感知,具有業(yè)務(wù)價(jià)值。
- Story:我們通常所說(shuō)的用戶故事,User Story的簡(jiǎn)稱。是從用戶角度對(duì)產(chǎn)品功能的詳細(xì)描述,承接Feature,并放入項(xiàng)目的待辦事項(xiàng)列表,動(dòng)態(tài)調(diào)整。始終讓高優(yōu)先級(jí)的Story優(yōu)先交付給客戶。Story要符合INVEST原則:Independent(獨(dú)立的)、Negotiable(可討論的)、Valuable(有價(jià)值的)、Estimable(可估算的)、Small(顆粒度適中的)、Testable(可測(cè)試的)。
- Task:是團(tuán)隊(duì)成員要完成的具體任務(wù)。通常將Story分配給開發(fā)人員,然后開發(fā)人員將Story分解為Task并估算相應(yīng)的工時(shí)。
Epic-Feature-Stroy-Task是一種將需求進(jìn)行結(jié)構(gòu)化管理的方法,從上到下逐層分解并形成自下而上的依賴。在實(shí)際開發(fā)過(guò)程中,需要變換而動(dòng)態(tài)調(diào)整時(shí),要避免偏離目標(biāo)方向,保證所添加的Story和Task和它們上層是有關(guān)聯(lián)的。從而保證團(tuán)隊(duì)的工作是在朝著目標(biāo)前進(jìn)。
敏捷團(tuán)隊(duì)
敏捷團(tuán)隊(duì)注重快速開發(fā)產(chǎn)品。在實(shí)踐中,最有效的敏捷團(tuán)隊(duì)往往由5到9個(gè)成員組成。理想情況下,敏捷團(tuán)隊(duì)?wèi)?yīng)該集中在一個(gè)團(tuán)隊(duì)工作場(chǎng)所工作,團(tuán)隊(duì)成員都為專職成員。敏捷提倡自我管理型團(tuán)隊(duì),敏捷團(tuán)隊(duì)與仆人式領(lǐng)導(dǎo)一起成長(zhǎng),領(lǐng)導(dǎo)充分信任并支持團(tuán)隊(duì)的工作方法。
特點(diǎn)一:自組織自管理
自組織自管理是指當(dāng)團(tuán)隊(duì)遇到問(wèn)題的時(shí)候,團(tuán)隊(duì)成員需要自己研究解決方案,自己解決問(wèn)題,不需要領(lǐng)導(dǎo)的監(jiān)督,實(shí)現(xiàn)自我驅(qū)動(dòng)。例如:如果一個(gè)團(tuán)隊(duì)成員承諾8個(gè)小時(shí)完成某一項(xiàng)開發(fā)任務(wù),并認(rèn)領(lǐng)了該任務(wù),就不需要其他人去監(jiān)督他了,自己可以主動(dòng)完成任務(wù),主動(dòng)反饋問(wèn)題,主動(dòng)尋求幫助等等。
特點(diǎn)二:自適應(yīng)
通過(guò)對(duì)以往項(xiàng)目的研發(fā)流程、技術(shù)方案、團(tuán)隊(duì)協(xié)作、交付成果、客戶反饋、存在的問(wèn)題等進(jìn)行回顧、復(fù)盤、反思,團(tuán)隊(duì)自行優(yōu)化調(diào)整,以更好地進(jìn)行下一次迭代過(guò)程。
特點(diǎn)三:完全透明
項(xiàng)目進(jìn)行過(guò)程中,團(tuán)隊(duì)成員每天在做什么,遇到了什么問(wèn)題,完成了什么任務(wù),彼此都是清晰了解的。可以在每日站會(huì)中傳遞這些信息,或是在看板中展示。
常見敏捷實(shí)踐
敏捷開發(fā)過(guò)程有一些常用實(shí)踐,在實(shí)際開發(fā)過(guò)程中可以參照或有選擇性執(zhí)行。
回顧
回顧也經(jīng)常稱作“復(fù)盤”、“階段性總結(jié)”,是最重要的一個(gè)實(shí)踐,原因是它可以幫助團(tuán)隊(duì)從之前的產(chǎn)品開發(fā)工作及其過(guò)程中學(xué)習(xí)、改進(jìn)和調(diào)整其過(guò)程。敏捷的原則之一是“團(tuán)隊(duì)定期地反思如何能提高成效,并相應(yīng)地調(diào)整自身的行為”?;仡櫩梢栽陧?xiàng)目中間進(jìn)行,也可以在項(xiàng)目結(jié)束時(shí)進(jìn)行。通??梢赃x擇在這些關(guān)鍵時(shí)刻進(jìn)行:
- 當(dāng)團(tuán)隊(duì)完成一個(gè)發(fā)布或者加入一些功能時(shí)。不一定是一個(gè)巨大的增量,可以是任何發(fā)布,無(wú)論它有多小。
- 自上次回顧以來(lái),又過(guò)了幾周時(shí)間。
- 當(dāng)團(tuán)隊(duì)出現(xiàn)問(wèn)題時(shí),以及團(tuán)隊(duì)協(xié)作完成工作不順暢時(shí)。
- 當(dāng)團(tuán)隊(duì)達(dá)到任何其他里程碑時(shí)。
通過(guò)回顧,針對(duì)定性的或定量的數(shù)據(jù)為依據(jù),然后利用這些數(shù)據(jù)找到根源,設(shè)計(jì)對(duì)策,并對(duì)所有的需要改進(jìn)的事項(xiàng)進(jìn)行優(yōu)先級(jí)排序和制定行動(dòng)計(jì)劃,然后團(tuán)隊(duì)選擇合適數(shù)量的事項(xiàng)加入下一次迭代計(jì)劃。
重要的是,回顧并不是責(zé)備,而是讓團(tuán)隊(duì)學(xué)習(xí)并改進(jìn)。
待辦事項(xiàng)列表
待辦事項(xiàng)列表可以理解為一個(gè)需求池,我們收集到的客戶需求和反饋意見,以及團(tuán)隊(duì)內(nèi)部的產(chǎn)品規(guī)劃和反饋意見,都可以存放到需求池,并給每一項(xiàng)需求標(biāo)注優(yōu)先級(jí)和計(jì)劃版本,以顯示預(yù)期的可交付成果序列。根據(jù)實(shí)際情況,優(yōu)先級(jí)和計(jì)劃版本也可以動(dòng)態(tài)調(diào)整。依據(jù)待辦事項(xiàng)列表,就可以劃定下一個(gè)迭代開發(fā)的范圍。
每日站會(huì)
團(tuán)隊(duì)成員利用每日站會(huì)對(duì)彼此做出小的承諾,發(fā)現(xiàn)問(wèn)題,并確保團(tuán)隊(duì)工作順利進(jìn)行。需要為每日站會(huì)規(guī)定時(shí)間,比如不超出15分鐘??梢酝ㄟ^(guò)某種形式“過(guò)一下”看板或任務(wù)清單,團(tuán)隊(duì)中的任何人都可以主持站會(huì)。
通常,在基于迭代的敏捷中,每個(gè)團(tuán)隊(duì)成員都輪流回答下列問(wèn)題:
- 上次站會(huì)以來(lái)我都完成了什么?
- 從現(xiàn)在到下一次站會(huì),我計(jì)劃完成什么?
- 我的障礙(或風(fēng)險(xiǎn)或問(wèn)題)是什么?
從這些問(wèn)題得出的答案能夠讓團(tuán)隊(duì)自我組織,并讓團(tuán)隊(duì)成員為完成之前和整個(gè)迭代中承諾完成的工作承擔(dān)彼此的責(zé)任。
站會(huì)是為了發(fā)現(xiàn)存在問(wèn)題,而不是解決它們。將問(wèn)題記錄起來(lái),然后創(chuàng)建另一次會(huì)議,它可以在站會(huì)之后立即召開或者選擇某個(gè)合適的時(shí)間召開,并在會(huì)上解決問(wèn)題。
要鼓勵(lì)任何團(tuán)隊(duì)成員主持會(huì)議而不是由項(xiàng)目經(jīng)理或領(lǐng)導(dǎo)主持,以確保它不會(huì)變成狀態(tài)報(bào)告會(huì)議,而是作為團(tuán)隊(duì)進(jìn)行自我組織和相互承諾的會(huì)議。
看板
在敏捷項(xiàng)目管理中,團(tuán)隊(duì)常用的一個(gè)工具就是白板加上便簽。我們可以把任務(wù)寫在便簽上,把白板做成待辦、處理中、已完成等泳道,然后把這些便簽貼到相應(yīng)的泳道里面,每天更新各項(xiàng)任務(wù)的進(jìn)度。團(tuán)隊(duì)成員也可以根據(jù)看板清楚地了解到每項(xiàng)任務(wù)的進(jìn)度等信息。
展示/評(píng)審
當(dāng)團(tuán)隊(duì)以用戶故事的形式完成特定功能時(shí),團(tuán)隊(duì)會(huì)定期展示工作成果??催^(guò)展示后,產(chǎn)品負(fù)責(zé)人接受或拒絕故事。一般的指導(dǎo)方針是,每?jī)芍苤辽僬故疽淮螆F(tuán)隊(duì)的工作產(chǎn)品,這種頻率對(duì)于大多數(shù)團(tuán)隊(duì)來(lái)說(shuō)是足夠的,這樣,團(tuán)隊(duì)成員就可以得到反饋,防止他們朝著錯(cuò)誤的方向前進(jìn)。
展示/評(píng)審的作用還體現(xiàn)在,可以保障產(chǎn)品、開發(fā)和測(cè)試對(duì)需求理解一致。我們?cè)诿艚葸^(guò)程中通過(guò)版本計(jì)劃評(píng)審、需求評(píng)審、設(shè)計(jì)評(píng)審、測(cè)試用例評(píng)審和開發(fā)ShowCase這幾個(gè)關(guān)鍵活動(dòng)保障。版本計(jì)劃評(píng)審和需求評(píng)審中,產(chǎn)品經(jīng)理講解版本范圍、需求及上下文關(guān)聯(lián)影響,開發(fā)和測(cè)試都會(huì)參加,如果需求理解不一致的地方就馬上溝通由產(chǎn)品經(jīng)理把關(guān)。到測(cè)試用例評(píng)審的時(shí)候,需求細(xì)化成一個(gè)個(gè)測(cè)試用例,這樣讓開發(fā)和測(cè)試進(jìn)一步深化理解需求達(dá)成一致。到開發(fā)完成功能,給測(cè)試和產(chǎn)品Showcase,測(cè)試和產(chǎn)品再一次核對(duì)開發(fā)實(shí)現(xiàn)功能與需求是否一致,明顯不一致的地方當(dāng)場(chǎng)指出來(lái),等開發(fā)人員修正后才提交給測(cè)試進(jìn)行測(cè)試,這樣就能及早發(fā)現(xiàn)開發(fā)中的一些問(wèn)題,避免帶到測(cè)試環(huán)境,提升測(cè)試的有效性。
持續(xù)集成
持續(xù)集成是指每當(dāng)我們有新的代碼產(chǎn)出時(shí),可以通過(guò)一種自動(dòng)化的方式在服務(wù)器上進(jìn)行構(gòu)建、打包,進(jìn)而可以發(fā)布到集成環(huán)境、測(cè)試環(huán)境或者生產(chǎn)環(huán)境里面。有了持續(xù)集成作為基礎(chǔ),我們才能快速對(duì)代碼進(jìn)行重構(gòu)(所謂重構(gòu)就是響應(yīng)變化)、盡快收到反饋、以及頻繁發(fā)布。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。