瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型

一、瀑布模型

1、按照傳統的瀑布模型開發軟件,有下述幾個特點。

①階段間具有順序性和依賴性

階段間具有順序性和依賴性,這個特點有兩重含義:

1,必須等前一階段的工作完成之后,才能開始后一階段的工作;

2,前一階段的輸出文檔介紹后一階段的輸入文檔;

因此,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結果。

②推遲實現的觀點

對于規模較大的軟件項目來說,往往編程開始得越早,最終完成開發工作所需要的時間反而越長。

③質量保證的觀點

軟件工程的基本目標是優質,高產。為了保證所開發的軟件的質量,在瀑布模型的每個階段都堅持兩個重要的做法。

(1)每個階段都必須完成規定的文檔,沒有交出合格的文檔介紹沒有完成該階段的任務。完整、準確的合格文檔不僅是軟件開發時期各類人員相互通信的媒介,也是運行時期進行維護的重要依據。

(2)每個階段結束前都要對所完成的文檔進行評審,以便盡早發現問題,改正錯誤。

???????? 事實上,越是早期階段犯下的錯誤,暴露出來的時間越晚,排除故障改正錯誤所需付出的代價也越高。因此,及時審查,是保證軟件質量、降低軟件成本的重要措施。

2、傳統的瀑布模型過于理想化

事實上,人在工作過程中不可能不犯錯誤。在設計階段可能發現規格說明文檔的錯誤,而設計上的缺陷或錯誤可能在實現過程中顯現出來,在綜合測試階段發現需求分析、設計或編碼階段的許多錯誤。因此,實踐的瀑布模型是帶“反饋環”的。

3、瀑布模型有許多優點:

可強迫開發人員采用規范的方法(如結構化技術)

嚴格地規定了每個階段必須提交的文檔

要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證。

缺點:

1.只能通過文檔了解產品,不經過實踐是不切實際的;

2.實際項目很少按照該模型給出的順序進行;

3.用戶常常難以清楚地給出所有需求

4.用戶必須要耐心,等到系統開發完成

瀑布模型的成功在很的程度上是由于它基本上是一種文檔驅動的模型。

但是,“瀑布模型是文檔驅動的”這個事實也是它的一個主要的缺點。

??????? 在可運行的軟件產品交付給用戶之前,用戶只能通過文檔來了解產品是什么樣的。但是僅僅通過寫在紙上的靜態的規格說明,很難全面正確地認識動態的軟件產品。而且事實證明,一旦一個用戶開始使用一個軟件,在他的頭腦中關于該軟件應該做說明的想法就會或多或少地發生變化,這就使得最初提出的需求變得不完全適用了。事實上,要求用戶不經過實踐就提出完整準確的需求,在很多情況下都是不切實際的。總之,由于瀑布模型幾乎完全依賴于書面的規格說明,很有可能導致最終開發出的軟件產品不能真正滿足用戶的需要。

4、瀑布模型適用于:

(1)需求是預知的

(2)軟件實現方法是成熟的

(3)項目周期短

二、快速原型模型

所謂快速原型模型是快速建立起來的可以在計算機上運行的程序,它所能完成的功能往往是最終產品能完成的功能的一個子集。

快速原型模型是不帶反饋環的,這正是這種模型的主要優點

軟件產品的開發基本上線性順序進行的

1,能基本上做到線性順序開發的主要原因如下:

①原型系統已經通過與用戶交互而得到驗證,據此產生的規格說明文檔正確地描述了用戶的需求,因此,在開發過程的后續階段不會因為發現了規格說明文檔的錯誤而進行較大的返工。

②開發人員通過建立原型系統已經學到了許多東西,因此,在設計和編碼階段發生錯誤的可能性也比較小,這自然減少了在后續階段需要改正前面階段所犯錯誤的可能性。

快速原型的本質是“快速”。

按照原型的目的對原型分類:

·? 拋棄式,目的到達即可拋棄,原型不做為最終產品

·? 演化式,系統的形成和發展是逐步完成的,是高度動態迭代和高度動態的,每次迭代都要對系統重新進行規格說明,重新設計和重新評價,所以是對付變化最為有效的方法,這也是與瀑布開發的主要不同點;

·? 增量式,系統是一次一段地增量構造,與演化式原型的最大區別在于增量式開發是在軟件總體設計基礎上進行的。很顯然,其對付變化比演化差;

快速原型模型的優點:

①盡早揭示軟件可能存在的風險和不確定因素,尤其是關于用戶需求一致性方面的風險。

②用戶參與,降低風險,節省后期變更成本,提高項目成功率。

③不帶反饋環,基本上做到線性順序開發。

④開發過程與用戶培訓過程同步,系統易維護,對用戶更友好,產品柔性好。

三、增量模型

增量模型也稱漸增模型

增量模型屬于非整體開發思想的產物

?

使用增量模型開發軟件時,把軟件產品作為一系列的增量構件來設計,編碼,集成和測試。

每個構件由多個相互作用的模塊構成,并且能夠完成特定的功能。

使用增量模型時,第一個增量構建往往實現軟件的基本需求,提供最核心的功能。

采用瀑布模型或快速原型模型開發軟件時,目標都是一次就把一個滿足所有需求的產品提交給用戶。增量模型與之相反,它是分批逐步向用戶提交產品,使得整個軟件被分解成許多增量構件,開發人員一個構件接一個構件地向用戶提交產品。

優點:

①能在較短的時間內向用戶提交可完成部分工作的產品

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

缺點:

風險大,必須保證新增構件不破壞原來已開發出來的產品

?????????????????????????????????????? 風險更大的增量模型

?

四、螺旋模型

螺旋模型的基本思想是:使用原型及其他方法來盡量降低風險。

理解這種模型的一個簡便方法,是把它看作在每個階段之前都增加了風險分析過程的快速原型模型。

螺旋模型有許多優點:

①對可選方案和約束條件的強調有利于已有軟件的重用,也有助于把軟件質量作為軟件開發的一個重要目標

②減少了過多的測試(浪費資金)或者測試不足(產品故障多)所帶來的風險。

③在螺線模型中維護只是模型的另一個周期,在維護和開發之間并沒有本質區別。

螺旋模型的主要優勢在于,它是風險驅動的,但是這也可能是它的一個弱點。除非軟件開發人員具有豐富的風險評估經驗和這方面的專門知識,否則將會出現真正的風險:當項目實際上正在走向災難時,開發人員可能還認為一切正常。

五、噴泉模型

迭代是軟件開發過程中普遍存在的一種內在屬性。

“噴泉”這個詞體現了面向對象軟件開發過程迭代和無縫的特性。

圖中代表不同階段的圓圈相互重疊,這說明表示兩個活動之間存在交迭;而面向對象的方法在概念和表示方式上的一致性,保證了在各項開發活動之間的無縫過渡

事實上,用面向對象方法開發軟件時,在分析、設計和編碼等項開發活動之間并不存在明顯的邊界。

圖中較小的圓圈代表維護,圓圈較小象征著采用了面向對象范型之后維護時間縮短了。

為避免使用噴泉模型開發軟件時開發過程過分無序,應該把應該線性過程(例如,快速原型模型)作為總目標。但是,同時也應該記住,面向對象范型本身要求經常對開發活動進行迭代或求精。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534351.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux基礎命令(1)

1.強大好用的Shell Shell是一個命令工具。Shell(也稱終端或殼)充當的是人與內核(硬件)之間的翻譯官,用戶把一些命令“告訴”終端,它會調用相應的程序服務去完成某些工作。 現在紅帽系統在內的許多主流Lin…

Python二級筆記(7)

知識點: 1,鏈式存儲結構既可以針對線性結構也可以針對非線性結構,鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,增加了存儲空間。 2,對象的基本特點:標識唯一性,分類性,多…

Python二級筆記(8)

知識點: 1,棧支持子程序調用。棧上一種只能在一端進行插入或刪除的線性表,在主程序調用子函數時要首先保存主程序當前狀態,然后轉去執行子程序,最終把子程序的執行結果返回到主程序中調用子程序的位置,繼續…

軟件工程(Rational統一過程)

Rational統一過程(Rational Unified Process,RUP)是由Rational軟件公司推出的一種完整而且完美的軟件過程。 RUP總結了經過多年商業化驗證的六條最有效軟件開發經驗,這些經驗被稱為“最佳實踐”。 1,最佳實踐 (1&am…

軟件工程(敏捷過程和極限編程)

1,敏捷過程 為了使軟件開發團隊具有高效工作和快速響應變化的能力,17位著名的軟件專家于2001年2月聯合起草了敏捷軟件開發宣言。 敏捷軟件開發宣言由下述4個簡單的價值觀聲明組成。 (1)個體和交互勝過過程和工具 優秀的團隊成…

軟件工程(可行性研究講解)

可行性研究 可行性研究的目的,就是用最小的代價在盡可能短的時間內確定問題是否能夠解決。(只是尋找客戶所提需求的解決方案,能干還是不能干的問題。) 可行性研究實質上是要進行一次大大壓縮簡化了的系統分析和設計的過程。 GB…

軟件工程(系統流程圖講解)

系統流程圖是概括地模型物理系統的工具。 基本符號 系統符號 系統流程圖的習慣畫法是使信息在圖中從頂向下或從左到右流動。 例子 某裝配廠有一座存放零件的倉庫,倉庫中現有的各種零件的數量以及每種零件的庫存量臨界值等數據記錄在庫存清單主文件中。當倉庫中零…

軟件工程(數據流圖)

數據流圖有4種基本符號: 正方形或(立方體)表示數據的源點或者終點; 圓角矩形(或圓形)代表變換數據的處理; 開口矩形(或兩條平行橫縣)代表數據存儲; 箭頭表…

網絡互聯基礎(1)

網絡互聯的基本概念 計算機網絡起始于20世紀60年代,當時網絡的概念主要是基于主機(Host)架構的低速串行(Serial)連接,提供應用程序執行、遠程打印和數據服務功能。IBM的系統網絡架構(System Network Architecture,SNA)于非IBM公司的X.25公用…

Python二級筆記(9)

知識點: 1,算法的空間復雜點是指算法在執行過程中所需要的內存空間。 2,結構化程序設計的思想包括:自頂向下、逐步求精、模塊化,限制使用goto語句。 3,字典中的“鍵”可以是整數或者字符串,但…

Python二級筆記(10)

知識點: 1,線性表的鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結構。 2,軟件測試是為了發現錯誤而執行程序的過程,測試要以查找錯誤為中心。 3&#x…

Qt圖形界面編程入門(6)

類的私有繼承方式 ①基類公有成員和保護成員都作為私有成員被派生類繼承,派生類自身的函數可直接訪問他們,但是派生類對象則只能通過本類的公有函數間接地訪問它們。 ②基類的私有成員成為派生類中更加封閉的私有成員,派生類內部成員函數也…

Qt圖形界面編程入門(7)

派生類的構造函數和析構函數 基類的構造函數和析構函數不能被繼承。 在派生類中,如果派生類新增的成員進行初始化,就必須加入新的構造函數。與此同時,對所有從基類繼承下來的成員的初始化工作還是由基類的構造函數完成,必須在派…

Python二級筆記(11)

知識點: 1,在棧中,棧頂指針top動態反映了棧中元素的變化情況,在循環隊列中,隊尾指針和隊頭指針的動態變化決定隊列的長度,在鏈式存儲結構中.無論是循環鏈表還是線性鏈表,插入和刪除元素時&…

Python二級筆記(12)

知識點: 1,機器周期的同步標準是指CPU訪問存儲器一次所需要的時間 2,int()函數可以將整數字符串轉換成整數,也可以將浮點數轉化為整數,但是不能將其他字符串轉換成整數。 3,當max(函數的參數是字典時&am…

Python二級筆記(13)

知識點: 1,機器數,不管是正數還是負數,其補碼的符號位取反即是偏移碼。 2,循環隊列是隊列的一種順序存儲結構 3, break語句會跳出break所在的最內層循環; try中 的語句出錯時會被捕獲異常,執行except下的…

Python二級筆記(14)

知識點: 1,在循環鏈表中,只要指出表中任何一個結點的位置,就可以從它出發不重復地訪問到表中其他所有的結點。 單向鏈表只有從頭指針開始,沿各結點的指針掃描鏈表中的所有結點。 雙向鏈表從任何一一個結點位置出發就可以訪問到表中其他所有結…

Python二級筆記(15)

知識點: 1,數據流圖(DFD)的作用是支持系統功能建模 2,一個數據庫可以有多個外模型(也稱子模式或用戶模型),但概念模型和內模式(物理模式)只能有一個。 3&a…

Linux基礎(管道符、重定向、轉義字符與環境變量)

1、輸入輸出重定向 簡而言之,輸入重定向是指把文件導入到命令中,而輸出重定向則是指把原本要輸出到屏幕的數據信息寫入到指定文件中。 標準輸入重定向(STDIN,文件描述符為0):默認從鍵盤輸入,也…

軟件工程(數據流圖例題詳解)

假設一家工廠的采購部每天需要一張訂貨報表,報表按零件編號排序,表中列出所有需要再次訂貨的零件。對于每個需要再次訂貨的零件應該列出下述的數據:零件編號,零件名稱,訂貨數量,目前價格,主要供…