常見的軟體過程模型有瀑布模型、原型模型、增量模型、噴泉模型、rup(統一軟體過程)、敏捷過程等。不同的軟體過程模型將軟體生命週期劃分的工作階段是不相同的,再加上所開發的軟體的型別及專案特點也各不相同。
1、瀑布模型
瀑布模型的做法很形象,軟體開發過程像瀑布一樣,一層接著一層,完成上層步驟之後,接著開展下一項。前一階段會形成乙個文件,後一階段根據這個文件進行操作。
適用情形:瀑布模型是以文件作為驅動、適合於軟體需求很明確的軟體專案的模型。
優點:1、容易理解,管理成本低。2、強調開發的階段性早期計畫及需求調查和產品測試。
缺點:1、客戶必須能夠完整、正確和清晰地表達他們的需要。2、太過於注重文件、很難動態的了解跟進專案的程序。3、專案結束時,出現大量的整合和測試工作。4、需求或設計中的錯誤往往只有到了專案後期才能夠被發現,對於專案風險的控制能力較弱,從而導致專案常常延期完成,開發費用超出預算。
注意:瀑布模型每一環節是帶有反饋的,當後一階段發現文件出現了錯誤,需要交還給前一階段進行文件的修改。
v模型是瀑布模型的變體
2、原型模型
快速原型搭建的是乙個具有初級功能的專案,這個專案與客戶要求具有一定的功能,但只是其子集,或者說完成了其中的一部分功能,並沒有全部實現。它在搭建好之後,會請顧客來進行試用,對於試用完之後的產品,顧客一般會提出改進意見,或者對於之前自己提出的需求有所更改,根據最新的指導意見,開發人員再進行開發。快速原型對比於瀑布模型,所增加的內容就是變化需求的處理。
適用情形:適用於對軟體需求缺乏準確認識的情況。
優點:快速原型模型在開發每一階段,開發人員根據使用者提出的需求能夠快速地更改專案程式,不需要大面積返工。開發人員通過建立模型,知道了什麼該做,什麼不該做。減少了前期所犯的錯誤。因此不需要反饋環。
缺點:原型系統主要是要快速的建立起模型,以此確定使用者需求,當使用者需求確定之後,就直接將原型模型拋棄。
注意:快速原型模型是不帶有反饋環的,這是因為其自身的特點所決定的,自身特點在上段中已介紹清楚。
根據原型的目的,原型可分為三類:
探索型原型:目的是弄清目標的要求,確定所希望的特性,並**多種方案的可行性。
實驗型原型:目的是驗證方案或演算法的合理性,是在大規模開發和實現前,用於考查方案是否合適、規格說明是否可靠等。
演化型原型:目的是將原型作為目標系統的一部分,通過對原型的多次改進,逐步將原型演化成最終的目標系統。
2.1螺旋模型
螺旋模型將開發過程分為幾個螺旋週期,每個螺旋週期大致和瀑布模型相符合。
適用情形:特別適用於龐大、複雜並且具有高風險的系統。
優點:1、螺旋模型強調風險分析,使得開發人員和使用者對每個演化層出現的風險有所了解,從而做出應有的反應。2、支援使用者需求的動態變化,為使用者參與軟體開發的所有關鍵決策提供了方便,有助於提高軟體的適應能力,並且為專案管理人員及時調整管理決策提供了便利,從而降低了軟體開發的風險。
缺點:1、需要開發人員具有相當豐富的風險評估經驗和專門知識。2、過多的迭代次數會增加開發成本,延遲提交時間。
3、增量模型
增量模型不是一次**付完成,而是一次次增加產量。增量模型對於不同的構件分別進行搭建,增量模型要求軟體系統是開放的。第一次增量模型構建的時候,需要實現軟體的核心基本功能,之後的慢慢的增加功能,直至完成整個專案的開發。只有軟體體系是開放的,後面的軟體模組才能夠慢慢的增加。
適用情形:需求分段為一系列增量產品,每一增量可以分別開發。
優點:1、容易理解,管理成本低。2、強調開發的階段性早期計畫及需求調查和產品測試。3、開發由增量表示的小系統所承擔的風險不大。4、減少使用者需求的變更。5、執行增量投資,即在專案開始時,可以僅對乙個或兩個增量投資。6、讓客戶有乙個學習與使用軟體的過程。
缺點:1、如果沒有對使用者的變更需求進行規劃,那麼產生的初始增量可能會造成後來增量的不穩定。2、如果需求不想早期思考的那樣穩定和完整,那麼一些增量就可能需要重新開發,重新發布。
軟體系統必須是開放的。
4、噴泉模型
噴泉模型是一種以使用者需求為動力,以物件作為驅動的模型,適合於物件導向的開發方法。它克服了瀑布模型不支援軟體重用和多項開發活動整合的侷限性。噴泉模型使開發過程具有迭代性和無間隙性。
優點:提高軟體專案的開發效率,節省開發時間。
缺點:1、開發階段是重疊的,開發過程中需要大量的開發人員,不利於專案的管理。2、需要嚴格的管理文件,使得審核的難度加大。
5、rup(統一軟體過程)
軟體統一過程(rup)是rational軟體公司(rational公司被ibm併購)創造的軟體工程方法 。rup描述了如何有效地利用商業的可靠的方法開發和部署軟體,是一種重量級過程(也被稱作厚方法學),因此特別適用於大型軟體團隊開發大型專案。
rup最重要的它有三大特點:
1)軟體開發是乙個迭代過程,
2)軟體開發是由use case驅動的,
3)軟體開發是以架構設計(architectural design)為中心的。
6、敏捷過程
7、基於構件過程
基於構件的開發是指利用預先包裝的構件來構造應用系統。基於構件的開發模型具有許多螺旋模型的特點,需要以迭代方式構建軟體。基於構件的開發模型,包括領域工程和應用系統工程兩部分。
軟體工程學習筆記 軟體過程
軟體過程有3層含義 cmm將軟體過程改進分為以下5個成熟度級別 初始級 initial 可重複級 repeatable 已定義級 defined 已管理級 managed 優化級 optimized cmmi提供了兩種表示方法 階段式模型和連續式模型。1 階段式模型 階段式模型地結構類似於cmm,它...
軟體工程 軟體過程模型
軟體過程是為了獲得高質量軟體所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。通常使用生命週期模型簡潔地描述軟體過程。生命週期模型規定了把生命週期劃分成哪些階段及各個階段的執行順序,因此,也稱為過程模型。常見的過程模型有瀑布模型 快速原型模型 增量模型 螺旋模型 噴泉模型等。1.瀑布模型...
軟體工程學習筆記
1 軟體工程的基本概念 軟體的概念 軟體 程式 文件 軟體是能夠完成預定義功能的可執行的電腦程式和使程式正常執行所需要的資料,加讓描述程式的操作和文件。程式 適合計算機處理的語句序列 它的目的是啥呢?是為了解決某個特殊的問題 文件 開發活動的記錄 用於通訊和交流,開發過程的管理和執行階段的維護 軟體...