小灰通過千辛萬苦,終於拿到了心儀的offer,程序員
今天小灰上班的第一天......編程
下班後,小灰找到同窗大黃來請教......設計模式
場景一:小灰在餐廳
app
場景二:無奈的項目經理框架
什麼是敏捷開發?運維
敏捷開發(Agile)是一種以人爲核心、迭代、按部就班的開發方法。ide
在敏捷開發中,軟件項目的構建被切分紅多個子項目,各個子項目的成果都通過測試,具有集成和可運行的特徵。工具
簡單地來講,敏捷開發並不追求前期完美的設計、完美編碼,而是力求在很短的週期內開發出產品的核心功能,儘早發佈出可用的版本。而後在後續的生產週期內,按照新需求不斷迭代升級,完善產品。學習
這一切正如某人的名言:測試
是誰這麼厲害,提出了敏捷開發思想?是一位名叫Martin Fowler的美國大叔。
大叔不可是敏捷開發的創始人之一,還在面向對象開發、設計模式、UML建模領域作出了重要貢獻。目前擔任ThoughtWorks公司的首席科學家。
敏捷開發模式的分類
敏捷開發的實現主要包括 SCRUM、XP(極限編程)、Crystal Methods、FDD(特性驅動開發)等等。其中SCRUM與XP最爲流行。
一樣是敏捷開發,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的合成詞,其目標是要增強開發人員、測試人員、運維人員之間的溝通協調。如何實現這一目標呢?須要咱們的項目作到持續集成、持續交付、持續部署。
時下流行的Jenkins、Bamboo,就是兩款優秀的持續集成工具。而Docker容器則爲Devops提供了強大而有效的統一環境。
關於Devops以及Docker,在之後的文章中會作出更詳細的介紹。
—————END—————