標籤:
在軟體過程裡面,從前言裡面我們知道絕大多數軟體企業長期面臨許多品質,進度,成本的問題,所以產生了人物思維與過程思維兩種方式,現在我們對其有了一個定義:軟體過程為一個為建造高品質軟體所需完成的任務的架構,即形成軟體產品的一系列步驟,包括中間產品、資源、角色及過程中採取的方法、工具等範疇。它的基本活動是:問題提出,軟體需求規格說明,軟體設計,軟體實現,軟體確認與軟體演化等活動。
第二節裡我們學習了軟體過程模型,其主要如下所示:
1.瀑布模型是最早出現的軟體開發模型,在軟體工程中佔有重要的地位,它提供了軟體開發的基本架構。瀑布模型的本質是一次通過,即每個活動只執行一次,最後得到軟體產品,也稱為“線性順序模型”或者“傳統生命週期”。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內容給出該項活動的工作成果,並作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續下一項活動;否則返回前面,甚至更前面的活動。
瀑布模型有利於大型軟體開發過程中人員的組織及管理,有利於軟體開發方法和工具的研究與使用,從而提高了大型軟體項目開發的品質和效率。然而軟體開發的實踐表明,上述各項活動之間並非完全是自上而下且呈線性圖式的,因此瀑布模型存在嚴重的缺陷。
① 由於開發模型呈線性,所以當開發成果尚未經過測試時,使用者無法看到軟體的效果。這樣軟體與使用者見面的時間間隔較長,也增加了一定的風險。
② 在軟體開發前期末發現的錯誤傳到後面的開發活動中時,可能會擴散,進而可能會造成整個軟體項目開發失敗。
③ 在軟體需求分析階段,完全確定使用者的所有需求是比較困難的,甚至可以說是不太可能的。
2. 快速原型模型需要迅速建造一個可以啟動並執行軟體原型 ,以便理解和澄清問題,使開發人員與使用者達成共識,最終在確定的客戶需求基礎上開發客戶滿意的軟體產品。 快速原型模型允許在需求分析階段對軟體的需求進行初步而非完全的分析和定義,快速設計開發出軟體系統的原型,該原型向使用者展示待開發軟體的全部或部分功能和效能;使用者對該原型進行測試評定,給出具體改進意見以豐富細化軟體需求;開發人員據此對軟體進行修改完善,直至使用者滿意認可之後,進行軟體的完整實現及測試、維護。它是增量模型的另一種形式;它是在開發真實系統之前,構造一個原型,在該原型的基礎上,逐漸完成整個系統的開發工作。快速原型模型的第一步是建造一個快速原型,實現客戶或未來的使用者與系統的互動,使用者或客戶對原型進行評價,進一步細化待開發軟體的需求。通過逐步調整原型使其滿足客戶的要求,開發人員可以確定客戶的真正需求是什麼;第二步則在第一步的基礎上開發客戶滿意的軟體產品。這也是最常見的模型之一,但是其優缺點也有,其主要為:優點:克服瀑布模型的缺點,減少由於軟體需求不明確帶來的開發風險。
這種模型適合預先不能確切定義需求的軟體系統的開發。
缺點:所選用的開發技術和工具不一定符合主流的發展;快速建立起來的系統結構加上連續的修改可能會導致產品品質低下。
使用這個模型的前提是要有一個展示性的產品原型,因此在一定程度上可能會限制開發人員的創新。
3. 增量模型融合了瀑布模型的基本成分(重複應用)和原型實現的迭代特徵,該模型採用隨著議程時間的進展而交錯的線性序列,每一個線性序列產生軟體的一個可發布的“增量”。當使用增量模型時,第1個增量往往是核心的產品,即第1個增量實現了基本的需求,但很多補充的特徵還沒有發布。客戶對每一個增量的使用和評估都作為下一個增量發布的新特徵和功能,這個過程在每一個增量發布後不斷重複,直到產生了最終的完善產品。
它的特點是:增量模型的特點是引進了增量包的概念,無須等到所有需求都出來,只要某個需求的增量包出來即可進行開發。雖然某個增量包可能還需要進一步適應客戶的需求並且更改,但只要這個增量包足夠小,其影響對整個項目來說是可以承受的。
優點為:1) 由於能夠在較短的時間內向使用者提交一些有用的工作產品,因此能夠解決使用者的一些急用功能。
2)由於每次只提交使用者部分功能,使用者有較充分的時間學習和適應新的產品。
3)對系統的可維護性是一個極大的提高,因為整個系統是由一個個構件整合在一起的,當需求變更時只變更部分組件,而不必影響整個系統。
缺點為:1) 由於各個構件是逐漸併入已有的軟體體繫結構中的,所以加入構件必須不破壞已構造好的系統部分,這需要軟體具備開放式的體繫結構。
2) 在開發過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應這種變化的能力大大優於瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而使軟體過程的控制失去整體性。
3)如果增量包之間存在相交的情況且未很好處理,則必須做全盤系統分析,這種模型將功能細化後分別開發的方法較適應於需求經常改變的軟體開發過程。
4. 螺旋模型是一種演化軟體開發過程模型,它兼顧了快速原型的迭代的特徵以及瀑布模型的系統化與嚴格監控。螺旋模型最大的特點在於引入了其他模型不具備的風險分析,使軟體在無法排除重大風險時有機會停止,以減小損失。同時,在每個迭代階段構建原型是螺旋模型用以減小風險的途徑。螺旋模型更適合大型的昂貴的系統級的軟體應用。螺旋模型強調風險分析,使得開發人員和使用者對每個演化層出現的風險有所瞭解,繼而做出應有的反應,因此特別適用於龐大、複雜並具有高風險的系統。螺旋模型沿著螺線進行若干次迭代,圖中的四個象限代表了以下活動:
四種象限
(1)制定計劃:確定軟體目標,選定實施方案,弄清項目開發的限制條件;
(2)風險分析:分析評估所選方案,考慮如何識別和消除風險;
(3)實施工程:實施軟體開發和驗證;
(4)客戶評估:評價開發工作,提出修正建議,制定下一步計劃。
螺旋模型由風險驅動,強調可選方案和約束條件從而支援軟體的重用,有助於將軟體品質作為特殊目標融入產品開發之中。
常見問題為:
經常遇到的問題 |
螺旋模型的解決方案 |
使用者需求不夠充分 |
允許並鼓勵使用者反饋資訊 |
溝通不明 |
在項目早期就消除嚴重的曲解 |
剛性的體系(Overwhelming architectures) |
開發首先關注重要的業務和問題 |
主觀臆斷 |
通過測試和品質保證,作出客觀的評估 |
潛在的不一致 |
在項目早期就發現不一致問題 |
糟糕的測試和品質保證 |
從第一次迭代就開始測試 |
採用瀑布法開發 |
在早期就找出並關注風險 |
限制條件為:(1)螺旋模型強調風險分析,但要求許多客戶接受和相信這種分析,並做出相關反應是不容易的,因此,這種模型往往適應於內部的大規模軟體開發。
(2)如果執行風險分析將大大影響項目的利潤,那麼進行風險分析毫無意義,因此,螺旋模型只適合於大規模軟體項目。
(3)軟體開發人員應該擅長尋找可能的風險,準確地分析風險,否則將會帶來更大的風險
一個階段首先是確定該階段的目標,完成這些目標的選擇方案及其約束條件,然後從風險角度分析方案的開發策略,努力排除各種潛在的風險,有時需要通過建造原型來完成。如果某些風險不能排除,該方案立即終止,否則啟動下一個開發步驟。最後,評價該階段的結果,並設計下一個階段。
優點為:1)設計上的靈活性,可以在項目的各個階段進行變更。
2)以小的分段來構建大型系統,使成本計算變得簡單容易。
3)客戶始終參與每個階段的開發,保證了項目不偏離正確方向以及項目的可控性。
4)隨著項目推進,客戶始終掌握項目的最新資訊 , 從而他或她能夠和管理層有效地互動。
5)客戶認可這種公司內部的開發方式帶來的良好的溝通和高品質的產品。
缺點為:很難讓使用者確信這種演化方法的結果是可以控制的。建設周期長,而軟體技術發展比較快,所以經常出現軟體開發完畢後,和當前的技術水平有了較大的差距,無法滿足目前使用者需求。
螺旋模型的項目適用:
對於新近開發,需求不明確的情況下,適合用螺旋模型進行開發,便於風險控制和需求變更。
其最核心的組成部分為:“螺旋模型”剛開始規模很小,當項目被定義得更好、更穩定時,逐漸展開。
“螺旋模型”的核心就在於您不需要在剛開始的時候就把所有事情都定義的清清楚楚。您輕鬆上陣,定義最重要的功能,實現它,然後聽取客戶的意見,之後再進入到下一個階段。如此不斷輪迴重複,直到得到您滿意的最終產品。
每輪迴圈包含如下六個步驟:
1. 確定目標,可選項,以及強制條件。
2. 識別並化解風險。
3. 評估可選項。
4. 開發並測試當前階段。
5. 規划下一階段。
6. 確定進入下一階段的方法步驟。
這是一個比較好的模型。
第三節裡則介紹了微軟公司的開發過程,通過這我們知道技術不是項目成功與否的唯一決定因素,其開發過程模型由規劃,設計,開發,穩定與發布5個過程,但是每個過程又是由裡程碑驅動的。它有著許多顯著地特點:1.解決問題的及時性。2.不確定與變更因素的可控性。3.縮短產品的上市周期。
軟體工程:理論、方法與實踐 軟體過程讀後感