1. 程式人生 > >幾種常見軟體過程模型的比較

幾種常見軟體過程模型的比較

瀑布模型 

瀑布模型(經典生命週期)提出了軟體開發的系統化的、順序的方法。其流 程從使用者需求規格說明開始,通過策劃、建模、構建和部署的過程,最終提供一 個完整的軟體並提供持續的技術支援。

優點:

1. 強調開發的階段性,各階段具有順序性和依賴性

2. 強調早期調研和需求分析,推遲編碼實現的觀點

3.  提供了一個摸板,這個摸板使得分析、設計、編碼、測試和支援的方法可以 在該摸板下有一個共同的指導

缺點:

1. 文件驅動,使用者無法及時瞭解產品的情況

2. 依賴早期調研和需求分析,很難適應在許多專案開始階段必然存在的不確定 性。

3.  流程單一,必須要完成前一階段的任務,才能進行下一階段,開發過程中的 成功經驗無法用於本產品。

4.  測試在後期引入,對於系統存在的重大缺陷,如果在可執行程式評審之前沒 有被發現,將可能造成重大損失。

5. 組織龐大,人員閒置。

適用範圍:需求確定,工作能夠採用線性的方式完成的軟體。

增量過程模型

增量過程模型包括增量模型、RAD 模型。

(一)增量模型 增量過程模型以迭代的方式運用瀑布模型,把軟體產品作為一系列的增量構件來設計、編碼、整合和測試。

每個構件由多個相互作用的模組構成,並且能夠完成特定的功能。使用增量模型時,第一個增量往往是核心功能。

優點:

1.能在較短的時間內向使用者提交可完成部分工作的產品。

2.逐步增加產品功能可以使使用者有充裕的時間學習和適應新產品,從而減少一個 全新的軟體可能給客戶組織帶來的衝擊。

3. 規避技術風險

4. 可並行開發構件,加快開發的進度

缺點:

1.  沒有考慮軟體的整體質量和長期的可維護性。

2.  大部分情況是不合適的操作演算法被採用目的為了演示功能,不合適的開發工 具被採用僅僅為了它的方便,還有不合適的作業系統被選擇等等。

3.  由於達不到質量要求產品可能被拋棄,而採用新的模型重新設計

適用範圍:專案在既定的商業要求期限之前不可能找到足夠的開發人員;

 

(二)RAD模型

RAD  模型是一種側重於短暫的開發週期的增量軟體過程模型,它是瀑布模 型的“高速”變體,通過基於構建的構建方法實現快速開發。

開發團隊能夠在非常短的時間內創造出“全功能系統”

優點:

1.開發速度快,質量有保證。

2.對資訊系統特別有效。

缺點:

1.  對於大型的可伸縮的專案,RAD 需要大量的人力資源來建立多個相對的獨立 的 RAD 團隊

2.  如果開發者和使用者沒有為短時間內急速完成整個系統做好準備,RAD 專案將會失敗。

3.  如果一個系統不能合理的模組化,RAD 構件建立會有很多問題。

4.  如果系統需求是高效能,並且需要通過調整構件介面的方式來提高效能,不 能採用 RAD 模型

5.  技術風險很高的情況下

適用範圍:1、 不適合技術風險很高的開發,不適合系統需求是高效能,並且需 要通過調整構件介面的方式來提高效能的產品開發。

2、 適用於工期緊張,又可細分功能,還要有合適的構件

演化過程模型

演化過程模型包括原型開發,螺旋模型,協同開發模型。

(一)原型開發 從需求收集開始,開發者和客戶在一起定義軟體的總體目標,標識已知的需求並且規劃出需要進一步定義的區域。

然後是“快速設計”,它集中於軟體中那些 對客戶可見的部分的表示,這將導致原型的建立,並由客戶評估並進一步精化待 開發軟體的需求。

逐步調整原型使其滿足客戶的需求,這個過程是迭代的。其流 程從聽取客戶意見開始、隨後是建造/修改原型、客戶測試執行原型、然後回頭 往復迴圈直到客戶對原型滿意為止。

由於這種模型可以讓客戶快速的感受到實際 的系統(雖然這個系統不帶有任何質量的保證),所以客戶和開發者都比較喜歡 這種過程模型(對於那些僅僅用來演示軟體功能的公司而言或從來不考慮軟體質

量和不害怕長期維護的公司而言)。

 

優點:

1、能讓人(開發者或客戶)很快見到產品,有成就感。

2、能漸進地啟發客戶提出新的要求或任務。

缺點:

1、 沒有考慮軟體的整體質量和長期的可維護性。

2、 大部分情況是不合適的操作演算法被採用目的為了演示功能,不合適的開發工具被採用僅僅為了它的方便,還有不合適的作業系統被選擇等等。

3、 由於達不到質量要求產品可能被拋棄,而採用新的模型重新設計。

(二)螺旋模型 螺旋模型是一種演進式軟體過程模型,結合了原型的迭代性質和瀑布模型的系統性和可控性的特點,具有快速開發越來越完善軟體版本的潛力。

開發步驟:沿螺線自內向外,每旋轉一圈便開發出更為完善的一個新的軟體版本。

例如,在第一圈,確定了初步的目標、方案和限制條件以後,轉入右上象限,對風險進行識別和分析。

如果風險分析表明,需求有不確定性,那麼在右下 的工程象限內,所建的原型會幫助開發人員和客戶,考慮其它開發模型,並對需求做進一步修正。客戶對工程成果做出評價之後,給出修正建議。

在此基礎上需 再次計劃,並進行風險分析。在每一圈螺線上,風險分析的終點做出是否繼續下 去的判斷。

假如風險過大,開發者和使用者無法承受,專案有可能終止。多數情況 下沿螺線的活動會繼續下去,自內向外,逐步延伸,最終得到所期望的系統。

優點:

1. 強調風險

2. 強調階段質量

3. 提供糾錯的機會

缺點:

1. 每個階段都要提出被選方案,進行風險分析,研發週期長,效率低

2. 必須要轉業的風險分析人員的參與

適用範圍:大型專案

(三)協同開發模型 協同開發模型(協同工程),可以表示唯一系列的框架活動、軟體工程動作和任務 以及相應的狀態。

適用範圍:所有型別的軟體開發

專用過程模型

包括基於構件的開發、形式化方法模型、面向方面的軟體開發。

(一)基於構件的開發基於構件的開發模型具有許多螺旋模型的特點,本質上是演化模型,需要以 迭代方式構建軟體。不同之處在於,基於構件開發模型採用預先打包的軟體構件 開發程式。

開發過程:對所需構件進行評估 → 考慮構件的整合 → 設計系統的軟體框 架→將構件放入框架→進行測試

優點:

1. 構件可複用。提高了開發效率。

2.  採用了面嚮物件的技術

3.  能夠使軟體複用

缺點:過分依賴於構件,構件庫的質量影響著產品質量。

(二)形式化方法模型 形式化方法模型包含了一組活動,他們導致了計算機軟體的數學規約。

形式化方法使得軟體工程師們能夠通過應用一個嚴格的數學符號體系來規約、開發、 和驗證基於計算機的系統。

這種方法的一個變種,稱為淨室軟體工程,已經被 一些組織所採用。

在開發中使用形式化方法時,它們提供了一種機制,能夠消除 使用其它軟體過程模型難以克服的很多問題。

二義性、不完整性、不一致效能被 更容易地發現和糾正,而不是通過專門的評審,是通過對應用的數學分析。

形式化方法提供了可以產生無缺陷軟體的承諾。

優點:

1、形式化規約可直接作為程式驗證的基礎,可以儘早的發現和糾正錯誤(包括 那些其它情況下不能發現的錯誤)。

2、開發出來的軟體具有很高的安全性和健壯性,特別適合安全部門或者軟體錯 誤會造成經濟損失的開發者。

3、能夠開發出無缺陷軟體。

缺點:

1、 開發費用昂貴,而且需要的時間較長。

2、 需要大量的培訓。

3、 不能將這種模型作為對客戶通訊的機制,因為客戶對這些數學語言一無所 知。

適用範圍:不適用於技術水平不高的客戶。

(三)面向方面的軟體開發 將系統分成若干相對較獨立的組成部分,這些部分稱為方面。

優點:超越了子程式和繼承的方法。 缺點:技術還不成熟

統一過程模型

統一過程模型是一種“用例驅動、以體系結構為核心、迭代及增量”的軟體 過程框架,由 UML 方法和工具支援。它是一種增量模型,定義了五個階段:

a、起始階段,包括使用者溝通和計劃活動,強調定義和細化用例

b、 細化階段,包括使用者溝通和建模活動,重點是建立分析和設計模型。

c、構件階段,細化模型設計,並將設計模型轉化為軟體構件實現

d、 轉化階段,將軟體從開發人員傳遞給終端使用者,並由使用者完成 beta 測試和驗 收測試 

e、生產階段,持續地監控軟體的執行,並提供技術支援。

優點:

1. 任何功能開發後就進入測試過程,及早進行驗證

2. 早期風險識別,採取預防措施

缺點:

1. 需求必須在開始之前完全弄清楚,否怎有可能在架構上出現錯誤

2. 必須有嚴格的過程管理,以免使過程退化為原始的試→錯→改模式

3.如果不加控制的讓使用者過早接觸沒有測試完全,版本不穩定的產品可能對用 戶和開發團隊都帶來負面的影響

相關推薦

常見軟體過程模型比較

瀑布模型  瀑布模型(經典生命週期)提出了軟體開發的系統化的、順序的方法。其流 程從使用者需求規格說明開始,通過策劃、建模、構建和部署的過程,最終提供一 個完整的軟體並提供持續的技術支援。 優點: 1. 強調開發的階段性,各階段具有順序性和依賴性 2. 強調早期調

常見加密演算法的比較

1.DES加密演算法 DES加密演算法是一種分組密碼,以64位為分組對資料加密,它的金鑰長度是56位,加密解密用同一演算法。DES加密演算法是對金鑰進行保密,而公開演算法,包括加密和解密演算法。這樣,只有掌握了和傳送方相同金鑰的人才能解讀由DES加密演算法加密的密文資料。因

常見程式碼管理工具比較(2009)

軟體配置管理(Configuration Management)是通過技術或行政手段對軟體產品及其開發過程和生命週期進行控制、規範的一系列措施。 初讀上述定義,感覺不是一點點的有點繞口,枯燥和眩暈了,實際上如果仔細去研究軟體工程的理論書籍,有一大堆關於配置管理的概念,定義,

軟體工程基礎】我對書中軟體過程模型的特點以及優缺點的理解和總結

一、瀑布模型優點:簡單易用,將複雜的軟體開發過程明確分解為幾個順序的步驟,降低開發軟體的複雜性。嚴格,第一是每個步驟的嚴格,每個步驟都有明確的標準和技術審查,儘量減少每個步驟的錯誤,同時減少對下個階段的影響。第二是對文件的嚴格要求,每個階段都有各自的規格說明書。缺點:一次性:

常見SQL分頁方式效率比較

har n) over mage 適用於 not blog toolbar 大數 1.創建測試環境,(插入100萬條數據大概耗時5分鐘)。 create database DBTestuse DBTest--創建測試表create table pagetest(id

昊天善圈講述區塊鏈技術應用開發過程常見的區塊鏈系統類型:

玩遊戲 通過 遊戲 返利 應用 自定義 理財 區塊鏈 區塊鏈寵物系統 1.區塊鏈挖礦系統:手手機挖礦遊戲,挖得多賺得多,玩法自定義2.區塊鏈積分商城:多種積分獲取方式,積分可用於商城交易3.區塊鏈貨幣系統:自行發行數字貨幣,多種獲取貨幣方式,數字貨幣交易商城,打造數字貨幣全

BI軟體常見的鑽取型別:選單式、外鏈式、組合式

本文講給大家介紹BI工具幾種常見的鑽取型別: 選單式、外鏈式、組合式。 鑽取介紹 選單式:點選文字或其它,會彈出一個選擇選單,分別跳轉到不同的頁面。每個選單的鑽取方式可選:跳轉式、摺疊式、逐級式、嵌入式、聯動式、外鏈式、熱區式、浮動式。 外鏈

商業智慧BI軟體常見的鑽取型別:嵌入式、聯動式、熱區式

本文講給大家介商業智慧BI軟體幾種常見的鑽取型別:嵌入式、聯動式、熱區式。 鑽取介紹 嵌入式:設定一個容器,將TableB嵌入顯示到TableA中。 聯動式:點選鑽取表元,聯動重新整理某一個統計圖、文字、表格。聯動方式有3種:圖形聯動、文字聯動、資料聯動。

dbcp,c3po等常見資料庫連線池的使用比較

感覺在介紹之前有必要闡述一下連線池的幾個概念,有助於後邊一些文字的理解。最原始的資料庫使用就是開啟一個連線並進行使用,使用過後一定要關閉連線釋放資源。由於頻繁的開啟和關閉連線對jvm包括資料庫都有一定的資源負荷,尤其應用壓力較大時資源佔用比較多容易產生效能問題。由此使用連線池的作用就顯現出來,他的原

資料結構(一):常見排序演算法比較

排序 0. 常見排序演算法效率比較 時間複雜度及穩定性比較 排序方法 平均方法 最優複雜度 最壞複雜度 輔助空間 穩定性 氣泡排序 O(

自然語言處理中CNN模型常見的Max Pooling操作

CNN是目前自然語言處理中和RNN並駕齊驅的兩種最常見的深度學習模型。圖1展示了在NLP任務中使用CNN模型的典型網路結構。一般而言,輸入的字或者詞用Word Embedding的方式表達,這樣本來一維的文字資訊輸入就轉換成了二維的輸入結構,假設輸入X包含m個字元,而每個

常見的排序演算法及它們之間的比較

1.穩定性比較 插入排序、氣泡排序、二叉樹排序、二路歸併排序及其他線形排序是穩定的 選擇排序、希爾排序、快速排序、堆排序是不穩定的 2.時間複雜性比較 插入排序、氣泡排序、選擇排序的時間複雜性為O(n2) 其它非線形排序的時間複雜性為O(nlog2n) 線形排序的

常見的中文分詞包的分析與比較

1:中文分詞簡介 2:Lucence的中文分詞 3:庖丁分詞簡介 4:IK中文分詞簡介 一:中文分詞簡介     1:分詞演算法分類         -----基於字串匹配的中文分詞方法                eg:句子:我來自瀋陽航空航天大學          

比較C#中常見的複製位元組陣列方法的效率

        在日常程式設計過程中,我們可能經常需要Copy各種陣列,一般來說有以下幾種常見的方法:Array.Copy,IList<T>.Copy,BinaryReader.ReadBytes,Buffer.BlockCopy,以及System.Buffe

11. 常見的有哪排序演算法,試比較其時間複雜度,以及是否穩定,及各自使用的情形

1、幾種常見排序演算法的時間複雜度 排序方法 平均情況 最好情況 最壞情況 直接插入排序 O(n2) O(n) O(n2) 起泡排序 O(n2) O(n) O(n2) 快速排序 O(nlog2n) O(nlog2n)

常見軟體負載均衡的演算法。

主要的幾種負載均衡的演算法都在nginx裡面有用到,下面這篇文章對這幾種演算法介紹比較詳細,請參考。 文中提到了幾種常見的軟體負載均衡的演算法,平均分配(輪詢),加權輪詢;ip hash;fair(最小值負載均衡)這裡需要提到一點,筆者曾見到過一位同事分析採用這個最小值

SQL Server 儲存過程中處理多個查詢條件的常見寫法分析,我們該用那種寫法

最近發現還有不少做開發的小夥伴,在寫儲存過程的時候,在參考已有的不同的寫法時,往往很迷茫, 不知道各種寫法孰優孰劣,該選用那種寫法,以及各種寫法優缺點,本文以一個簡單的查詢儲存過程為例,簡單說一下各種寫法的區別,以及該用那種寫法 專業DBA以及熟悉資料庫的同學請無視。

java專案常見資料庫連線池的使用比較

作者曾經主持以及經歷的幾個產品及專案中,包括了各種資料庫及應用伺服器,基本上幾種常見的資料庫連線池都用到了,根據使用的情況把這些連線池比較一下吧。感覺在介紹之前有必要闡述一下連線池的幾個概念,有助於後邊一些文字的理解。

常見的查詢演算法之比較

一、順序查詢   條件:無序或有序佇列。   原理:按順序比較每個元素,直到找到關鍵字為止。   時間複雜度:O(n) 二、二分查詢(折半查詢)   條件:有序陣列   原理:查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;      如果某

常見web 容器比較 (tomcat、 jboss 、resin、 weblogic、 websphere、 glassfish)

tomcat,Jboss,weblogic容器的作用 Apache:全球應用最廣泛的http伺服器,免費,出自apache基金組織   Tomcat:應用也算非常廣泛的web伺服器,支援部分j2ee,免費,出自apache基金組織   JBoss:開源的應用伺服器,比較受人喜愛,免費(文件要收費)