###### tags: `Agile` # Agile 專案流程類型、敏捷開發基本概念 ## 專案流程類型 ### 專案開發方法 瀑布式開發:步驟固定,時程嚴謹 敏捷式開發:適合因應需求更改,循環週期短 --- ### 專案開發順序 1. 排序型 >當專案的<font color="red">需求、⽬標、範圍及執⾏⽅式可以被清楚定義及規劃</font>,<font color="red">適合技術成熟、作業標準化普及</font>。排序型也被稱為<font color="red">流瀑式流程(waterfallprocess)</font>。 2. 重疊型 >專案<font color="red">適合需要縮短時程</font>,透過前後階段的重疊來節省時程。 3. 重複型 > <font color="red">適合經常改變、⾵險⾼的新產品/技術研發專案</font>。重複型也被稱為<font color="red">敏捷式開發(agile development)</font>,強調機動性開發。 --- ## 敏捷開發基本概念 ### 什麼是敏捷開發(Agile) 敏捷開發是⼀種以⼈為中⼼的開發⽅式。在敏捷開發過程,會將專案分成⼤⼩不⼀的⼩項⽬,每個小項目都可以獨⽴運作及測試,因此過程中<font color="red">軟體會⼀直處於可使⽤狀態。</font> --- ### 敏捷宣⾔ The Agile Manifesto ``` 1. 個⼈與互動重於流程與⼯具 (Individuals and interactions over processes and tools) 2. 可⽤的軟體重於詳盡的⽂件(Working software over comprehensive documentation) 3. 與顧客合作重於顧客談判(Customer collaboration over contract negotiation) 4. 因應變化重於遵循計劃(Responding to change over following a plan) ``` --- ### 敏捷原則 The Agile Principles * 最為<font color="red">優先</font>的事情是透過早期與<font color="red">持續交付有價值的軟體</font>來使客戶滿意。 * <font color="red">歡迎需求的變動</font>,即使是在開發的晚期。敏捷式流程駕馭變動來作為客戶的競爭優勢。 * 頻繁的交付⼯作產⽣的軟體,⾃數週⾄數⽉,<font color="red">週期越短越好</font>。 * 領域專家與開發成員必須⼀同作業,並貫穿整個專案開發時期。 * <font color="red">使⽤積極的⼯作成員來建構專案</font>,給予他們環境及⽀援所需的⼀切,信任他們能夠完成⼯作。 * 在開發團隊中最快也<font color="red">最有效的傳遞資訊</font>⽅法就是<font color="red">⾯對⾯的溝通</font>。 * ⼯作產⽣的軟體是衡量進度最主要的依據。 * 敏捷式流程倡導⽔平⼀致的軟體開發 * 專案發起者,開發⼈員以及使⽤者都必須持續的維持專案進度。 * <font color="red">持續重視技術的優勢及設計品質</font> * 最好的架構、需求以及設計會出現在能夠⾃我管理的團隊裡 * 在規律的反覆之間,團隊會反省與思考如何更有效率,然後相對的來調整與修正團隊的開發⽅式 --- ### 敏捷式開發框架們 * Kanban : 將故事拆分為單位較⼩的任務(task),並限制同⼀時間執⾏的任務數量 * XP : 極限編程(Extreme programming)即時回饋、雙⼈編程、程式碼共有 * Scrum : 將故事拆分為單位較⼩的任務,並以衝刺(sprint)為時間週期,將每個任務安排在不同週期內去執⾏ #### 開發常見用語 故事 : 將系統分為⼀個個故事(功能)來當估算單位 雙⼈編程 : 兩⼈共同編寫⼀分程式碼,並隨時交換測試、撰寫程式碼的⼯作。 迭代(Sprint) : 通常為期2~4周,在⼀個周期內做同樣的事情: 規劃、設計、寫程式,測試,並且周期結束後都會有成品供測試。 發布規劃 : 以團隊過去的迭代經驗來估算最終產品完成⽇期(或計畫) --- #### Scrum架構 | 角色 | 會議 | 產出 | | --- | ---- |---- | | 產品負責人|衝刺計畫會議 | 任務| | Scrum Master|Standup Meeting| 使⽤者故事| | 開發⼈員團隊|回顧會議 | Prototype| #### Scrum角⾊ 產品負責人 : 類似客戶代表、站在客戶/需求⽅的⽴場,去設定產品的待辦項⽬及優先程度,並負責向團隊說明客戶的需求。 Scrum Master : Scrum Master必須熟知整個Scrum敏捷開發流程,以便能夠督促產品負責⼈和團隊的運作。 開發⼈員團隊 : 通常是產品實做者,可能是分析師、測試員、架構師、設計師、⼯程師等等。 #### Scrum會議 衝刺計畫會議 : ⽤來決定該衝刺期間的待辦項⽬,以及團隊的衝刺任務 Standup Meeting : 每位成員報告昨天完成的項⽬、今天預計做的⼯作、執⾏專案遇到的問題 回顧會議 : 檢討上個週期的成果制定下個階段⽬標 --- ## Design Thinking ### 設計思考 同理⼼(Empathize) : 觀察、提問 定義問題(Define) : 使⽤者需要___,因為對他來說___很重要 創意發想(Ideate) : 要得到好的點⼦,⾸先要獲得很多點⼦ 建⽴原型(Prototype) : 以低時間/金錢成本製作 測試(Test) : 不引導測試者