天天看點

軟體生命周期(SDLC) ——第一季簡介什麼是軟體生命周期瀑布模型(Waterfall Model)螺旋模型(Spiral Model)靈活開發(Agile Method)

簡介

本文簡單介紹了幾個傳統的軟體生命周期(Process Model),在後續文章會對這些生命周期差異對比,并介紹影響軟體生命周期發展的主要因素,并大膽的預測未來。

什麼是軟體生命周期

用一句話總結軟體生命周期就是指軟體從生産到報廢的全部過程,早期的軟體生命周期往往是指——計劃、需求分析、設計、實作、部署、維護、報廢——這主要是收到第一個軟體生命周期瀑布模型(Waterfall Model)所影響。随着不同的開發需求逐漸演化了許多不同的生命周期,其中V模型(V Model),螺旋模型(Spiral Model), 疊代式模型(Rational Unified Process),靈活開發(Agile Model)等最為流行。

瀑布模型(Waterfall Model)

瀑布模型是許多軟體生命周期的原型,主要分為七個階段: 需求分析,設計,實作,內建,測試,安裝部署,維護。每個階段都完全不同并且沒有重疊,各個階段都有獨立的傳遞,列如需求分析文檔,設計文檔,測試文檔等。這種直線步驟的模型需要每一步都完全傳遞才能開始下一步,因為這種直線模型是沒法回到之前的步驟的。

瀑布模型的最大優勢是簡單直接,因為他的每個階段都有明顯的交接和裡程碑,是以非常友善管理和使用。如果需求很清晰并且不會變更,使用瀑布模型會相對安全。而且瀑布模型非常節約成本,因為使用瀑布模型可以雇傭新手程式員和相對短的開發周期可以縮減預算。

然而瀑布模型的缺陷也很明顯,它是直線的周期缺乏疊代,使用瀑布模型就會有很大風險,任何步驟如果出現錯誤都需要付出很大的代價,尤其是當生命周期結束後,與客戶傳遞的時候出現問題将會帶來災難性的影響。另一個明顯的缺陷就是,當需求分析步驟結束後,瀑布模型就很難接受并處理需求變更,這也是瀑布模型沒法滿足大部分軟體開發周期的主要原因。由于過多的傳遞階段,瀑布模型需要大量的文檔支援,編寫和閱讀這些文檔也是對生産力的一種浪費。

瀑布模型已經走過了半個多世紀了,盡管經曆了很多批評和調整,然而至今還有很多軟體公司依然使用瀑布模型,這些公司主要以外包公司為主,畢竟在需求更變最小化的情況下,瀑布模型是成本最低的開發周期。

螺旋模型(Spiral Model)

螺旋模型是一種結合了快速疊代和線性瀑布模型的軟體生命周期,其最大的特點是加強了風險分析和控制來彌補瀑布模型的缺陷。螺旋模型通常包括四個主要步驟:決定目标,風險分析,開發,計劃。

螺旋模型最大的優勢是加入了風險分析,使軟體不能在發生重大風險的時候造成損失。并且螺旋模型加入了疊代,客戶可以更早的接觸到軟體的原型并對其提出建議及修改,這點與增量模型十分相似。通過不同周期的疊代,螺旋模型可以随意地增加必要新功能或修改原有功能, 是以很顯然這種軟體開發生命周期非常适合大風險類型的軟體開發管理。

然而螺旋模型依然存在很多缺陷,大量的風險分析工作與風險分析專家參與都使螺旋模型的開發成本大大增加,是以這種開發管理方案并不适用小型的低風險項目。螺旋模型也可以叫做meta-model, 因為它通常是結合了集中不同的軟體生命周期,比如瀑布模型,樣機模型,增量開發等。

軟體生命周期(SDLC) ——第一季簡介什麼是軟體生命周期瀑布模型(Waterfall Model)螺旋模型(Spiral Model)靈活開發(Agile Method)

螺旋模型(巴裡·勃姆,1988)

靈活開發(Agile Method)

靈活開發是一個輕量級的疊代性的軟體生命周期,是在2000以後出現用以對抗傳統的繁瑣的重量級的軟體生命周期。最早期的靈活開發叫做極限模型(Extrem Model),如今已經發展出很多不同的靈活開發模型,其中以極限變成(XP)與Scrum最為出名,以後有時間再寫一篇文章單獨分析下XP和Scrum。

靈活開發也可以了解為增量開發,它擁有非常多并且快速的疊代周期,通過不停地疊代,客戶可以很快的看到不同版本的軟體模型,并且通過不停地與客戶互動可以幫助完善功能,是以大部分靈活開發的項目都需要工程師和客戶經常面對面的互動。雖然靈活開發有非常簡單的疊代周期,但是每個周期都會有測試的過程來確定軟體的可靠性。靈活開發是目前解決需求變更最快成本最低的管理方式,就算在軟體開發末期或者釋出以後都可以輕易的解決需求變更。靈活開發可以說完美的解決了重視時間和需求更變的小型項目,這些項目往往可以快速的占領市場,不給競争對手截胡的機會。

然而對于靈活開發往往也會充滿挑戰,比如靈活開發通常需要擁有豐富經驗的工程師構成的團隊才能完成快速的疊代,而且快速的早期的軟體模型由于功能的缺陷可能會使客戶不滿意而造成失敗。為了保證疊代的速度,靈活開發通常需要管理人員的介入,例如Scrum Master,并且通常伴随的連續傳遞,是以測試人員通常再程式設計之前就要準備好單元測試用例,各種靈活開發的要素都是對整個團隊的一個考驗。但是隻要運用得當,靈活開發的收益将是不可估量的。

在第一季隻針對幾個流行的軟體生命周期做一下簡單的介紹與分析,第二季我打算分别對比分析一下這幾個軟體生命周期的差異,第三季計劃根據這三個不同年代産生的代表性SDLC來分析一下軟體生命周期的發展要素,并且大膽的猜想一下未來。

軟體生命周期(SDLC)——第二季

繼續閱讀