一、瀑布模型
1、按照傳統的瀑布模型開發軟件,有下述幾個特點。
①階段間具有順序性和依賴性
階段間具有順序性和依賴性,這個特點有兩重含義:
1,必須等前一階段的工作完成之后,才能開始后一階段的工作;
2,前一階段的輸出文檔介紹后一階段的輸入文檔;
因此,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結果。
②推遲實現的觀點
對于規模較大的軟件項目來說,往往編程開始得越早,最終完成開發工作所需要的時間反而越長。
③質量保證的觀點
軟件工程的基本目標是優質,高產。為了保證所開發的軟件的質量,在瀑布模型的每個階段都堅持兩個重要的做法。
(1)每個階段都必須完成規定的文檔,沒有交出合格的文檔介紹沒有完成該階段的任務。完整、準確的合格文檔不僅是軟件開發時期各類人員相互通信的媒介,也是運行時期進行維護的重要依據。
(2)每個階段結束前都要對所完成的文檔進行評審,以便盡早發現問題,改正錯誤。
???????? 事實上,越是早期階段犯下的錯誤,暴露出來的時間越晚,排除故障改正錯誤所需付出的代價也越高。因此,及時審查,是保證軟件質量、降低軟件成本的重要措施。
2、傳統的瀑布模型過于理想化
事實上,人在工作過程中不可能不犯錯誤。在設計階段可能發現規格說明文檔的錯誤,而設計上的缺陷或錯誤可能在實現過程中顯現出來,在綜合測試階段發現需求分析、設計或編碼階段的許多錯誤。因此,實踐的瀑布模型是帶“反饋環”的。
3、瀑布模型有許多優點:
①可強迫開發人員采用規范的方法(如結構化技術)
②嚴格地規定了每個階段必須提交的文檔
③要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證。
缺點:
1.只能通過文檔了解產品,不經過實踐是不切實際的;
2.實際項目很少按照該模型給出的順序進行;
3.用戶常常難以清楚地給出所有需求
4.用戶必須要耐心,等到系統開發完成
瀑布模型的成功在很的程度上是由于它基本上是一種文檔驅動的模型。
但是,“瀑布模型是文檔驅動的”這個事實也是它的一個主要的缺點。
??????? 在可運行的軟件產品交付給用戶之前,用戶只能通過文檔來了解產品是什么樣的。但是僅僅通過寫在紙上的靜態的規格說明,很難全面正確地認識動態的軟件產品。而且事實證明,一旦一個用戶開始使用一個軟件,在他的頭腦中關于該軟件應該做說明的想法就會或多或少地發生變化,這就使得最初提出的需求變得不完全適用了。事實上,要求用戶不經過實踐就提出完整準確的需求,在很多情況下都是不切實際的。總之,由于瀑布模型幾乎完全依賴于書面的規格說明,很有可能導致最終開發出的軟件產品不能真正滿足用戶的需要。
4、瀑布模型適用于:
(1)需求是預知的
(2)軟件實現方法是成熟的
(3)項目周期短
二、快速原型模型
所謂快速原型模型是快速建立起來的可以在計算機上運行的程序,它所能完成的功能往往是最終產品能完成的功能的一個子集。
快速原型模型是不帶反饋環的,這正是這種模型的主要優點
軟件產品的開發基本上線性順序進行的
1,能基本上做到線性順序開發的主要原因如下:
①原型系統已經通過與用戶交互而得到驗證,據此產生的規格說明文檔正確地描述了用戶的需求,因此,在開發過程的后續階段不會因為發現了規格說明文檔的錯誤而進行較大的返工。
②開發人員通過建立原型系統已經學到了許多東西,因此,在設計和編碼階段發生錯誤的可能性也比較小,這自然減少了在后續階段需要改正前面階段所犯錯誤的可能性。
快速原型的本質是“快速”。
按照原型的目的對原型分類:
·? 拋棄式,目的到達即可拋棄,原型不做為最終產品
·? 演化式,系統的形成和發展是逐步完成的,是高度動態迭代和高度動態的,每次迭代都要對系統重新進行規格說明,重新設計和重新評價,所以是對付變化最為有效的方法,這也是與瀑布開發的主要不同點;
·? 增量式,系統是一次一段地增量構造,與演化式原型的最大區別在于增量式開發是在軟件總體設計基礎上進行的。很顯然,其對付變化比演化差;
快速原型模型的優點:
①盡早揭示軟件可能存在的風險和不確定因素,尤其是關于用戶需求一致性方面的風險。
②用戶參與,降低風險,節省后期變更成本,提高項目成功率。
③不帶反饋環,基本上做到線性順序開發。
④開發過程與用戶培訓過程同步,系統易維護,對用戶更友好,產品柔性好。
三、增量模型
增量模型也稱漸增模型
增量模型屬于非整體開發思想的產物
?
使用增量模型開發軟件時,把軟件產品作為一系列的增量構件來設計,編碼,集成和測試。
每個構件由多個相互作用的模塊構成,并且能夠完成特定的功能。
使用增量模型時,第一個增量構建往往實現軟件的基本需求,提供最核心的功能。
采用瀑布模型或快速原型模型開發軟件時,目標都是一次就把一個滿足所有需求的產品提交給用戶。增量模型與之相反,它是分批逐步向用戶提交產品,使得整個軟件被分解成許多增量構件,開發人員一個構件接一個構件地向用戶提交產品。
優點:
①能在較短的時間內向用戶提交可完成部分工作的產品
②逐步增加產品的功能可以使用戶有充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。
缺點:
①風險大,必須保證新增構件不破壞原來已開發出來的產品
?????????????????????????????????????? 風險更大的增量模型
?
四、螺旋模型
螺旋模型的基本思想是:使用原型及其他方法來盡量降低風險。
理解這種模型的一個簡便方法,是把它看作在每個階段之前都增加了風險分析過程的快速原型模型。
螺旋模型有許多優點:
①對可選方案和約束條件的強調有利于已有軟件的重用,也有助于把軟件質量作為軟件開發的一個重要目標
②減少了過多的測試(浪費資金)或者測試不足(產品故障多)所帶來的風險。
③在螺線模型中維護只是模型的另一個周期,在維護和開發之間并沒有本質區別。
螺旋模型的主要優勢在于,它是風險驅動的,但是這也可能是它的一個弱點。除非軟件開發人員具有豐富的風險評估經驗和這方面的專門知識,否則將會出現真正的風險:當項目實際上正在走向災難時,開發人員可能還認為一切正常。
五、噴泉模型
迭代是軟件開發過程中普遍存在的一種內在屬性。
“噴泉”這個詞體現了面向對象軟件開發過程迭代和無縫的特性。
圖中代表不同階段的圓圈相互重疊,這說明表示兩個活動之間存在交迭;而面向對象的方法在概念和表示方式上的一致性,保證了在各項開發活動之間的無縫過渡
事實上,用面向對象方法開發軟件時,在分析、設計和編碼等項開發活動之間并不存在明顯的邊界。
圖中較小的圓圈代表維護,圓圈較小象征著采用了面向對象范型之后維護時間縮短了。
為避免使用噴泉模型開發軟件時開發過程過分無序,應該把應該線性過程(例如,快速原型模型)作為總目標。但是,同時也應該記住,面向對象范型本身要求經常對開發活動進行迭代或求精。