學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師
本節(jié)視頻
三分鐘了解敏捷開發(fā)
小灰經(jīng)過千辛萬苦溃列,終于拿到了心儀的 offer惧所,今天小灰上班的第一天 ……
下班后孟害,小灰找到同學(xué)大黃來請教 ……
場景一:小灰在餐廳
場景二:無奈的項(xiàng)目經(jīng)理
什么是敏捷開發(fā)初澎?
敏捷開發(fā)(Agile)是一種以人為核心、迭代返劲、循序漸進(jìn)的開發(fā)方法剪菱。
在敏捷開發(fā)中,軟件項(xiàng)目的構(gòu)建被切分成多個(gè)子項(xiàng)目纹笼,各個(gè)子項(xiàng)目的成果都經(jīng)過測試纹份,具備集成和可運(yùn)行的特征。
簡單地來說廷痘,敏捷開發(fā)并不追求前期完美的設(shè)計(jì)矮嫉、完美編碼,而是力求在很短的周期內(nèi)開發(fā)出產(chǎn)品的核心功能牍疏,盡早發(fā)布出可用的版本蠢笋。然后在后續(xù)的生產(chǎn)周期內(nèi),按照新需求不斷迭代升級鳞陨,完善產(chǎn)品昨寞。
這一切正如某人的名言:
是誰這么厲害瞻惋,提出了敏捷開發(fā)思想?是一位名叫 Martin Fowler
的美國大叔援岩。
大叔不但是敏捷開發(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í)踐可以是測試先行,也可以是結(jié)對編程等咱筛,關(guān)鍵要看具體的應(yīng)用場景搓幌。
SCRUM 則是一種開發(fā)流程框架,也可以說是一種套路迅箩。SCRUM 框架中包含三個(gè)角色溉愁,三個(gè)工件,四個(gè)會議沙热,聽起來很復(fù)雜,其目的是為了有效地完成每一次迭代周期的工作罢缸。在這里我們重點(diǎn)討論的是 SCRUM篙贸。
SCRUM 的工作流程
學(xué)習(xí) Scrum 之前,我們先要了解幾個(gè)基本術(shù)語:
- Sprint:沖刺周期枫疆,通俗的講就是實(shí)現(xiàn)一個(gè)“小目標(biāo)”的周期爵川。一般需要 2-6 周時(shí)間。
- User Story:用戶的外在業(yè)務(wù)需求息楔。拿銀行系統(tǒng)來舉例的話寝贡,一個(gè) Story 可以是用戶的存款行為,或者是查詢余額等等值依。也就是所謂的小目標(biāo)本身圃泡。
- Task:由 User Story 拆分成的具體開發(fā)任務(wù)。
- Backlog:需求列表愿险,可以看成是小目標(biāo)的清單颇蜡。分為 Sprint Backlog 和 Product Backlog。
- Daily meeting:每天的站會,用于監(jiān)控項(xiàng)目進(jìn)度风秤。有些公司直接稱其為 Scrum鳖目。
- Sprint Review meeting: 沖刺評審會議,讓團(tuán)隊(duì)成員們演示成果缤弦。
- Sprint burn down:沖刺燃盡圖领迈,說白了就是記錄當(dāng)前周期的需求完成情況。
- Release:開發(fā)周期完成碍沐,項(xiàng)目發(fā)布新的可用版本狸捅。
如上圖所示,在項(xiàng)目啟動(dòng)之前抢韭,會由團(tuán)隊(duì)的產(chǎn)品負(fù)責(zé)人(Product owner)按照需求優(yōu)先級來明確出一份 Product Backlog薪贫,為項(xiàng)目做出整體排期。
隨后在每一個(gè)小的迭代周期里刻恭,團(tuán)隊(duì)會根據(jù)計(jì)劃(Sprint Plan Meeting)確定本周期的 Sprint Backlog瞧省,再細(xì)化成一個(gè)個(gè) Task,分配給團(tuán)隊(duì)成員鳍贾,進(jìn)行具體開發(fā)工作鞍匾。每一天,團(tuán)隊(duì)成員都會進(jìn)行 Daily meeting骑科,根據(jù)情況更新自己的 Task 狀態(tài)橡淑,整個(gè)團(tuán)隊(duì)更新 Sprint burn down chart。
當(dāng)這一周期的 Sprint backlog 全部完成咆爽,團(tuán)隊(duì)會進(jìn)行 Spring review meeting梁棠,也就是評審會議。一切順利的話斗埂,會發(fā)布出這一版本的 Release符糊,并且進(jìn)行 Sprint 回顧會議(Sprint Retrospective Meeting)。
那么呛凶,現(xiàn)實(shí)中的 Scrum 是什么樣的情景呢男娄?看看下面的照片就知道了:
敏捷開發(fā)與 DevOps
DevOps 是 Development 和 Operations 的合成詞,其目標(biāo)是要加強(qiáng)開發(fā)人員漾稀、測試人員模闲、運(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)境收擦。