主頁 > 軟體工程 > 常見開發模型-敏捷開發與瀑布開發模型詳解

常見開發模型-敏捷開發與瀑布開發模型詳解

2022-05-12 08:08:27 軟體工程

引言

在學習軟體工程的時候接觸過一些軟體工程開發模型的相關概念,其中,印象比較深刻的就是瀑布模型和敏捷開發模型,這兩種模型在日常的軟體開發中都是非常常用的,但是它們也有比較大的區別,所以在實際的應用場景也不同,

瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求、分析、設計、編碼、測驗的步驟順序進行,敏捷開發以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟體開發,

敏捷開發模型

敏捷軟體開發是基于敏捷宣言定義的價值觀和原則的一系列方法和實踐的總稱,自組織、跨職能團隊運用適合他們自身環境的實踐進行演進得出解決方案,

敏捷開發以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟體開發,

敏捷開發的特點

敏捷開發的特點就是下面4句話:

「個體與互動」勝過「程序與工具」

「可以作業的軟體」勝過「面面俱到的文擋」

「客戶協作」勝過「合同談判」

「回應變化」勝過「遵循計劃」

在敏捷開發中,軟體專案在構建初期被切分成多個子專案,各個子專案的成果都經過測驗,具備可視、可集成和可運行使用的特征,換言之,就是把一個大專案分為多個相互聯系,但也可獨立運行的小專案,并分別完成,在此程序中軟體一直處于可使用狀態

敏捷開發借助互聯網浪潮開始流行起來,相比瀑布模式,敏捷無疑更加貼近互聯網時代背景下快速發展變化的市場環境以及業務需求,

敏捷開發的三大角色

產品負責人(Product Owner)

主要負責和客戶溝通確定產品的功能和達到要求的標準,并指定軟體的發布日期和交付的內容,同時有權力接受或拒絕開發團隊的作業成果,一般是由產品經理擔任,

流程管理員(Scrum Master)

問題清道夫!主要負責整個Scrum流程在專案中的順利實施和進行,以及清除擋在客戶和開發作業之間的溝通障礙,使得客戶可以直接驅動開發,

開發團隊(Scrum Team)

開發主力!主要負責軟體產品在Scrum規定流程下進行開發作業,人數控制在5~10人左右,每個成員可能負責不同的技術方面,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力;不論程序只問結果!只要能達到目標,不論任何作業時間、方式,

敏捷開發的生命周期

軟體開發生命周期(SDLC)是設計,開發和測驗高質量軟體的一種現象,

在敏捷的SDLC開發程序中,客戶能夠看到結果并了解他/她是否滿意,這是敏捷SDLC模型的優勢之一,

敏捷SDLC的每次迭代都包含跨不同階段的跨職能團隊:

  • 需求收集和分析
  • 設計要求
  • 構造/迭代
  • 部署
  • 測驗
  • 反饋

image

敏捷開發主要包含三種模式:

迭代式開發生命周期

聽說過敏捷的同學一定都聽說過迭代這個東西,有的人說我們要迭代一個版本,有的人說我們要在這個迭代周期內完成什么,不管它指的是具體的軟體版本,還是一段時間,這兩字的含義其實都是一樣的,那就是在整個專案開發程序中,切分出來的一個一個的小時間段,這一個時間段就是一次迭代,通過一次次的迭代,讓整個專案更加清晰,最出名的針對迭代的概念的圖示就是這個圖,
image

從這個圖中我們能看出什么呢?迭代就是不斷豐富細節的程序,每一次的迭代,我們都應該讓這個專案更加的清晰明了,細節也一步步地完善,

增量式開發生命周期

說完迭代式開發程序,我們再來說說增量,迭代和增量是所有敏捷教程都會說的東西,因為這兩個東西很多人容易搞混,增量實際上是不斷的添加待開始專案的產品的模塊功能,就像搭積木一樣地將不同的模板拼成一個完整的產品,同樣地,也有一張圖是專門針對增量這個概念的,
image

看出來增量和迭代的不同了嗎?迭代的時候,有輪廓,不斷完善細節,而增量,沒有整體輪廓,上來就是細節完整的一個部分,不斷地一部分一部分地完成,最終形成一個完整的產品

補充:迭代和增量這兩種圖,同時對應 Web 應用中圖片的兩種展示形式,不知道大家有沒有印象,在網速不好的時候,有些網站打開大圖是一塊一塊出來的,而有些網站打開大圖是先模糊然后一步一步清晰的,有興趣的同學可以搜索查找一下 PhotoShop 中匯出 WEB 格式時選擇連續功能的作用,

混合式開發生命周期

將上面的迭代和增量合起來,也就是在一次迭代中同時包含著增量,這樣的形式就是混合式的生命周期 ,這種情況下可以很好地運用這兩種開發形式的優點,其實,我們目前大部分公司中的迭代沖刺都是這種混合式的生命周期的開發形式,在每次迭代中,我們添加的新功能模塊其實就是在整個專案的輪廓中不斷添加完善細節,

但是,需要注意的,不管是考試還是面試,你還是要能清晰地說明白迭代和增量的區別的,此外,在混合的時候,每次迭代也可以看做是一次傳統的開發程序,總之,混合就是各種混合,吸收各家優勢,

敏捷開發的優點

  1. 更快交付價值
  2. 更低的風險
  3. 擁抱變化
  4. 更好的質量
  5. 持續改進
  6. 更高的客戶滿意度
  7. 更高的團隊滿意度

敏捷開發的缺點

  1. 很難進行準確的資源規劃
  2. 很難準確的定義“輕量的“或必要的檔案
  3. 很難把握整體產品的一致性
  4. 很難預測有限的終點
  5. 很難有效地進行度量

瀑布開發模型

瀑布模型(Waterfall Model)是最早出現的軟體開發模型,是傳統軟體開發方法的代表,在軟體工程中占有重要的地位,它提供了軟體開發的基本框架,1970 年溫斯頓·羅伊斯(Winston Royce)提出了著名的“瀑布模型”,直到 80 年代早期,它一直是唯一被廣泛采用的軟體開發模型,

瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求、分析、設計、編碼、測驗的步驟順序進行,步驟成果作為衡量進度的方法,例如需求規格,設計檔案,測驗計劃和代碼審閱等等,

瀑布式的主要的問題是它的嚴格分級導致的自由度降低,專案早期即作出承諾導致對后期需求的變化難以調整,代價高昂,瀑布式方法在需求不明并且在專案進行程序中可能變化的情況下基本是不可行的,

有論文統計,它是造成70%軟體開發失敗的原因,

瀑布模型的生命周期

瀑布模型將軟體生命周期劃分為 制定計劃、需求分析、軟體設計、程式撰寫、軟體測驗和運行維護 等六個基本活動,并且規定了它們 自上而下、相互銜接的固定次序 ,如同瀑布流水,逐級下落,其嚴格強調檔案,前一個階段的輸出就是下一個階段的輸入,檔案是個階段銜接的唯一資訊,所以很多開發人員好象是在開發檔案,而不是開發軟體,因為要到開發的后期,才可以看到軟體的“模樣”,

image

瀑布模型的優點

瀑布模型作為最典型的預見性方法,其優點主要在于:

  1. 階段清晰:從計劃到開發最后到上線運行,三個階段非常清晰,
  2. 時間順序:每個階段順序必須是從上到下,嚴格按照時間先后進行,
  3. 環環相扣:在每一個階段都必須有產出物然后才能進入到下一個階段進行,
  4. 黑盒模式:每個階段都有各自的角色和分工,各自只關心自己的任務,比如需求階段開發人員無需關注,

瀑布模型的缺點

而其缺點也突出:

  1. 需求隔離:由于各階段的人員只能接觸到自己作業范圍內的東西,所以對客戶需求的理解程度高低不等,開發人員更像是定義為流水線上的工人,
  2. 變更代價大:既然叫做瀑布,就意味著不應該走回頭路,否則如果出現返工,付出的代價會很大,需求變更,編碼人員會很強的抵觸情緒,
  3. 束縛創造性:由于強調檔案管理,所以管理人員會比較喜歡,但是他束縛了開發人員的創造性,
  4. 周期漫長:整個開發持續的生命周期很長,需求和設計的時間會耗費特別多,有時候會占用三分之一甚至更多時間,這樣整個周期就會變長,大都在半年到一年左右的時間,所以更適合需求相對穩定的大專案,

參考

  1. 瀑布式開發與敏捷開發的區別是什么
  2. 八分鐘敏捷開發(scrum)掃盲
  3. 【敏捷1.3】敏捷中的專案開發生命周期
  4. 專案管理 之一 軟體開發生命周期(軟體開發程序、瀑布模型、敏捷開發等)
Either Excellent or Rusty

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/472386.html

標籤:其他

上一篇:常見開發模型-敏捷開發與瀑布開發模型詳解

下一篇:如何根據從下拉串列中選擇專案來系結下拉串列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more