# 產品開發與工作流程 - 1. stakeholder (利益需求者) 提出需求 2. PM 撰寫 spec (規格書) 註1 3. wireframe 4. UI designer 繪製 mockup 5. 前端工程師開工 - 註1. Product Requirement Document 產品需求文件 or Product Specifications 產品規格書 ## Product spec 規格書有寫的功能,規則跟步驟才做。 如果要追加東西或規格書沒寫細,工程師自行設定規則,都要重寫進規格書,避免之後有其他同事接手維護或查找時,程式上跟規格書的東西不同,造成問題 _ ## User story 藉由 **user story** 把每個角色需要的流程跟需求寫的更清楚,工程師跟設計師就知道要做什麼 接著製作 **Functional Map**,**UI Flow** 跟**Wireframe** 和 **mockup** 接者準備開發 把要做的步驟拆解成最小的任務單位 **task** ,**cards** ,**issue** ,**ticket** (一樣的東西) _ ## Methodology 軟體開發方法論 1. **瀑布流 waterfall** : 專案型開發。把需求全部想好,才進入開發,一個階段跑完,才可以往下一個階段,一次性的完成後,結束 2. **敏捷開發 Agile** : 產品型開發。小功能小功能的完善產品,提早又可以持續的產出小型的軟體服務給客戶使用。 _ ## 如何實作 Agile 1. **kanban** 看板: 進度版,最有名的案例就是 [Trello](https://trello.com/zh-Hant) 2. **Scrum** 小短跑 : 有名的產品 [Jira Software](https://www.atlassian.com/software/jira)。 跟看板的差異主要是可以有產生時程,通常是幾個禮拜。 先把任務寫進 Backlog,接者把幾個小任務組合起來產生一個 scrum spring 開始進行協作,在 story points那邊工程師會評估難度跟工時, 然後會有一個這組 spring 的 kanban 可以確認任務完成進度,完成後做 review _ ## 工程師的兩週生活 1. 第一天,sprint planning 跟大家開會抓難度跟工時評估,寫story points。把每個小任務需要的工時抓出來,也會抓緩衝時間,跟一個工程師大概飽和度可以吃下多少工時。 3. 第二到第八日,開發時間+ Daily Standup (站著開個小會確認一下大家進度跟有沒有什麼東西被卡住) 5. 第九日:Deploy 部署 7. 第十日:Sprint demo 展示 & retrospective 檢討會議 (輔助工具例如:Reetro) _ ### 關於 **Deploy** 部屬 1. local 環境(本機) 2. development 環境 (dev) 3. staging 環境 / qa 環境 4. production 環境 ### QA 測試 1. SIT 系統整合測試 system integration testing 2. UAT 使用者測試 user acceptance testing 測試完後,如果有錯的話,就會再開 ticket 去處理 跑下一個