在開始使用Jira前,我們先來了解瀑布式與敏捷式開發的差別。
這章節你將學會
瀑布式開發遵循著SDLC 的流程,需事先詳細的規劃所有細節,從需求、設計、開發及測試,除了個別完成每個階段所定義的任務之外,每個階段結束後,都要經過嚴格的審核,確認該階段的開發結果正確,才能進行下一個階段,如同瀑布從上到下。
好處是開發人員可以專注做好自己的本職,提高工作效率;壞處是專案無法對應變化,花費的時間很長,質量不高,沒有迭代與反饋,所以只要一個環節出錯,需要付出很大的代價,可能需要返回到上一個階段,甚至会延遲下一個階段。
敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。
與傳統方法相比,它是一種時間限制的迭代方法,以增量的方式開發產品,而不是一次性提交所有產品所有功能,在開發的每個階段都讓客戶看到雛形,根據使用反饋,確認產品是否符合需求,並提出建議與校正方向,不但縮短了交給用戶的時間,提高更高的生產力及降低成本,且創造出符合客戶需求的產品。因此敏捷方法比較適合需求變化大或者開發前期對需求不是很清晰的項目。
在2021年,由17位著名的軟件開發專家共同發表《敏捷宣言》,成立了敏捷聯盟,正式宣佈了對四大價值觀和十二項原則
也就是說,雖然右側項目有其價值,但我們更重視左側項目
敏捷僅是一個框架,在具體執行敏捷開發時,會使用到不同類型的敏捷框架,有管理工作流程的Scrum、Kanban,實踐方法XP(極限編程)、FDD(特徵驅動開發),多個方法來協調多個敏捷團的的工作(如Scrum-of-Scrums、LeSS、SAFe等),其中最廣泛應用的兩種框架是Scrum和Kanban。在敏捷方法中,首要任務是持續交付有價值的產品給客戶,並達成更好的上線成果。
圖片來源
敏捷三角指:價值、質量和約束條件(資源、時間、成本)。
在傳統專案管理,功能是固定的,時間和資源是可變動的,在一開始就要對需求很清楚,因此,你要決定的是時程和成本。而敏捷認為時間是固定的,功能和資源是可變動的,做出來的東西是客戶最需要的功能,而不是很多功能。
介紹了傳統的瀑布式開發與敏捷式開發,下表總結了兩者差異
分類 | 傳統 | 敏捷 |
---|---|---|
重點在於 | 流程 | 人 |
模式 | 由上而下 | 迭代式增量 |
需求 | 是先定義需求 | 藉由反饋獲取真正的需求 |
文件 | 需要有詳細的說明書 | 依實際情況 |
變更 | 避免變更,避免重工 | 可以不斷變更,創造有價值的產品 |
客戶參與 | 需求收集和交付 | 全程參與 |
風險評估 | 因為需求一次完成,可事先預期 | 每次迭代交付的功能,所以難以事先預期 |
最終產品 | 事先預期的結果 | 不斷修正逐漸展現 |
傳統方式比較適合不太複雜的、需求明確、規範嚴謹的系統;敏捷適合需求不明確、容易變更的系統,不管是敏捷開發還是傳統的瀑布開發,最終還是用戶提出的需求。
選擇一個好方法沒有唯一的方式,只看哪種方法適合當前專案的需求。
參考資料:
https://agilemanifesto.org/iso/zhcht/manifesto.html
https://veracityconsultant.com.tw/what-is-agile-management/
https://kojenchieh.pixnet.net/blog/post/438675019
https://zhuanlan.zhihu.com/p/76296053
https://tangmaster.com/agile_manifesto/
https://www.archimetric.com/传统项目管理-vs-敏捷项目管理/