[軟體工程] 筆記六_Scrum軟體開發專案管理

Q: 請就SCRUM的特色加以說明。-- From 中正大學 熊博安教授  實驗室


A:

Scrum是Agile開發中的一種概念,強調以人為本,不受到規則與流程的限制,為了因應軟體變換快的環境,近年來是大家推崇的心法之一。


Scrum角色

1. Development Team:可以獨力完成任務的團隊,人數為5~9人,藉由每個人的專長來安排工作內容。

2. Product Owner (簡稱PO):產品負責人,必須有敏銳的市場觀察並與利害關係人進行溝通,決定產品規劃和成敗。

3. Scrum Master (簡稱SM):SM的存在是為了讓開發團隊更容易去完成事情,需要有信心與耐心,但是實際上沒有人事權無法管人,沒有財務權不能編預算,也不能決定產品的走向。所以,常常安排PM直接轉SM,或主管兼SM。


Scrum物件

1. Item:又稱為Story,由PO定義的產品產出。

2. Task:Dev Team針對Item列出完成各Item所需要的工作。

3. Product Backlog:由PO負責產品的願景圖,以Item為單位由上而下完成。

4. Sprint Backlog:Dev Team向PO承諾這個Sprint會盡力完成Item List。

5. Potentially Shippable Product Increment:開發團隊的產出,可立即上線的產物。

6. Burndown Chart:用來表示剩餘工作量的工作圖表。橫軸代表時間,縱軸代表工作量。可以直觀地預測工作完成的時間。


Scrum活動

1. Sprint:當團隊決定有哪些Item後,進行衝刺的單位。Sprint長度為1-4週,通常在2週以內。需要維持一定的長度較容易掌握團隊的節奏。

2. Daily Scrum:每天開會10-15分鐘,讓團隊的資訊同步。

3. Sprint Planning:Sprint開始時,共同討論Sprint團隊能交付哪些Item。Item優先順序由PO決定。Item的數量由Dev Team決定。

4. Product Backlog Refinement:PO和Dev Team一起討論近期準備展開的Item,主要從商業和使用者角度切入,盡量不觸及技術細節。

5. Sprint Review:Sprint結束時針對產品的會議。PO邀請利害關係人共同討論產品內容並進行修正。

6. Sprint Retro:Sprint Review後,PO和Dev Team針對Sprint團隊的工作模式進行討論。


參考網址:

Scrum Agile 敏捷軟體開發專案入門


補充說明:


Agile的方式

1. 以code為主而不是設計。

2. 根據iterative方法開發。

3. 迅速完成軟體開發,因應外在環境變化。


Agile的五大原則

1. 客戶的參與 - 客戶提出新的系統需求,排出需求開發的優先順序。

2. 增量式交付 - 軟體被切割成一個個交付單位,開發完成後交給客戶。

3. 強調人而不是流程 - 人的技能被納入考量,可運用在各個開發階段。

4. 擁抱改變 - 預期系統需求隨時需要因應改變,做出相對應的措施。

5. 維持簡單 - 盡量降低系統的複雜度,保持簡單。


Agile遇到的問題

1. 難以讓客戶一直保持興趣。

2. 有些人員難以適應依照個人技能規劃的方式進行專案。

3. 既得利益者彼此意見相左,難以將變化項目排序。

4. 維持簡易需要耗費額外的工作量。

5. 有合約問題,需求可能不明確。


XP (Extreme programming) 極限程式開發

XP是實現Agile最有名的方法,有以下特點

1. 一天內會有很多版本

2. 每兩週交付一次版本

3. 每一個版本都需要跑完測試


XP Release Cycle

Select User Story -> 

Break down stories to task -> 

Plan Release -> 

Develop Integrate Test -> 

Release Software -> 

Evaluate System ->

Select User Story -> 

...


XP Practice

1. Small Release 做少量的功能

-> 相當於Agile的增量式交付 (Incremental delivery)

2. Simple Design 設計少量變更

-> 相當於Agile的維持簡單

3. Test first development (TFD) 測試框架先做好,再設計功能性

-> 相當於Agile的擁抱改變

4. Pair programming 配對程式開發,開發者兩人以上一同參與開發,彼此檢查驗證code

-> 相當於Agile的強調人而不是流程

5. Collective Ownership 共同擁有Code,任何人都能修正code

-> 相當於Agile的強調人而不是流程

6. Continuous Integration / Delivery (CI/CD) 當task完成後,必須整合到系統,並且進行完整的測試

-> 相當於Agile的擁抱改變

7. Sustainable pace 延遲不被允許,會影響到品質

-> 相當於Agile的增量式交付 (Incremental delivery)

8. On-site Customer 客戶端派人員參與開發

-> 相當於Agile的客戶參與

留言

手刀來看看