1. 程式人生 > >敏捷開發解決方案

敏捷開發解決方案

什麼是敏捷開發

敏捷開發(Agile Development)是一種以人為核心、迭代、循序漸進的開發方法。
怎麼理解呢?首先,我們要理解它不是一門技術,它是一種開發方法,也就是一種軟體開發的流程,它會指導我們用規定的環節去一步一步完成專案的開發,而這種開發方式的主要驅動核心是人,它採用的是迭代式開發。

為什麼說是以人為核心

我們大部分人都學過瀑布開發模型,它是以文件為驅動的,為什麼呢?因為在瀑布的整個開發過程中,要寫大量的文件,把需求文件寫出來後,開發員都是根據文件進行開發的,一切以文件為依據,開發完成後將進行測試,評審,最終部署到正式環境。瀑布流模式每一步往往依賴前一環節的結果,一旦某個環節擱置了,有可能會影響整個軟體開發進度。瀑布流模型如下所示:

而敏捷開發它只寫有必要的文件,或儘量少寫文件,敏捷開發注重的是人與人之間,面對面的交流,所以它強調以人為核心。同時,敏捷開發以衝刺(Sprint)的形式在最短的時間裡完成一次計劃的迭代,包括計劃,實施,測試,評審,

什麼是Scrum

Scrum是一種迭代式增量軟體開發過程,通常用於敏捷軟體開發。在這個框架中,整個開發過程由若干個短的迭代週期組成,一個短的迭代週期稱為一個Sprint,每個Sprint的建議長度是2到4周(網際網路產品研發可以使用1周的Sprint)。在Scrum中,使用產品Backlog來管理產品的需求,產品Backlog是一個按照商業價值排序的需求列表,列表條目的體現形式通常為使用者故事。Scrum團隊總是先開發對客戶具有較高價值的需求。在Sprint中,Scrum團隊從產品Backlog中挑選最高優先順序的需求進行開發。挑選的需求在Sprint計劃會議上經過討論、分析和估算得到相應的任務列表,我們稱它為Sprint Backlog。在每個迭代結束時,Scrum團隊將遞交潛在可交付的產品增量。 Scrum起源於軟體開發專案,但它適用於任何複雜的或是創新性的專案,Scrum的流程圖如下所示:

什麼是Sprint

正如上述那樣,Scrum是一種迭代和增量式的產品開發方法。Scrum通過Sprint來實現迭代,Sprint是短距離賽跑的意思,這裡面指的是一次迭代。一個Sprint是指一個1周-4周的迭代,它是一個時間盒。Sprint的長度一旦確定,保持不變。Sprint的產出是“完成”的、可用 的、潛在可釋出的產品增量。Sprint 在整個開發過程中的週期一致。新的 Sprint 在上一 個 Sprint 完成之後立即開始。 Sprint 包含並由 Sprint 計劃會議、每日站會、開發工作、Sprint 評審會議和 Sprint 回顧會議構成。

Scrum開發流程中的三大角色

Scrum團隊中包括三個角色,他們分別是產品負責人(Product Owner)、Scrum Master和開發團隊。

1.產品負責人

產品負責人是管理產品待辦事項列表(Product Backlog)的唯一責任人。產品待辦事項列表的管理包括:

  • 清晰地表達產品代辦事項列表條目(語法:作為..想..以便於)

  • 對產品代辦事項列表中的條目進行排序,最好地實現目標和使命

  • 確保產品代辦事項列表對所有人可見、透明、清晰,並且顯示 Scrum 團隊的下一步工作

  • 確保開發團隊對產品代辦事項列表中的條目達到一定程度的理解

  • 為保證產品負責人的工作取得成功,組織中的所有人員都必須尊重他的決定。產品負 責人所作的決定在產品待辦事項列表的內容和排序中要清晰可見。任何人都不得要求開發 團隊按照另一套需求開展工作,開發團隊也不允許聽從任何其他人的指令。

2.Scrum Master

  • Scrum Master 負責確保 Scrum 被理解並實施。為了達到這個目的,Scrum Master要確保 Scrum 團隊遵循 Scrum 的理論、實踐和規則。Scrum Master是Scrum團隊中的服務式領導。

  • Scrum Master 幫助 Scrum 團隊外的人員瞭解他們如何與 Scrum 團隊互動是有益的。 Scrum Master 通過改變這些互動來最大化 Scrum 團隊所創造的價值。

3.開發團隊

開發團隊包含了專業人員,負責在每個 Sprint 的結尾交付潛在可釋出的“完成”產 品增量。只有開發團隊的成員才能創造增量。

使用者故事描述

使用者故事是從使用者的角度來描述使用者渴望得到的功能。一個好的使用者故事包括三個要素:

  • 角色:誰要使用這個功能。

  • 活動:需要完成什麼樣的功能。

  • 商業價值:為什麼需要這個功能,這個功能帶來什麼樣的價值。

使用者故事通常按照如下的格式來表達:

  • 英文:As a , I want to , so that .

  • 中文:作為一個<角色>, 我想要<活動>, 以便於<商業價值>

舉例:作為一個“網站管理員”,我想要“統計每天有多少人訪問了我的網站”,以便於“我的贊助商瞭解我的網站會給他們帶來什麼收益。”

需要注意的是使用者故事不能夠使用技術語言來描述,要使用使用者可以理解的業務語言來描述。

如何進行Scrum開發

  • 我們首先需要確定一個Product Backlog(按優先順序排列的一個產品需求列表),這個是由Product Owner 負責的

  • Scrum Team根據Product Backlog列表,做工作量的預估和安排;有了Product Backlog列表,我們需要通過 Sprint Planning Meeting(Sprint計劃會議) 來從中挑選出若干個User Story作為本次迭代完成的目標,這個目標的時間週期是1~4個星期,然後把這個Story進行細化成Task,形成一個Sprint Backlog

  • Sprint Backlog是由Scrum Team去完成的,每個成員根據Sprint Backlog再細化成更小的Task(對應於Worktile上稱為檢查項),當團隊成員完成任務時,務必需要在Worktile和敏捷白板上同步更新狀態

  • 在Scrum Team完成計劃會議上選出的Sprint Backlog過程中,需要進行 Daily Scrum Meeting(每日站立會議),每次會議控制在15分鐘左右,每個人都必須發言,並且要向所有成員當面彙報你昨天完成了什麼,並且向所有成員承諾你今天要完成什麼,同時遇到不能解決的問題也可以提出,每個人回答完成後,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖);

  • 做到每日整合,也就是每天都要有一個可以成功編譯、並且可以演示的版本;

  • 當User Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,這時,我們要進行 Sprint Review Meeting(演示會議),也稱為評審會議,產品負責人和客戶都要參加(最好本公司老闆也參加),每一個Scrum Team的成員都要向他們演示自己完成的軟體產品(這個會議非常重要,一定不能取消);

  • 最後就是 Sprint Retrospective Meeting(回顧會議),也稱為總結會議,以輪流發言方式進行,每個人都要發言,總結並討論改進的地方,放入下一輪Sprint的產品需求中

瞭解了Scrum開發流程之後,我們使用Worktile 和敏捷白板這兩個工具來進行敏捷管理,使用Worktile 可以進行任務的分配、歸檔,如下所示:

使用敏捷白板來跟蹤任務,如下所示:

值得注意的是,當完成任務時,務必要及時更新狀態,以便於團隊瞭解整體進度。