所謂模型就是一種開發策略,這種策略針對軟體工程的各個階段提供了一套範形,使工程的進展達到預期的目的。對乙個軟體的開發無論其大小,我們都需要選擇乙個合適的軟體過程模型,這種選擇基於專案和應用的性質、採用的方法、需要的控制,以及要交付的產品的特點。乙個錯誤模型的選擇,將迷失我們的開發方向。對於下面的模型,希望能夠給開發者們乙個參考和一點啟示。
一、 線性順序過程模型:
它有時也稱為傳統生存週期模型或瀑布模型。它提出了軟體開發的系統化的、順序的方法。其流程從系統開始,隨後是需求分析、設計、編碼、測試、支援。這種模型是最早也是應用最廣泛的軟體過程模型(雖然這種模型會引起「堵賽狀態」)。
缺點:1、 實際的專案大部分情況難以按照該模型給出的順序進行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。
2、 經常情況下客戶難以表達真正的需求,而這種模型卻要求如此,這種模型是不歡迎具有二義性問題存在的。
3、 客戶要等到開發周期的晚期才能看到程式執行的測試版本,而在這時發現大的錯誤時,可能引起客戶的驚慌,而後果也可能是災難性的。
4、 採用這種線性模型,會經常在過程的開始和結束時碰到等待其他成員完成其所依賴的任務才能進行下去,有可能花在等待的時間比開發的時間要長。我們稱之為「堵賽狀態」。
優點:1、它提供了乙個摸板,這個摸板使得分析、設計、編碼、測試和支援的方法可以在該摸板下有乙個共同的指導。
2、雖然有不少缺陷但比在軟體開發中隨意的狀態要好得多。
二、 原型實現過程模型:
從需求收集開始,開發者和客戶在一起定義軟體的總體目標,標識已知的需求並且規劃出需要進一步定義的區域。然後是「快速設計」,它集中於軟體中那些對客戶可見的部分的表示,這將導致原型的建立,並由客戶評估並進一步精化待開發軟體的需求。逐步調整原型使其滿足客戶的需求,這個過程是迭代的。其流程從聽取客戶意見開始、隨後是建造/修改原型、客戶測試執行原型、然後回頭往復迴圈直到客戶對原型滿意為止。由於這種模型可以讓客戶快速的感受到實際的系統(雖然這個系統不帶有任何質量的保證),所以客戶和開發者都比較喜歡這種過程模型(對於那些僅僅用來演示軟體功能的公司而言或從來不考慮軟體質量和不害怕長期維護的公司而言)。
缺點:1、 沒有考慮軟體的整體質量和長期的可維護性。
2、 大部分情況是不合適的操作演算法被採用目的為了演示功能,不合適的開發工具被採用僅僅為了它的方便,還有不合適的作業系統被選擇等等。
3、 由於達不到質量要求產品可能被拋棄,而採用新的模型重新設計。
優點:1、如果客戶和開發者達成一致協議:原型被建造僅為了定義需求,之後就被拋棄或者部分拋棄, 那麼這種模型很合適了。
2、迷惑客戶搶占市場,這是乙個首選的模型。
三、 快速應用(rad) 過程模型:
這是乙個增量型的軟體開發過程模型,強調極短的開發周期,它是線性模型的乙個「高速」變種,通過使用構件的建造方法贏得了快速開發。如果需求理解的好而且約束了專案的範圍,利用這種模型可以很快的建立出功能完善的「資訊系統」。其流程從業務建模開始,隨後是資料建模、過程建模、應用生成、測試及反覆。rad過程強調的是復用,復用已有的或開發可復用的構件。實際上rad採用***技術。
缺點:1、 只能用於資訊系統。
2、 對於較大的專案需要足夠的人力資源去建造足夠的rad組。
3、 開發者和客戶必須在很短的時間完成一系列的需求分析, 任何一方配合不當都會導致rad專案失敗。
4、 這種模型對模組化要求比較高,如果有哪一功能不能被模組化,那麼建造rad所需要的構件就會有問題。
5、 技術風險很高的情況下不適合這種模型。
優點:1、 開發速度快,質量***。
2、 對資訊系統特別有效。
四、 增量過程模型:
這種模型融合了線性順序模型的基本成份和原型實現模型的迭代特徵。增量模型採用隨著日程時間的進展而交錯的線性序列。每乙個線性序列產生軟體的乙個可發布的「增量」。當使用增量模型時,第乙個增量往往是核心的產品,也就是說第乙個增量實現了基本的需求,但很多補充的特徵還沒有發布。客戶對每乙個增量的使用和評估,都做為下乙個增量發布的新特徵和功能。這個過程在每乙個增量發布後不斷從復,直到產生了最終的完善產品。增量模型強調每乙個增量均發布乙個可操作的產品。
缺點:1、 至始至終開發者和客戶糾纏在一起,直到完全版本出來。
優點:2、 當配備的人員不能在設定的期限內完成產品時,它提供了一種先推出核心產品的途徑,這樣就可以先發布部分功能給客戶,對客戶起到鎮靜劑的作用。
3、 具有一定的市場。
五、 螺旋過程模型:
這是乙個演化軟體過程模型,它將原型實現的迭代特徵和線性順序模型中控制的和系統化的方面結合起來。使得軟體的增量版本的快速開發成為可能。在螺旋模型中,軟體開發是一系列的增量發布。在每乙個迭代中,被開發系統的更加完善的版本逐步產生。螺旋模型被劃分為若干框架活動,也稱為任務區域。典型地,有3到6個任務區域:
1、 客戶交流:建立開發者和客戶之間有效通訊所需要的任務。
3、 風險分析:評估技術的及管理的風險所需要的任務。
4、 工程:建立應用的乙個或多個表示說需要的任務。
5、 構造及發布:構造、測試、安裝和提供使用者支援所需要的任務。
6、 客戶評估:基於對在工程階段產生的或在安裝階段實現的軟體表示的評估,獲得客戶反饋所需要的任務。
這是乙個相對較新的模型,它的功效還需要經歷若干年的使用方能確定下來。
缺點:1、 需要相當的風險分析評估的專門技術,且成功依賴於這種技術。
2、 很明顯乙個大的沒有被發現的風險問題,將會導致問題的發生,可能導致演化的方法失去控制。
3、 這種模型相對比較新,應用不廣泛,其功效需要進一步的驗證。
優點:1、對於大型系統及軟體的開發,這種模型是乙個很好的方法。開發者和客戶能夠較好地對待和理解每乙個演化級別上的風險。
六、 winwin螺旋過程模型:
螺旋模型提出了強調客戶交流的乙個框架活動。該活動的目標是從客戶處誘導專案需求。在理想情況下,開發者簡單地詢問客戶需要什麼,而客戶提供足夠的細節進行下去。不幸的是這種情形很少發生。在現實中,客戶和開發者進入乙個談判過程,客戶被要求在成本和應市之間的約束下平衡功能、效能、和其它產品或系統特徵。最好的談判追求「雙贏」結果,也就是說通過談判客戶獲得大部份系統的功能,而開發者則獲得現實的和可達到的預算和時限。對客戶的交流定義了下面的活動:
1、 系統或子系統的關鍵「風險承擔者」的標識。
2、 風險承擔者的「贏條件」的確定。
3、 風險承擔者的贏條件談判,以將它們協調為一組滿足各方考慮的雙贏條件。
缺點:1、 需要額外的談判技巧。
優點:1、 客戶和開發者達到一種平衡。
七、 併發任務過程模型:
這種模型關注於多個任務的併發執行,表示為一系列的主要技術活動、任務及它們的相關狀態。併發過程模型是由客戶要求、管理決策、評審結果驅動的。該模型不是將軟體工程活動限定為乙個順序的事件序列,而是定義了乙個活動網路。網路上的每乙個活動均可於其它活動同時發生。這種模型可以提供乙個專案的當前狀態的準確檢視。
缺點:暫時無
優點:1、 可用於所有型別的軟體開發,而對於客戶/伺服器結構更加有效。
2、 可以隨時查閱到開發的狀態。
八、 基於構件的開發過程模型:
物件導向的技術為軟體工程的基於構件的過程模型提供了技術框架。物件導向模型強調了類的建立、類的封裝了的資料、操縱該資料的演算法。一般來講經過合適的設計和實現,物件導向的類可以在不同的應用及基於計算機的系統的體系結構中復用。基於構件的開發模型融合了螺旋模型的許多特徵,它本質上是演化形的,要求軟體建立的迭代方法。然而基於構件的開發模型是利用預先包裝好的軟體構件(有時成為類)來構造應用。
開發活動從候選類的標識開始,這一步是通過檢查將被應用系統操縱的資料及用於實現該操縱的演算法來完成的。相關的資料和演算法被封裝成乙個類。
缺點:1、 過分依賴於構件,構件庫的質量影響著產品質量。
優點:1、 構件可復用。提高了開發效率。
2、 採用了物件導向的技術。
九、 形式化方法模型:
形式化方法模型包含了一組活動,他們導致了計算機軟體的數學規約。形式化方法使得軟體工程師們能夠通過應用乙個嚴格的數學符號體系來規約、開發、和驗證基於計算機的系統。 這種方法的乙個變種,稱為淨室軟體工程,已經被一些組織所採用。在開發中使用形式化方法時,它們提供了一種機制,能夠消除使用其它軟體過程模型難以克服的很多問題。二義性、不完整性、不一致性能被更容易地發現和糾正,而不是通過專門的評審,是通過對應用的數學分析。 形式化方法提供了可以產生無缺陷軟體的承諾。
缺點:1、 開發費用昂貴(對開發人員需要多方面的培訓),而且需要的時間較長。
2、 不能將這種模型作為對客戶通訊的機制,因為客戶對這些數學語言一無所知。
3、 目前還不流行。
優點:1、 形式化規約可直接作為程式驗證的基礎,可以盡早的發現和糾正錯誤(包括那些其它情況下不能發現的錯誤)。
2、 開發出來的軟體具有很高的安全性和健壯性,特別適合安全部門或者軟體錯誤會造成經濟損失的開發者。
3、 具有開發無缺陷軟體的承諾。
十、 ***技術(4gt)過程模型:
一系列的軟體工具的使用,是***技術的特點。這些工具有乙個共同的特點:能夠使軟體工程師們在較高階別上規約軟體的某些特徵,然後根據開發者的規約自動生成源**。我們知道,軟體在越高的級別上被規約,就越能被快速的建造出程式。軟體工程的
4gt模型集中於規約軟體的能力:使用特殊的語言形式或一種採用客戶可以理解的術語描述待解決問題的圖形符號體系。和其它模型一樣,4gt也是從需求收集這一步開始的,要將乙個4gt實現變成最終產品,開發者還必須進行徹底的測試、開發有意義的文件,並且同樣要完成其它模型中同樣要求的所有整合活動。總而言之,4gt已經成為軟體工程的乙個重要方法。特別是和基於構件的開發模型結合起來時,4gt模型可能成為當前軟體開發的主流模型!
缺點:1、 用工具生成的源**可能是「低效」的。
2、 生成的大型軟體的可維護性目前還令人懷疑。
3、 在某些情況下可能需要更多的時間。
優點:1、 縮短了軟體開發時間,提高了建造軟體的效率。
2、 對很多不同的應用領域提供了一種可行性途徑和解決方案。
軟體過程模型
瀑布模型是將軟體生存週期中的各項活動規定為一種線性順序連線的若干階段的模型,包括需求分析 設計 編碼 測試 執行與維護。它規定了由前至後 相互銜接的固定次序,如同瀑布流水逐級下落,瀑布模型為軟體的開發和維護提供了一種有效的管理模式,根據這一模式制定開發計畫,進行成本預算,組織開發力量,以專案的階段評...
軟體過程模型
軟體過程模型習慣上也稱為軟體開發模型,他是軟體開發全部過程 活動和任務的結構框架。典型的軟體過程有瀑布模型 增量模型 演化模型 原型模型 螺旋,模型 噴泉模型 基於構件的開發模型和形式化方法模型等。定義 瀑布模型是將軟體生產週期中的各個活動規定為依線性順序連線的若干階段的模型,包括需求分析 設計 編...
軟體過程模型
軟體過程是為了獲得高質量軟體所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。通常使用生命週期模型簡潔地描述軟體過程。生命週期模型規定了把生命週期劃分成哪些階段及各個階段的執行順序,因此,也稱為過程模型。常見的過程模型有瀑布模型 快速原型模型 增量模型 螺旋模型 噴泉模型等。1.瀑布模型...