過程模型總分為五大類:
1.慣例過程模型
2.瀑布模型(又叫作生命週期模型)
3.增量過程模型: 包括增量模型、RAD模型
4.演化過程模型: 包括 原型開發模型、螺旋模型、協同開發模型
5.專用過程模型: 包括 基於構件的開發模型、形式化方法模型、面向方面的軟體開發
1.瀑布模型
它提出了軟體開發的系統化的、順序的方法。其流程從系統開始,隨後是需求分析、設計、編碼、測試、支援。這種模型是最早也是應用最廣泛的軟體過程模型(雖然這種模型會引起“堵賽狀態”)。
優點:
1.它提供了一個模板,這個模板使得分析、設計、編碼、測試和支援的方法可以在該摸板下有一個共同的指導。
2.雖然有不少缺陷但比在軟體開發中隨意的狀態要好得多。
缺點:
1.實際的專案大部分情況難以按照該模型給出的順序進行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。
3.客戶要等到開發週期的晚期才能看到程式執行的測試版本,而在這時發現大的錯誤時,可能引起客戶的驚慌,而後果也可能是災難性的。
4.採用這種線性模型,會經常在過程的開始和結束時碰到等待其他成員完成其所依賴的任務才能進行下去,有可能花在等待的時間比開發的時間要長。我們稱之為“堵賽狀態”。
適用範圍:
1. 使用者的需求非常清楚全面,且在開發過程中沒有或很少變化
2. 開發人員對軟體的應用領域很熟悉
3. 使用者的使用環境非常穩定
4. 開發工作對使用者參與的要求很低
顯著特點:
按工序將問題化簡,將功能的實現與設計分開,便於分工協作
2.增量模型
這種模型融合了線性順序模型的基本成份和原型實現模型的迭代特徵。增量模型採用隨著日程時間的進展而交錯的線性序列。每一個線性序列產生軟體的一個可釋出的“增量”。當使用增量模型時,第一個增量往往是核心的產品,也就是說第一個增量實現了基本的需求,但很多補充的特徵還沒有釋出。客戶對每一個增量的使用和評估,都做為下一個增量釋出的新特徵和功能。這個過程在每一個增量釋出後不斷從復,直到產生了最終的完善產品。增量模型強調每一個增量均釋出一個可操作的產品。
1.採用增量模型的優點是人員分配靈活,剛開始不用投入大量人力資源
3.可先發布部分功能給客戶,對客戶起到鎮靜劑的作用
1.並行開發構件有可能遇到不能整合的風險,軟體必須具備開放式的體系結構
2.增量模型的靈活性可以使其適應這種變化的能力大大優於瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟體過程的控制失去整體性
1.進行已有產品升級或新版本開發,增量模型是非常適合的
2.對完成期限嚴格要求的產品,可以使用增量模型
3.對所開發的領域比較熟悉而且已有原型系統,增量模型也是非常適合的
引進了增量包的概念,無須等到所有需求都出來,只要某個需求增量包出來即可進行開發
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.螺旋模型
這是一個演化軟體過程模型,它將原型實現的迭代特徵和線性順序模型中控制的和系統化的方面結合起來。使得軟體的增量版本的快速開發成為可能。在螺旋模型中,軟體開發是一系列的增量釋出。在每一個迭代中,被開發系統的更加完善的版本逐步產生。螺旋模型被劃分為若干框架活動,也稱為任務區域
1.設計上的靈活性,可以在專案的各個階段進行變更
2.以小的分段來構建大型系統,使成本計算變得簡單容易
3.客戶始終參與每個階段的開發,保證了專案不偏離正確方向以及專案的可控性
4.隨著專案推進,客戶始終掌握專案的最新資訊 , 從而他或她能夠和管理層有效地互動
5.客戶認可這種公司內部的開發方式帶來的良好的溝通和高質量的產品
1.採用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的專案開發中,如果未能夠及時標識風險,勢必造成重大損失
2.過多的迭代次數會增加開發成本,延遲提交時間
3.很難讓使用者確信這種演化方法的結果是可以控制的。建設週期長,而軟體技術發展比較快,所以經常出現軟體開發完畢後,和當前的技術水平有了較大的差距,無法滿足當前使用者需求
對於新近開發,需求不明確的情況下,適合用螺旋模型進行開發,便於風險控制和需求變更,螺旋模型只適合於大規模的軟體專案
引入了其他模型不具備的風險分析,使軟體在無法排除重大風險時有機會停止,以減小損失
4.RAD模型
快速應用開發(RAD)是一個線性順序的軟體開發模型,強調極短的開發週期。RAD 模型是線性順序模型的一個“高速”變種,透過使用基於構件的建造方法獲得了快速開發
1.開發速度快,質量有保證
2.對資訊系統特別有效
1.對大型專案而言,RAD需要足夠的人力資源
2.開發者和客戶都要實現承諾,否則將導致失敗
3.並非所有系統都適合:不能合理模組化的系統、高效能需求並且要調整構件介面的系統均不適合
1.不適合技術風險很高的開發,不適合系統需求是高效能,並且需要透過調整構件介面的方式來提高效能的產品開發。
2.適用於工期緊張,又可細分功能,還要有合適的構件
使用基於構件的建造方法獲得了快速開發,使得一個開發組能夠在很短時間內(如60 到90 天)創建出“功能完善的系統”
5.迭代模型
迭代包括產生產品釋出(穩定、可執行的產品版本)的全部開發活動和要使用該釋出必需的所有其他外圍元素。在某種程度上,開發迭代是一次完整地經過所有工作流程的過程:需求分析、設計、實施和測試工作流程。實質上,它類似小型的瀑布式專案。RUP認為,所有的階段都可以細分為迭代。每一次的迭代都會產生一個可以釋出的產品,這個產品是最終產品的一個子集
1.降低了在一個增量上的開支風險。如果開發人員重複某個迭代,那麼損失只是這一個開發有誤的迭代的花費
2.降低了產品無法按照既定進度進入市場的風險。透過在開發早期就確定風險,可以儘早來解決而不至於在開發後期匆匆忙忙
3.加快了整個開發工作的進度。因為開發人員清楚問題的焦點所在,他們的工作會更有效率
4.由於使用者的需求並不能在一開始就作出完全的界定,它們通常是在後續階段中不斷細化的。因此,迭代過程這種模式使適應需求的變化會更容易些
在專案早期開發可能有所變化 ,需有一個高素質的專案管理者和一個高技術水平的開發團隊
1.在專案開發早期需求可能有所變化
2.分析設計人員對應用領域很熟悉
3.高風險專案
4.使用者可不同程度地參與整個專案的開發過程
5.使用面向物件的語言或統一建模語言
6.使用CASE工具
7.具有高素質的專案管理者和軟體研發團隊
能顯著減少風險
過程模型總分為五大類:
1.慣例過程模型
2.瀑布模型(又叫作生命週期模型)
3.增量過程模型: 包括增量模型、RAD模型
4.演化過程模型: 包括 原型開發模型、螺旋模型、協同開發模型
5.專用過程模型: 包括 基於構件的開發模型、形式化方法模型、面向方面的軟體開發
1.瀑布模型
它提出了軟體開發的系統化的、順序的方法。其流程從系統開始,隨後是需求分析、設計、編碼、測試、支援。這種模型是最早也是應用最廣泛的軟體過程模型(雖然這種模型會引起“堵賽狀態”)。
優點:
1.它提供了一個模板,這個模板使得分析、設計、編碼、測試和支援的方法可以在該摸板下有一個共同的指導。
2.雖然有不少缺陷但比在軟體開發中隨意的狀態要好得多。
缺點:
1.實際的專案大部分情況難以按照該模型給出的順序進行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。
3.客戶要等到開發週期的晚期才能看到程式執行的測試版本,而在這時發現大的錯誤時,可能引起客戶的驚慌,而後果也可能是災難性的。
4.採用這種線性模型,會經常在過程的開始和結束時碰到等待其他成員完成其所依賴的任務才能進行下去,有可能花在等待的時間比開發的時間要長。我們稱之為“堵賽狀態”。
適用範圍:
1. 使用者的需求非常清楚全面,且在開發過程中沒有或很少變化
2. 開發人員對軟體的應用領域很熟悉
3. 使用者的使用環境非常穩定
4. 開發工作對使用者參與的要求很低
顯著特點:
按工序將問題化簡,將功能的實現與設計分開,便於分工協作
2.增量模型
這種模型融合了線性順序模型的基本成份和原型實現模型的迭代特徵。增量模型採用隨著日程時間的進展而交錯的線性序列。每一個線性序列產生軟體的一個可釋出的“增量”。當使用增量模型時,第一個增量往往是核心的產品,也就是說第一個增量實現了基本的需求,但很多補充的特徵還沒有釋出。客戶對每一個增量的使用和評估,都做為下一個增量釋出的新特徵和功能。這個過程在每一個增量釋出後不斷從復,直到產生了最終的完善產品。增量模型強調每一個增量均釋出一個可操作的產品。
優點:
1.採用增量模型的優點是人員分配靈活,剛開始不用投入大量人力資源
3.可先發布部分功能給客戶,對客戶起到鎮靜劑的作用
缺點:
1.並行開發構件有可能遇到不能整合的風險,軟體必須具備開放式的體系結構
2.增量模型的靈活性可以使其適應這種變化的能力大大優於瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟體過程的控制失去整體性
適用範圍:
1.進行已有產品升級或新版本開發,增量模型是非常適合的
2.對完成期限嚴格要求的產品,可以使用增量模型
3.對所開發的領域比較熟悉而且已有原型系統,增量模型也是非常適合的
顯著特點:
引進了增量包的概念,無須等到所有需求都出來,只要某個需求增量包出來即可進行開發
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.螺旋模型
這是一個演化軟體過程模型,它將原型實現的迭代特徵和線性順序模型中控制的和系統化的方面結合起來。使得軟體的增量版本的快速開發成為可能。在螺旋模型中,軟體開發是一系列的增量釋出。在每一個迭代中,被開發系統的更加完善的版本逐步產生。螺旋模型被劃分為若干框架活動,也稱為任務區域
優點:
1.設計上的靈活性,可以在專案的各個階段進行變更
2.以小的分段來構建大型系統,使成本計算變得簡單容易
3.客戶始終參與每個階段的開發,保證了專案不偏離正確方向以及專案的可控性
4.隨著專案推進,客戶始終掌握專案的最新資訊 , 從而他或她能夠和管理層有效地互動
5.客戶認可這種公司內部的開發方式帶來的良好的溝通和高質量的產品
缺點:
1.採用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的專案開發中,如果未能夠及時標識風險,勢必造成重大損失
2.過多的迭代次數會增加開發成本,延遲提交時間
3.很難讓使用者確信這種演化方法的結果是可以控制的。建設週期長,而軟體技術發展比較快,所以經常出現軟體開發完畢後,和當前的技術水平有了較大的差距,無法滿足當前使用者需求
適用範圍:
對於新近開發,需求不明確的情況下,適合用螺旋模型進行開發,便於風險控制和需求變更,螺旋模型只適合於大規模的軟體專案
顯著特點:
引入了其他模型不具備的風險分析,使軟體在無法排除重大風險時有機會停止,以減小損失
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.RAD模型
快速應用開發(RAD)是一個線性順序的軟體開發模型,強調極短的開發週期。RAD 模型是線性順序模型的一個“高速”變種,透過使用基於構件的建造方法獲得了快速開發
優點:
1.開發速度快,質量有保證
2.對資訊系統特別有效
缺點:
1.對大型專案而言,RAD需要足夠的人力資源
2.開發者和客戶都要實現承諾,否則將導致失敗
3.並非所有系統都適合:不能合理模組化的系統、高效能需求並且要調整構件介面的系統均不適合
適用範圍:
1.不適合技術風險很高的開發,不適合系統需求是高效能,並且需要透過調整構件介面的方式來提高效能的產品開發。
2.適用於工期緊張,又可細分功能,還要有合適的構件
顯著特點:
使用基於構件的建造方法獲得了快速開發,使得一個開發組能夠在很短時間內(如60 到90 天)創建出“功能完善的系統”
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.迭代模型
迭代包括產生產品釋出(穩定、可執行的產品版本)的全部開發活動和要使用該釋出必需的所有其他外圍元素。在某種程度上,開發迭代是一次完整地經過所有工作流程的過程:需求分析、設計、實施和測試工作流程。實質上,它類似小型的瀑布式專案。RUP認為,所有的階段都可以細分為迭代。每一次的迭代都會產生一個可以釋出的產品,這個產品是最終產品的一個子集
優點:
1.降低了在一個增量上的開支風險。如果開發人員重複某個迭代,那麼損失只是這一個開發有誤的迭代的花費
2.降低了產品無法按照既定進度進入市場的風險。透過在開發早期就確定風險,可以儘早來解決而不至於在開發後期匆匆忙忙
3.加快了整個開發工作的進度。因為開發人員清楚問題的焦點所在,他們的工作會更有效率
4.由於使用者的需求並不能在一開始就作出完全的界定,它們通常是在後續階段中不斷細化的。因此,迭代過程這種模式使適應需求的變化會更容易些
缺點:
在專案早期開發可能有所變化 ,需有一個高素質的專案管理者和一個高技術水平的開發團隊
適用範圍:
1.在專案開發早期需求可能有所變化
2.分析設計人員對應用領域很熟悉
3.高風險專案
4.使用者可不同程度地參與整個專案的開發過程
5.使用面向物件的語言或統一建模語言
6.使用CASE工具
7.具有高素質的專案管理者和軟體研發團隊
顯著特點:
能顯著減少風險