1. 程式人生 > >趣文:三分鐘瞭解敏捷開發

趣文:三分鐘瞭解敏捷開發

小灰經過千辛萬苦,終於拿到了心儀的offer,

今天小灰上班的第一天……

下班後,小灰找到同學大黃來請教……

場景一:小灰在餐廳

場景二:無奈的專案經理

什麼是敏捷開發?

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

在敏捷開發中,軟體專案的構建被切分成多個子專案,各個子專案的成果都經過測試,具備整合和可執行的特徵。

簡單地來說,敏捷開發並不追求前期完美的設計、完美編碼,而是力求在很短的週期內開發出產品的核心功能,儘早釋出出可用的版本。然後在後續的生產週期內,按照新需求不斷迭代升級,完善產品。

這一切正如某人的名言:

是誰這麼厲害,提出了敏捷開發思想?是一位名叫Martin Fowler的美國大叔。

大叔不但是敏捷開發的創始人之一,還在面向物件開發、設計模式、UML建模領域做出了重要貢獻。目前擔任ThoughtWorks公司的首席科學家。

敏捷開發模式的分類

敏捷開發的實現主要包括 SCRUM、XP(極限程式設計)、Crystal Methods、FDD(特性驅動開發)等等。其中SCRUMXP最為流行。

同樣是敏捷開發,XP 極限程式設計 更側重於實踐,併力求把實踐做到極限。這一實踐可以是測試先行,也可以是結對程式設計等,關鍵要看具體的應用場景。

SCRUM則是一種開發流程框架,也可以說是一種套路。SCRUM框架中包含三個角色,三個工件,四個會議,聽起來很複雜,其目的是為了有效地完成每一次迭代週期的工作。在這裡我們重點討論的是SCRUM。

SCRUM的工作流程

學習Scrum之前,我們先要了解幾個基本術語:

Sprint:衝刺週期,通俗的講就是實現一個“小目標”的週期。一般需要2-6周時間。

User Story:使用者的外在業務需求。拿銀行系統來舉例的話,一個Story可以是使用者的存款行為,或者是查詢餘額等等。也就是所謂的小目標本身。

Task:由User Story 拆分成的具體開發任務。

Backlog:需求列表,可以看成是小目標的清單。分為Sprint Backlog和Product Backlog。

Daily meeting:每天的站會,用於監控專案進度。有些公司直接稱其為Scrum。

Sprint Review meeting:

衝刺評審會議,讓團隊成員們演示成果。

Sprint burn down:衝刺燃盡圖,說白了就是記錄當前週期的需求完成情況。

Rlease:開發週期完成,專案釋出新的可用版本。

如上圖所示,在專案啟動之前,會由團隊的產品負責人(Product owner)按照需求優先順序來明確出一份Product Backlog,為專案做出整體排期。

隨後在每一個小的迭代週期裡,團隊會根據計劃(Sprint Plan Meeting)確定本週期的Sprint Backlog,再細化成一個個Task,分配給團隊成員,進行具體開發工作。每一天,團隊成員都會進行Daily meeting,根據情況更新自己的Task狀態,整個團隊更新Sprint burn down chart。

當這一週期的Sprint backlog全部完成,團隊會進行Spring review meeting,也就是評審會議。一切順利的話,會發布出這一版本的Release,並且進行Sprint回顧會議(Sprint Retrospective Meeting)。

那麼,現實中的Scrum是什麼樣的情景呢?看看下面的照片就知道了:

敏捷開發與Devops

Devops是Development和Operations的合成詞,其目標是要加強開發人員、測試人員、運維人員之間的溝通協調。如何實現這一目標呢?需要我們的專案做到持續整合持續交付、持續部署

時下流行的JenkinsBamboo,就是兩款優秀的持續整合工具。而Docker容器則為Devops提供了強大而有效的統一環境。

關於Devops以及Docker,在以後的文章中會做出更詳細的介紹。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!