學(xué)習(xí)完整課程請(qǐng)移步 互聯(lián)網(wǎng) Java 全棧工程師
本節(jié)視頻
三分鐘了解敏捷開發(fā)
小灰經(jīng)過(guò)千辛萬(wàn)苦,終于拿到了心儀的 offer楞件,今天小灰上班的第一天 ……
下班后衫生,小灰找到同學(xué)大黃來(lái)請(qǐng)教 ……
場(chǎng)景一:小灰在餐廳
場(chǎng)景二:無(wú)奈的項(xiàng)目經(jīng)理
什么是敏捷開發(fā)?
敏捷開發(fā)(Agile)是一種以人為核心土浸、迭代罪针、循序漸進(jìn)的開發(fā)方法。
在敏捷開發(fā)中栅迄,軟件項(xiàng)目的構(gòu)建被切分成多個(gè)子項(xiàng)目站故,各個(gè)子項(xiàng)目的成果都經(jīng)過(guò)測(cè)試,具備集成和可運(yùn)行的特征毅舆。
簡(jiǎn)單地來(lái)說(shuō),敏捷開發(fā)并不追求前期完美的設(shè)計(jì)愈腾、完美編碼憋活,而是力求在很短的周期內(nèi)開發(fā)出產(chǎn)品的核心功能,盡早發(fā)布出可用的版本虱黄。然后在后續(xù)的生產(chǎn)周期內(nèi)悦即,按照新需求不斷迭代升級(jí),完善產(chǎn)品橱乱。
這一切正如某人的名言:
是誰(shuí)這么厲害辜梳,提出了敏捷開發(fā)思想?是一位名叫 Martin Fowler
的美國(guó)大叔泳叠。
大叔不但是敏捷開發(fā)的創(chuàng)始人之一作瞄,還在面向?qū)ο箝_發(fā)、設(shè)計(jì)模式危纫、UML 建模領(lǐng)域做出了重要貢獻(xiàn)宗挥。目前擔(dān)任 ThoughtWorks 公司的首席科學(xué)家。
敏捷開發(fā)模式的分類
敏捷開發(fā)的實(shí)現(xiàn)主要包括 SCRUM种蝶、XP(極限編程)契耿、Crystal Methods、FDD(特性驅(qū)動(dòng)開發(fā))等等螃征。其中 SCRUM 與 XP 最為流行搪桂。
同樣是敏捷開發(fā),XP 極限編程 更側(cè)重于實(shí)踐盯滚,并力求把實(shí)踐做到極限踢械。這一實(shí)踐可以是測(cè)試先行拙泽,也可以是結(jié)對(duì)編程等,關(guān)鍵要看具體的應(yīng)用場(chǎng)景裸燎。
SCRUM 則是一種開發(fā)流程框架顾瞻,也可以說(shuō)是一種套路。SCRUM 框架中包含三個(gè)角色德绿,三個(gè)工件荷荤,四個(gè)會(huì)議,聽起來(lái)很復(fù)雜移稳,其目的是為了有效地完成每一次迭代周期的工作蕴纳。在這里我們重點(diǎn)討論的是 SCRUM。
SCRUM 的工作流程
學(xué)習(xí) Scrum 之前个粱,我們先要了解幾個(gè)基本術(shù)語(yǔ):
- Sprint:沖刺周期古毛,通俗的講就是實(shí)現(xiàn)一個(gè)“小目標(biāo)”的周期。一般需要 2-6 周時(shí)間都许。
- User Story:用戶的外在業(yè)務(wù)需求稻薇。拿銀行系統(tǒng)來(lái)舉例的話,一個(gè) Story 可以是用戶的存款行為胶征,或者是查詢余額等等塞椎。也就是所謂的小目標(biāo)本身。
- Task:由 User Story 拆分成的具體開發(fā)任務(wù)睛低。
- Backlog:需求列表案狠,可以看成是小目標(biāo)的清單。分為 Sprint Backlog 和 Product Backlog钱雷。
- Daily meeting:每天的站會(huì)骂铁,用于監(jiān)控項(xiàng)目進(jìn)度。有些公司直接稱其為 Scrum罩抗。
- Sprint Review meeting: 沖刺評(píng)審會(huì)議拉庵,讓團(tuán)隊(duì)成員們演示成果。
- Sprint burn down:沖刺燃盡圖澄暮,說(shuō)白了就是記錄當(dāng)前周期的需求完成情況名段。
- Release:開發(fā)周期完成,項(xiàng)目發(fā)布新的可用版本伸辟。
如上圖所示,在項(xiàng)目啟動(dòng)之前馍刮,會(huì)由團(tuán)隊(duì)的產(chǎn)品負(fù)責(zé)人(Product owner)按照需求優(yōu)先級(jí)來(lái)明確出一份 Product Backlog信夫,為項(xiàng)目做出整體排期。
隨后在每一個(gè)小的迭代周期里,團(tuán)隊(duì)會(huì)根據(jù)計(jì)劃(Sprint Plan Meeting)確定本周期的 Sprint Backlog静稻,再細(xì)化成一個(gè)個(gè) Task警没,分配給團(tuán)隊(duì)成員,進(jìn)行具體開發(fā)工作振湾。每一天杀迹,團(tuán)隊(duì)成員都會(huì)進(jìn)行 Daily meeting,根據(jù)情況更新自己的 Task 狀態(tài)押搪,整個(gè)團(tuán)隊(duì)更新 Sprint burn down chart树酪。
當(dāng)這一周期的 Sprint backlog 全部完成,團(tuán)隊(duì)會(huì)進(jìn)行 Spring review meeting大州,也就是評(píng)審會(huì)議续语。一切順利的話,會(huì)發(fā)布出這一版本的 Release厦画,并且進(jìn)行 Sprint 回顧會(huì)議(Sprint Retrospective Meeting)疮茄。
那么,現(xiàn)實(shí)中的 Scrum 是什么樣的情景呢根暑?看看下面的照片就知道了:
敏捷開發(fā)與 DevOps
DevOps 是 Development 和 Operations 的合成詞力试,其目標(biāo)是要加強(qiáng)開發(fā)人員、測(cè)試人員购裙、運(yùn)維人員之間的溝通協(xié)調(diào)懂版。如何實(shí)現(xiàn)這一目標(biāo)呢?需要我們的項(xiàng)目做到持續(xù)集成躏率、持續(xù)交付、持續(xù)部署民鼓。
時(shí)下流行的 Jenkins薇芝、Bamboo,就是兩款優(yōu)秀的持續(xù)集成工具丰嘉。而 Docker 容器則為 DevOps 提供了強(qiáng)大而有效的統(tǒng)一環(huán)境夯到。