當我們談論軟體開發,許多人腦海中第一個浮現的詞就是「敏捷(Agile)」或者 Scrum。然而,敏捷開發並不是軟體生命週期的全部,它只是其中一種方法。
我們需要理解軟體生命週期(SDLC)的全貌,了解軟體開發不是只有敏捷,敏捷開發也不是只有 Scrum 模型,還有其他各式樣的方法。
瀑布模型的起源,可追溯到 1970 年 Winston Royce 所發表的一篇論文。他最初提出的是一個具有反覆循環的流程,但卻用一張簡單的線性圖來作為開場,沒想到後來業界卻只採用了這張圖,並將其僵化為一種嚴格的開發模式。
後來瀑布模型與軍事專案有著深厚的淵源,這份模型最早被應用於軍方的大型硬體和軟體專案,這些專案的共同特徵是:
瀑布模型的核心思想是:將開發過程拆解成一連串線性、按部就班的階段。這種模式強調在開發前進行詳細的需求分析,並認為完整的文件對於大型專案至關重要。
然而,軟體的「需求」總是隨著市場與用戶而持續演進,瀑布模型的致命弱點,就在於其僵化性:無法應對變動,導致用戶反饋太晚。
面對瀑布模型的困境,工程師們開始尋找更靈活的替代方案。
從 1970 年瀑布式開發方法發表至今,半個世紀以來,軟體開發的方法論從未停止演進。除了 Spiral Model、RAD 和 Agile 之外,實際上還有許多各式各樣的迭代模型與方法持續被提出並實踐。
我們需要知道的是,方法論不是靜態的。它是一直在演進的,目的就是為了因應不斷變化的時代和需求。理解這份演進的本質,能幫助我們跳脫框架,不再只認為軟體開發只有少數幾種模型,而是能夠從中選擇最適合當前專案的解決方案。
在 2001 年催生了敏捷宣言(Agile Manifesto),它倡導四個核心價值觀:
這個敏捷宣言至今仍然影響著各種方法,是各種敏捷框架的核心本質。敏捷的本質,並非追求「快」,而是強調對變動的即時反應與彈性。它不是一套單一的流程,而是一套指導原則,涵蓋了多種開發模式
Scrum 的成功,在於它在「簡單」與「完整」之間取得了絕佳的平衡。它提供了一個清晰、易懂的框架,讓任何背景的團隊都能快速上手。
Scrum 的規則和角色非常簡單:
這份極簡的設計,讓團隊無需花費數月時間來學習複雜的理論,就能立刻開始實踐。它就像一個「敏捷入門工具包」,為那些想要從傳統模式轉向敏捷的團隊,提供了一個低門檻、高效率的起點。
Scrum 並不是唯一方法,也不是唯一標準,許多組織為了因應需求或是組織結構而調整 Scrum 方法,例如:Scrumban、Scaled Agile Framework - SAFe、water-scrum-fall。
最常見的變體是局部導入 Scrum,例如只採用 standup meeting 和 sprint retrospective,並將其與公司現有流程結合。
另一種常見的混合模式是 water-scrum-fall。此流程先透過瀑布模型進行完整的需求規劃,接著以 Scrum 進行開發,最後再回到 waterfall 的驗收與發佈階段。這種做法平衡了事前規劃與敏捷開發,同時滿足特定組織的需求。
瀑布或 Scrum 都只是軟體開發方法中的其中一種,隨著組織的擴張與變化,都會發展出最適合自己的獨特方法。
文章也希望破除以下兩個常見的迷思:
選擇軟體開發方法就跟技術選型一樣,必須綜合評估團隊、業務等等方面,這些方法的終極目標都是希望達成公司的目標。如果下次遇到團隊想要改變方法時可以思考以下幾個問題: