1. 程式人生 > >軟體開發的常用開發模式

軟體開發的常用開發模式

軟體開發常用的幾種開發模式

● 瀑布開發模式(也叫線性開發模式)

在瀑布開發模式中,所有的開發活動都遵循一定的順序。在軟體開發裡,這些活動的通常順序是:需求的商業價值分析、需求的細化和需求說明書的制定、預研、方案和架構設計、編碼實現、測試、後期運維維護。


瀑布模型的特點是所有的開發活動動都是順序執行的,不能倒退。就像瀑布裡的水不能從瀑布底部回到瀑布頂部一樣。

瀑布模式是一種專案開發架構。這種架構不僅僅應用在軟體開發上,其實在人類活動的各個地方都能見到瀑布模式。比如房屋的建造:前期的地質勘查,建築的架構藍圖設計,施工和施工中的監測,完工後的檢驗和後期維護。

瀑布模型的主要優點優點在於每個階段的職責清晰,便於檢查。清晰定義出了各個階段的輸入和輸出,隔離了不相鄰活動階段之間的依賴,便於提高階段活動的效率。

瀑布模型的主要缺點在於系統只有在整個專案的最末期才能見到真正的成品。如果前期的需求、設計有不符合使用者的期望或實際情況的,在整個專案的最末端再進行修改會極大增加整個專案的成本。而在軟體開發領域,後期的需求改變和設計改變的可能性較大,也可以說是需求和設計的不確定性較高。在這種情況下,這些改變需要的後期改動在軟體開發專案的許多時候對專案的按時完成是致命的。在軟體研發的歷史上這種例子數不勝數,比如微軟的Windowns Vista系統的開發就是一個例子

當然,針對瀑布模型的缺點,也有固定的方法可以在一定程度上進行緩解。在專案管理流程中的變更控制流程就是一個很好的例子。在專案團隊裡有變更控制委員會,對於所有在專案實施過程中發生的變更,都需要走變更控制流程,進行書面的評估、批准、溝通和實施等一系列流程,保證變更的有效

瀑布模型適用於不確定性較低的軟體專案。比如使用固定、成熟框架的軟體產品,尤其是一些相對小的例行常規專案。但如果是一些需要新技術,或是是新市場的創新性專案,瀑布模型的適用性就會大大折扣

● 迭代式開發模式 (也叫增量式開發模式)

迭代式開發模式是指將整個軟體的開發過程劃分成多個迭代階段。在每個迭代階段中,只完成軟體的一小部分功能。但是在這個迭代中,還是會包括開發的大部分活動,比如需求的分析,開發、測試。


迭代開發的最大優點是可以通過儘快的釋出可工作的產品,得到市場或使用者的反饋,然後進行修改,進而降低整個軟體專案在需求、技術和進度上的風險,或者也可以說降低了不確定性。

迭代開發的最大缺點,或者說是最大難點,就是比較不容易做到又能保證每個階段的持續功能輸出,又能做到高的效率和質量。具體表現在要在一個迭代完成所有開發階段的活動,對外界環境和人員的素質要求都比較高。比如,在現代工業模式裡,引以為傲的通過流水線的細化分工達到高產出的效率在迭代模式裡就比較困難。因為它要求團隊一起做需求分析、一起做開發、一起做測試,一起負責端到端的功能,對不同方面的知識,技巧要求都比較高。

在實際中,迭代開發模式更適用於需要快速變化的領域。比如使用新技術或者開拓新市場的產品。因為快遞的反饋比穩定的預測更為重要。

而對於大軟體系統的開發,比如超過500人,團隊還分佈在異地。純粹的迭代開發模式就不一定比瀑布模式要好。或者說,對於大軟體系統開發,除了極少數的頂尖企業,絕大部分的軟體公司都做得不怎麼樣。引用《人月神話》作者的比喻,這些公司都在大系統的焦油坑裡掙扎

● 迭代式開發模式的改進

迭代開發模式一個較大的架構。其中演化出了不同的細分、改進模式

● 迭代式開發模式的改進 - Time Boxed 定時開發

定時開發基於迭代開發。特點在於

1. 每次迭代有固定的時間

2. 每次迭代完成後都有一定的可釋出的功能輸出

● 迭代式開發模式的改進 - Continuous Flow 持續工作流

持續工作流也是居於迭代開發模式。最大的區別在於持續工作流除了要求每個迭代的持續釋出,加入了精益(Lean)的思想:通過控制半成品(Work in Progress, WIP)的數量,達到降低在整個開發流程中的浪費(Waste)的目的

不同開發模式的實際使用

在任何領域,永遠都不存在一種東西絕對比一種東西好。具體到軟體開發領域,沒有任何一種開發模式可以絕對地比另外一種好。用軟體行業的話來說,就是沒有銀彈(No Silver Bullet)。


具體的例子就是,在實際的絕大部分軟體公司裡,並不會單純地使用上面的一種開發模式,而更多的是使用混合的開發模式。這些混合的模式需要結合不同公司,不同產品的不同情況。這樣才可以達到取長補短的效果。畢竟,最為重要的,不是一個組織使用什麼樣的開發模式,而是在這種模式下是否能更好的實現長期和短期的質量和效率。

主要參考資料

1. Software Development Metrics, David Nicolette, 2015

相關推薦

軟體開發常用開發模式

軟體開發常用的幾種開發模式 ● 瀑布開發模式(也叫線性開發模式) 在瀑布開發模式中,所有的開發活動都遵循一定的順序。在軟體開發裡,這些活動的通常順序是:需求的商業價值分析、需求的細化和需求說明書的制定、預研、方案和架構設計、編碼實現、測試、後期運維維護。 瀑布模型的特

軟體開發常用英文單詞縮寫

全稱 略稱 備註  argument arg   parameter para   error err &n

開發常用軟體

開發工具類 1.phpstorm 程式碼編輯器 2.sublime 程式碼編輯器 3.notepad++ 程式碼編輯器 資料庫類 1.navicat 資料庫管理軟體 其它 1.teamviewer 遠端桌面訪問工具 2.postman 介面除錯工具 3.谷歌訪

Java開發常用的一些軟體工具和外掛

總結一下自己在java開發中常用的一些軟體工具,外掛,容器,中介軟體等。 常用軟體及外掛 一.intellij idea(及好用的整合外掛): 1.iBATIS/MyBatis mini-plugin:可以直接從sql介面類點入配置mapper.xml檔案。 2.Alibaba Ja

淺談TDD、BDD與ATDD軟體開發 (敏捷開發模式)

這些知識之前就瞭解了一點,還沒來得急總結,現在總結一下。 1. 首先了解一下這三個開發模式都是什麼意思: TDD:測試驅動開發(Test-Driven Development)測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方法論。TDD的原理是在開發功能程式碼之

敏捷軟體開發:原則、模式與實踐pdf

第Ⅰ部分 敏捷開發第一章 敏捷實踐1.1 敏捷聯盟1.2 原則1.3 結論參考文獻第二章 極限程式設計概述2.1 極限程式設計實踐2.2 結論參考文獻第三章 計劃3.1 初始探索3.2 釋出計劃3.3 迭代計劃3.4 任務計劃3.5 迭代3.6 結論參考文獻第四章 測試4.1 測試驅動的開發方法4.2 驗收測

軟體開發常用工具以及

程式碼編輯軟體 Notepad++、  Source Insight程式碼版本管理 github svn 程式碼比較 Beyond CompareIDE 環境的使用都比較便捷,按照自己的使用習慣,設定合

軟體開發常用英文縮寫

CAD:計算機輔助設計 , 指利用計算機及其圖形裝置幫助設計人員進行設計工作。 CAI: 計算機輔助教學,是在計算機輔助下進行的各種教學活動,以對話方式與學生討論教學內容、安排教學程序、進行教學訓練的方法與技術。 CAM:計算機輔助製造 ,是將計算機應用於製

iOS 開發常用的23種設計模式簡介

//聯絡人:石虎 QQ:1224614774 暱稱:嗡嘛呢叭咪哄 一、概念  設計模式主要分三個型別:建立型、結構型和行為型。 二、建立型有:  1.單例模式(Singlet

CentOS下常用開發軟體安裝

記錄了安裝CentOS,以及在CentOS下安裝及使用Epel、Convmv、JDK、Nginx、Mysql、Nexus、Confluence等。 F11 - 設定光碟機啟動,放入CentOS CD1,根據提示再放入CD2 ,最後再放入CD1 漫長的等待... 設定語言為 英文,設定字型大小...最

15款Django開發常用軟體

是一款高階的Python Web框架,可以幫助開發者快速建立web應用。我們這裡整理了15款Django開發中常用的軟體包,學會使用它們可以節省大量開發時間,提高開發效率。同時,也給出了它們的pip安裝方法。下面一起來看下。  認證和授權 一款社交賬號認證/註冊機制,支援D

深入分析JavaWeb Item18 -- JavaWeb的兩種常用開發模式

SUN公司推出JSP技術後,同時也推薦了兩種web應用程式的開發模式,一種是JSP+JavaBean模式,一種是Servlet+JSP+JavaBean模式。 一、JSP+JavaBean開發模式 1.1、jsp+javabean開發模式架構   

嵌入式開發常用工具軟體

專案進度管理:Microsoft project 軟體版本控制軟體:Git、SVN、CVS bug管理軟體:bugzilla 檔案管理:有道雲筆記、evernote、Wiki Server、Goo

設計模式之美學習(九):業務開發常用的基於貧血模型的MVC架構違背OOP嗎?

我們都知道,很多業務系統都是基於 MVC 三層架構來開發的。實際上,更確切點講,這是一種基於貧血模型的 MVC 三層架構開發模式。 雖然這種開發模式已經成為標準的 Web 專案的開發模式,但它卻違反了面向物件程式設計風格,是一種徹徹底底的面向過程的程式設計風格,因此而被有些人稱為反模式(anti-patter

ios開發常用的宏

sso dex osi comm ignore scac va_arg pragma weakself 轉自 http://www.cocoachina.com/bbs/read.php?tid=1719540 #define NavigationBa

斑布生活家系統開發詳解模式設計

log 所有 http 裏的 詳解 啟動 一次 什麽 氣體 斑布生活家系統開發(李想.185.6504.8478)根據化石研究,史前時代的始祖鳥被認為是最早的飛行鳥類,它在許多方面已顯現鳥的一些雛形,例如全身長有羽毛和翅膀、具有明顯的叉骨等。這些證據表明,鳥類的飛行能力應該

系統開發之設計模式

系統開發 系統設計 設計模式 系統設計模式Control plane和data plane別離這兩個概念簡直是networks 101的入門概念。Juniper上世紀末興起的主要原因之一即是嚴厲區別界定control plane和data plane,然後用ASIC完結data plane。Data plan

CDN公共庫、前端開發常用插件一覽表(VendorPluginLib)

設計師 ping 項目 遮罩 3.1 輕量 大全 測試 ide =======================================================================================前端CDN公共庫==========

chrome瀏覽器開發常用快捷鍵之基礎篇-遁地龍卷風

rom 後臺 加載網頁 打開鏈接 上一個 tps 保存 參考 瀏覽器開發 1.標簽頁和窗口快捷鍵   打開新的標簽頁,並跳轉到該標簽頁 Ctrl + t   重新打開最後關閉的標簽頁,並跳轉到該標簽頁 Ctrl + Shift + t   跳轉到下一個打開的標簽頁 Ctrl

Android開發學習--MVP模式入門

handle ges span findview list pass override appcompat over 1、模型與視圖完全分離,我們可以修改視圖而不影響模型2、可以更高效地使用模型,因為所有的交互