軟體生存周期
軟體產生直到報廢的生命周期
軟體生存周期(software life cycle)指軟體產品或軟體系統從產生、投入使用到被淘汰的全過程。通常把軟體生存周期分為5個階段,即需求、設計、實現(編碼)、測試和維護。
最早的軟體生存周期概念的產生是由於人們認識到一個軟體系統生存周期也和人的一生相類似,可以劃分為若干個互相區別而又彼此聯繫的階段,上一階段的結果為下一階段的依據,上一階段沒有完成決不進行下一階段的工作。
軟體生存周期
一般來說,整個生存周期包括計劃(定義)、開發、運行(維護)三個時期,每一個時期又劃分為若干階段。每個階段有明確的任務,這樣使規模大、結構複雜和管理複雜的軟體開發變得容易控制和管理。
描述軟體開發過程中各種活動如何執行的模型。是軟體工程過程的簡化的抽象描述。
瀑布模型
演化模型
螺旋模型
噴泉模型
增量模型
軟體生命期一般包括以下各階段:
軟體生存周期
·需求分析
·軟體設計(概要設計和詳細設計)
·編碼
·軟體測試
軟體生存周期
各階段的任務彼此間儘可能相對獨立,同一個階段各項任務的性質儘可能相同,從而降低每個階段任務的複雜性,簡化不同階段之間的聯繫,有利於軟體開發過程的組織管理。
功能基線(functional baseline)
軟體生命周期
開發系統的規格說明;或是指經過項目委託單位和項目承辦單位雙方簽字同意的協議書或合同中所規定的對待開發軟體系統的規格說明;或是由下級申請經上級同意或直接由上級下達的項目任務書中所規定的對待開發軟體系統的規格說明。功能基線是最初批准的功能配置標識。
指派基線(allocated baseline)
指派基線是指在軟體需求分析階段結束時,經過正式評審和批准的軟體需求的規格說明。指派基線是最初批准的指派配置標識。
產品基線(product baseline)
產品基線是指在軟體組裝與系統測試階段結束時,經過正式評審的批准的有關所開發的軟體產品的全部配置項的規格說明。產品基線是最初批准的產品配置標識。
此階段是軟體開發方與需求方共同討論,主要確定軟體的開發目標及其可行性。
軟體生存周期
此階段主要根據需求分析的結果,對整個軟體系統進行設計,如系統框架設計,資料庫設計等等。軟體設計一般分為總體設計和詳細設計。好的軟體設計將為軟體程序編寫打下良好的基礎。
軟體生存周期
在軟體設計完成後要經過嚴密的測試,以發現軟體在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃並嚴格按照測試計劃進行測試,以減少測試的隨意性。
軟體生存周期
任何軟體都是從最模糊的概念開始的:為某個公司設計辦公的流程處理;設計一種商務信函列印系統並投放市場。這個概念是不清晰的,但卻是最高層的業務需求的原型。這個概念都會伴隨著一個目的,例如在一個"銀行押匯系統" 的目的是提高工作的效率。這個目的將會成為系統的核心思想,系統成敗的評判標準。99年政府部門上了大量的OA系統,學過一點Lotus Notes的人都發了財(IBM更不用說了),但是更普遍的情況是,許多的政府部門原有的處理模式並沒有變化,反而又加上了自動化處理的一套流程。提高工作效率的初衷卻導致了完全不同的結果。這樣的軟體究竟是不是成功的呢?
從概念提出的那一刻開始,軟體產品就進入了軟體生命周期。在經歷需求、分析、設計、實現、部署后,軟體將被使用並進入維護階段,直到最後由於缺少維護費用而逐漸消亡。這樣的一個過程,稱為"生命周期模型"(Life Cycle Model)。
典型的幾種生命周期模型包括瀑布模型、快速原型模型、迭代模型。瀑布模型(Waterfall Model)首先由Royce提出。該模型由於酷似瀑布聞名。在該模型中,首先確定需求,並接受客戶和SQA小組的驗證。然後擬定規格說明,同樣通過驗證后,進入計劃階段…可以看出,瀑布模型中至關重要的一點是只有當一個階段的文檔已經編製好並獲得SQA小組的認可才可以進入下一個階段。這樣,瀑布模型通過強制性的要求提供規約文檔來確保每個階段都能很好的完成任務。但是實際上往往難以辦到,因為整個的模型幾乎都是以文檔驅動的,這對於非專業的用戶來說是難以閱讀和理解的。想象一下,你去買衣服的時候,售貨員給你出示的是一本厚厚的服裝規格說明,你會有什麼樣的感觸。雖然瀑布模型有很多很好的思想可以借鑒,但是在過程能力上有天生的缺陷。
軟體生存周期
迭代和瀑布的最大的差別就在於風險的暴露時間上。"任何項目都會涉及到一定的風險。如果能在生命周期中儘早確保避免了風險,那麼您的計劃自然會更趨精確。有許多風險直到已準備集成系統時才被發現。不管開發團隊經驗如何,都絕不可能預知所有的風險。"(RUP)二者的區別如下圖所示:
軟體生存周期
快速原型(Rapid Prototype)模型是我喜歡採用的另一種模型。快速原型模型在功能上等價於產品的一個子集。注意,這裡說的是功能上。瀑布模型的缺點就在於不夠直觀,快速原型法就解決了這個問題。一般來說,根據客戶的需要在很短的時間內解決用戶最迫切需要,完成一個可以演示的產品。這個產品只是實現部分的功能(最重要的)。它最重要的目的是為了確定用戶的真正需求。在我的經驗中,這種方法非常的有效,原先對計算機沒有絲毫概念的用戶在你的原型面前往往口若懸河,有些觀點讓你都覺得非常的吃驚。在得到用戶的需求之後,原型將被拋棄。因為原型開發的速度很快,設計方面是幾乎沒有考慮的,如果保留原型的話,在隨後的開發中會為此付出極大的代價。至於保留原型方面,也是有一種叫做增量模型是這麼做的,但這種模型並不為大家所接受,不在我們的討論之內。
上述的模型中都有自己獨特的思想,其實現在的軟體組織中很少說標準的採用那一種模型的。模型和實用還是有很大的區別的。
軟體生命周期模型的發展實際上是體現了軟體工程理論的發展。在最早的時候,軟體的生命周期處於無序、混亂的情況。一些人為了能夠控制軟體的開發過程,就把軟體開發嚴格的區分為多個不同的階段,並在階段間加上嚴格的審查。這就是瀑布模型產生的起因。瀑布模型體現了人們對軟體過程的一個希望:嚴格控制、確保質量。可惜的是,現實往往是殘酷的。瀑布模型根本達不到這個過高的要求,因為軟體的過程往往難於預測。反而導致了其它的負面影響,例如大量的文檔、繁瑣的審批。因此人們就開始嘗試著用其它的方法來改進或替代瀑布方法。例如把過程細分來增加過程的可預測性。