iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
Modern Web

誤打誤撞學了Spring Boot 還當了後端工程師系列 第 29

Day 29 - 開發流程(上) 瀑布式(Waterfall Model) & 敏捷式(Agile Model)

終於快結束30天的挑戰了,專案開發的知識點除了環境安裝、技術學習以外,還有一個重點知識,那就是專案的開發流程,不論是想要開發甚麼樣的大型專案,都一定要先學習各種開發流程,然後尋找最適合現在使用的流程下去開發,這邊會介紹兩個常被人提及的開發模型,瀑布式敏捷式

軟體開發生命週期

在講開發模型以前,要先了解一下軟體開發生命週期(Software Development Life Cycle,SDLC),週期各階段如下圖所示。
https://ithelp.ithome.com.tw/upload/images/20211014/20140728XVP6SSwtkO.png

分析與計畫(Analysis and Planning)

這個步驟為專案開發的起點,當客戶提出需求時,第一個步驟就是計畫,在這個階段需要PM、UI/UX Designer、Developers 以及客戶共同確認幾個目標。

  1. 確認需求
    • 釐清所有需求,確認專案範圍
  2. 估計成本、時間、效益
    • 這個專案會花多少時間、人力、能產出多少收益。
  3. 時程安排
    • 相較於其他專案,這個專案的優先度如何,再根據優先度進行時程安排。

設計和製造產品原型(Design and Prototyping)

當需求與範圍確認完成後,就開始進入設計流程,這個階段交由PM 或UI/UX Designer 負責,在這裡也有分為幾個階段。

  1. Wireframe 線框圖
    Wireframe 是以簡單的草稿圖,展示產品介面及使用者流程,在這個階段可以不用過度在意細節,主要討論功能性以及流程,避免分散討論注意力,同時加速功能規劃的效率。
  2. Mockup 視覺稿
    根據確定好的Wireframe 進行視覺設計上的配色、效果、版面調整等,以增強使用者體驗的效果,這階段必須與PM 討論設計的功能效果以及與前端工程師溝通效果製作與開發成本以進行取捨。

軟體開發(Software Development)

到這裡才正式進入開發的流程,從一開始到這個階段才衍生出不同開發模型,例如Waterfall Model、Agile Model 等,依照公司的文化、步調以及團隊的組成等等去決定使用的開發模型。

測試(Testing)

當然,在開發的過程中,團隊也會進行測試、修Bugs的過程;然而在軟體開發完畢,在將產品正式部署以前,必須再更深入的測試,了解使用者的反應、喜好以及軟體運作的情況,有機會做出進一步的修改。
通常,測試的工作會交由開發團隊中的QA (Quality Assurance)團隊,邀請一小群的Users 去測試Beta 版,利用追蹤工具、埋點去檢視使用者的操作情況。

實施(Implementation)

在這個步驟就是將過去開發的結果部署到正式機上,將產品推向市場,發佈產品給所有使用者。

維運和更新(Maintenance and Updates)

在產品正式部署後,會收到許多User 的反饋,需求就有可能進行更動,當然也有可能跑出許多測試時未發現的Bugs,這個階段就必須因應Users 的反饋進行維護並持續更新。
這裡也就是被稱為生命周期(Life Cycle) 的原因,因為整個開發流程就是不斷循環的一個過程,會根據使用者的需求改變、市場的改變,重複著上述每個步驟持續讓產品更新迭代,才能夠使產品生生不息。

Waterfall Model

Waterfall Model 瀑布模型也稱作瀑布式開發,它是大多數軟體開發的最初標準,基本上就是遵循著SDLC 的流程,必須完整的經歷生命周期的每個步驟,系統化的考慮時間與資源的投入以及分析、設計、技術等。
由於該模型強調開發過程中需有完整的規劃、分析、設計、測試等管理與控制,因此能有效的確保系統品質。
https://ithelp.ithome.com.tw/upload/images/20211014/20140728b6WXXmUCxn.png

優點

  1. 強調開發過程中需有完整的規劃、分析、設計、測試等管理與控制,因此能有效的確保系統的品質。
  2. 十分清楚的階段劃分,易於分工及責任歸屬,讓每個階段工作都交由最專業的人執行。
  3. 適合大型專案開發。

缺點

  1. 由於各個階段的劃分完全固定,階段之間會產生大量的文檔,因此提高了工作量。
  2. 由於開發模型是線性的,客戶只有等到整個專案的開發末期才會看到開發成果,因而增加了開發風險。
  3. 由上一個缺點衍生出另一個更明顯的缺點,專案無法適應客戶需求的變化。

Agile Model

Agile Model 敏捷模型也稱作敏捷式開發,是一種應對快速變化需求的開發方式,強調開發人員團隊成員及客戶之間的緊密協同運作、面對面的溝通、頻繁交付新的軟體版本,能夠很好地適應需求的快速變化。
https://ithelp.ithome.com.tw/upload/images/20211014/20140728K8L6PmV91E.png

優點

在敏捷式開發的過程中,會將專案項目分成多個子項目,各個子項目都會經過設計、開發、測試等流程,在子項目完成時,將成品展示給客戶,若符合需求再向下開發,反之則進行修正改進,如此一來可將整體風險降至最低,並使產品能夠快速適應變化。
由於將開發工作細分化,大大減少了前期規畫和設計的數量,因此可將每個子項目的開發時程減少到一到四週的時間,以保證可以快速迭代,迭代的方式可能不會一次增加足夠的功能可以立即發布使用,目標是在每次迭代都可以有個可用的發行版,因此完整產品的發布或新功能可能需要經過多次迭代。

缺點

因為較注重人員的溝通而忽略文件的重要性,若專案人員流動性太高,會給維護帶來不少難度,特別式專案存在新手較多的時候,老手會比較辛苦。

參考網站

軟體業到底在幹嘛?軟體業開發流程、各職能大揭密!
瀑布模型 - 维基百科,自由的百科全书
敏捷软件开发 - 维基百科,自由的百科全书
Difference between Agile and Waterfall model - javatpoint
【筆記】Waterfall model 瀑布模型介紹 @ 橘子亂說話 :: 痞客邦 ::


上一篇
Day 28 - Spring Security (五) JwtAuthenticationProvider
下一篇
Day 30 - 開發流程(下) Web 開發流程 & 鐵人賽心得
系列文
誤打誤撞學了Spring Boot 還當了後端工程師30

尚未有邦友留言

立即登入留言