複製鏈接
請複製以下鏈接發送給好友

軟件生命週期

鎖定
軟件生命週期(Software Life Cycle,SLC)是軟件的產生直到報廢或停止使用的生命週期。軟件生命週期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段,也有將以上階段的活動組合在內的迭代階段,即迭代作為生命週期的階段。
中文名
軟件生命週期
外文名
SDLC
別    名
軟件生存週期或系統開發生命週期
概    念
軟件的產生直到報廢的生命週期
思想方法
軟件工程中的一種思想原則
用    途
確定軟件的開發目標及其可行性

軟件生命週期簡介

軟件生命週期又稱為軟件生存週期或系統開發生命週期,是軟件的產生直到報廢的生命週期,週期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟件的質量。但隨着新的面向對象的設計方法和技術的成熟,軟件生命週期設計方法的指導意義正在逐步減少。
生命週期的每一個週期都有確定的任務,併產生一定規格的文檔(資料),提交給下一個週期作為繼續工作的依據。按照軟件的生命週期,軟件的開發不再只單單強調“編碼”,而是概括了軟件開發的全過程。軟件工程要求每一週期工作的開始只能必須是建立在前一個週期結果“正確”前提上的延續;因此,每一週期都是按“活動-結果-審核-再活動-直至結果正確”循環往復進展的。 [1] 
軟件生命週期是指軟件從產生到最終被廢棄的生命週期,可以分為三大階段,分別為定義問題、軟件開發和軟件維護,其中問題定義中的需求分析是軟件開發和維護的前提,它直接決定軟件項目的成敗。在進行軟件需求分析時,要明確需求分析的目標,採用合理的需求分析方法和工具,全面且正確的進行需求分析。獲取需求時會受很多因素的影響,從而導致需求不能正確表達用户需求或者需求分析不夠正確等,所以需求獲取時要選擇合理的獲取方法,同時對需求要進行正確深入的分析,進而採用適合的工具來對需求進行説明和描述,這樣對於後續的軟件設計、編碼、測試和維護打下堅實的基礎。
軟件需求簡單的説就是研究“做什麼”的問題,在現實工作過程中,應該考慮除功能需求之外的業務需求和用户需求。業務需求主要反映某機構或者客户對軟件產品高層次的目標要求;用户需求是指用户使用產品必須完成的任務;功能需求指開發者不得不完成的軟件功能,可以説功能需求滿足了,業務需求也就達到了,需求分析並不考慮怎麼做的問題。 [4] 

軟件生命週期階段

可行性研究階段:同任何事物一樣,一個軟件產品軟件系統也要經歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生存週期(軟件生命週期)。把整個軟件生存週期劃分為若干階段,使得每個階段有明確的任務,使規模大,結構複雜和管理複雜的軟件開發變的容易控制和管理。可以將軟件生命週期概括為軟件計劃與可行性研究階段(問題定義、可行性研究)、需求分析階段、軟件設計階段概要設計詳細設計)、軟件編碼階段、軟件測試階段和軟件運行與維護階段
軟件計劃與可行性研究階段(問題定義、可行性研究):此階段是軟件開發方與需求方共同討論,主要確定軟件的開發目標及其可行性。
軟件生命週期 軟件生命週期
需求分析階段:在確定軟件開發可行的情況下,對軟件需要實現的各個功能進行詳細分析。需求分析階段是一個很重要的階段,也是在整個軟件開發過程中不斷變化和深入的階段,能夠為整個軟件開發項目的成功打下良好的基礎。
軟件設計階段(概要設計和詳細設計):主要根據需求分析的結果,對整個軟件系統進行設計,如系統框架設計,數據庫設計等等。軟件編碼階段:是將軟件設計的結果轉換成計算機可運行的程序代碼。在程序編碼中必須要制定統一,符合標準的編寫規範。以保證程序的可讀性,易維護性,提高程序的運行效率
軟件測試階段:在軟件設計完成後要經過嚴密的測試,以發現軟件在整個設計過程中存在的問題並加以糾正。
軟件運行和維護階段:是軟件生命週期中持續時間最長的階段,包括糾錯性維護和改進性維護兩個方面。 [2] 

軟件生命週期模型分類

從概念提出的那一刻開始,軟件產品就進入了軟件生命週期。在經歷需求、分析、設計、實現、部署後,軟件將被使用並進入維護階段,直到最後由於缺少維護費用而逐漸消亡。這樣的一個過程,稱為"生命週期模型"(Life Cycle Model)。
典型的幾種生命週期模型包括瀑布模型、快速原型模型迭代模型

軟件生命週期瀑布模型

(Waterfall Model)首先由Royce提出。該模型由於酷似瀑布聞名。在該模型中,首先確定需求,並接受客户和SQA小組的驗證。然後擬定規格説明,同樣通過驗證後,進入計劃階段…可以看出,瀑布模型中至關重要的一點是隻有當一個階段的文檔已經編制好並獲得SQA小組的認可才可以進入下一個階段。這樣,瀑布模型通過強制性的要求提供規約文檔來確保每個階段都能很好的完成任務。但是實際上往往難以辦到,因為整個的模型幾乎都是以文檔驅動的,這對於非專業的用户來説是難以閲讀和理解的。想象一下,你去買衣服的時候,售貨員給你出示的是一本厚厚的服裝規格説明,你會有什麼樣的感觸。雖然瀑布模型有很多很好的思想可以借鑑,但是在過程能力上有天生的缺陷。
然而輕易拋棄瀑布模型的觀點也是非常錯誤的,瀑布模型還是所有軟件開發模型的基礎,體現了軟件開發的本質過程。對於一些大型 的軟件項目,試圖過於簡化瀑布的前期的需求和設計階段,用一個簡單的原型或者迭代來模擬未來的系統,並試圖幫助確認和挖掘客户的需求,是不可能的,不僅此時離客户的最終需求和隔山萬千重,系統的架構也會隨着過程而有很大被拋棄和大幅調整的過程,原型也就起不到原型的作用,成本和時間反而浪費,所以前期的功課還是少不了的,尤其對於複雜系統。即使對於簡單如定製一件衣服,在給客户提出修改的時候,它要基本是一件衣服,而不是幾塊布片,否則客户無從提出進一步的需求,前期的功夫也是白費的。

軟件生命週期迭代式模型

圖1 軟件生命週期 圖1 軟件生命週期
迭代式模型是是RUP(Rational Unified Process,統一軟件開發過程統一軟件過程)推薦的週期模型,也是我們在這個系列文章討論的基礎。在RUP中,迭代被定義為:迭代包括產生產品發佈(穩定、可執行的產品版本)的全部開發活動和要使用該發佈必需的所有其他外圍元素。所以,在某種程度上,開發迭代是一次完整地經過所有工作流程的過程:(至少包括)需求工作流程、分析設計工作流程、實施工作流程和測試工作流程。實質上,它類似小型的瀑布式項目。RUP認為,所有的階段(需求及其它)都可以細分為迭代。每一次的迭代都會產生一個可以發佈的產品,這個產品是最終產品的一個子集。迭代的思想如圖1所示。
迭代和瀑布的最大的差別就在於風險的暴露時間上。“任何項目都會涉及到一定的風險。如果能在生命週期中儘早確保避免了風險,那麼您的計劃自然會更趨精確。有許多風險直到已準備集成系統時才被發現。不管開發團隊經驗如何,都絕不可能預知所有的風險。”
由於瀑布模型的特點(文檔是主體),很多的問題在最後才會暴露出來,為了解決這些問題的風險是巨大的。"在迭代式生命週期中,您需要根據主要風險列表選擇要在迭代中開發的新的增量內容。每次迭代完成時都會生成一個經過測試的可執行文件,這樣就可以核實是否已經降低了目標風險。"

軟件生命週期快速原型模型

快速原型(Rapid Prototype)模型在功能上等價於產品的一個子集。注意,這裏説的是功能上。瀑布模型的缺點就在於不夠直觀,快速原型法就解決了這個問題。一般來説,根據客户的需要在很短的時間內解決用户最迫切需要,完成一個可以演示的產品。這個產品只是實現部分的功能(最重要的)。它最重要的目的是為了確定用户的真正需求。在我的經驗中,這種方法非常的有效,原先對計算機沒有絲毫概念的用户在你的原型面前往往口若懸河,有些觀點讓你都覺得非常的吃驚。在得到用户的需求之後,原型將被拋棄。因為原型開發的速度很快,設計方面是幾乎沒有考慮的,如果保留原型的話,在隨後的開發中會為此付出極大的代價。至於保留原型方面,也是有一種叫做增量模型是這麼做的,但這種模型並不為大家所接受,不在我們的討論之內。 上述的模型中都有自己獨特的思想,其實現在的軟件組織中很少説標準的採用那一種模型的。模型和實用還是有很大的區別的。
軟件生命週期模型的發展實際上是體現了軟件工程理論的發展。在最早的時候,軟件的生命週期處於無序、混亂的情況。一些人為了能夠控制軟件的開發過程,就把軟件開發嚴格的區分為多個不同的階段,並在階段間加上嚴格的審查。這就是瀑布模型產生的起因。瀑布模型體現了人們對軟件過程的一個希望:嚴格控制、確保質量。可惜的是,現實往往是殘酷的。瀑布模型根本達不到這個過高的要求,因為軟件的過程往往難於預測。反而導致了其它的負面影響,例如大量的文檔、繁瑣的審批。因此人們就開始嘗試着用其它的方法來改進或替代瀑布方法。例如把過程細分來增加過程的可預測性

軟件生命週期螺旋模型

1988年,Barry Boehm正式發表了軟件系統開發的"螺旋模型",它將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特別適合於大型複雜的系統。
螺旋模型沿着螺線進行若干次迭代,四個象限代表了以下活動:
(1) 制定計劃:確定軟件目標,選定實施方案,弄清項目開發的限制條件;
(2) 風險分析:分析評估所選方案,考慮如何識別和消除風險;
(3) 實施工程:實施軟件開發和驗證;
(4) 客户評估:評價開發工作,提出修正建議,制定下一步計劃。
螺旋模型由風險驅動,強調可選方案和約束條件從而支持軟件的重用,有助於將軟件質量作為特殊目標融入產品開發之中。但是,螺旋模型也有一定的限制條件,具體如下:
(1) 螺旋模型強調風險分析,但要求許多客户接受和相信這種分析,並做出相關反應是不容易的,因此,這種模型往往適應於內部的大規模軟件開發。
(2) 如果執行風險分析將大大影響項目的利潤,那麼進行風險分析毫無意義,因此,螺旋模型只適合於大規模軟件項目。
(3) 軟件開發人員應該擅長尋找可能的風險,準確地分析風險,否則將會帶來更大的風險
一個階段首先是確定該階段的目標,完成這些目標的選擇方案及其約束條件,然後從風險角度分析方案的開發策略,努力排除各種潛在的風險,有時需要通過建造原型來完成。如果某些風險不能排除,該方案立即終止,否則啓動下一個開發步驟。最後,評價該階段的結果,並設計下一個階段。 [3] 
參考資料
  • 1.    李川川,王俊江.軟件生命週期模型探析[J].電子質量,2017,(10):4-5,14.
  • 2.    孟浩,鄧惠文,黃永兢.基於軟件生命週期的軟件缺陷預防流程研究[J].電腦編程技巧與維護,2017,(12):44-46.
  • 3.    朱婕.淺談軟件生命週期模型及其選擇[J].電腦迷,2014,(17):4-5.
  • 4.    任恆妮.軟件生命週期中需求分析探討[J].科技風,2014,(23):51-51.