朱大鵬
在軟件開發(fā)項目中,模型不但能夠發(fā)揮出科學理論的解釋、預見最基本功能,還能發(fā)揮指導、參照的作用,對提高軟件開發(fā)工程質量具有重要意義。
軟件生命周期模型是伴隨軟件生命周期而來的。軟件生命周期是指一個軟件從提出開發(fā)要求開始直到該軟件退出使用為止的整個時間段,這與人或者產品的生命周期相類似。一般而言,軟件的生命周期劃分為軟件分析、軟件設計、編碼與測試、運行與維護四個典型階段。軟件生命周期模型,是指開發(fā)軟件項目過程中針對各個重要階段的工作順序和主要內容的安排框架,是對安排框架的抽象和固化;由于是針對軟件開發(fā)項目的,也可稱作軟件開發(fā)模型。但需要強調的是,軟件生命周期模型與軟件開發(fā)方法是兩個不同的事物。
軟件生命周期模型的主要類型和價值
軟件生命周期模型的具體形態(tài)比較豐富,約有十種左右。但從大的分類角度來看,應該主要是三類。第一類是以瀑布模型為代表的,需求明確、以文檔驅動、線性進程的線性模型。第二類是以原型模型為代表的,需求不確定、以漸進或并行過程為主的迭代模型。第三類是以數(shù)學符號體系驅動的變換模型。分類的理論依據(jù)為,軟件開發(fā)項目對于用戶方、開發(fā)方而言,都是一個漸進的學習、實踐過程,學習、實踐的過程主要體現(xiàn)在需求分析和軟件設計這兩個環(huán)節(jié),需要根據(jù)不同情況確定學習、實踐的進程和效果;模型可以理解軟件開發(fā)全部過程的學習結構框架。對于軟件開發(fā)方而言,任何一個軟件工程都要在時間、資金、知識等資源的約束條件下完成,需要用各種適應約束條件的學習、工作、組織方法來達到目標,就必須應用合適的方法和路徑。各類模型是對軟件開發(fā)項目實踐的總結,通過模型的形式能全面、直觀地表達軟件開發(fā)全過程,明確地規(guī)定要完成的主要活動和任務,是軟件項目工作的基礎。因此,在軟件開發(fā)項目中,模型不但能夠發(fā)揮出科學理論的解釋、預見最基本功能,還能發(fā)揮指導、參照的作用,對提高軟件開發(fā)工程質量具有重要意義。
軟件生命周期模型的具體形態(tài)
軟件生命周期的具體形態(tài)比較豐富,瀑布模型和原型模型屬于兩個極端,其他的迭代模型介于兩者之間,且某些迭代模型比如增量模型下還有更細的分類;各類模型有其適用條件和優(yōu)缺點,下面逐一介紹。
瀑布模型。這是一種最早的、應用最廣的模型。該模型是一個整體開發(fā)模型,一般在開發(fā)階段用戶看不到系統(tǒng),只有交付時才能看到一個完整的系統(tǒng)。該模型適合于業(yè)務需求和功能明確、完整且無重大變化的軟件開發(fā);優(yōu)點為整體需求和工作規(guī)劃明確,對軟件人員的要求適中,有利于項目組織和管理;缺點為缺乏自由度,尤其是無法解決軟件需求不明確的問題,糾錯的成本比較高。
原型模型。最典型的迭代方法,目前較為流行。該模型適用的條件是擁有建立模型的軟件工具和環(huán)境,特別適合于不能事先確定需求的軟件開發(fā),也適合于用戶對軟件不夠熟悉或專業(yè)的情況。該模型最大的優(yōu)點是通過原型能夠快速實現(xiàn)用戶與開發(fā)人員的高效交流,可用逐步求精法推動原型完善。這更符合人類的認知特點。缺點是整體性不足,容易出現(xiàn)時間、工作量失控的風險,交流成本較高并不適合大型項目和復雜項目。
增量模型。從瀑布模型發(fā)展而來的,主要特點是將原來瀑布模型的一次性整體開發(fā),調整為分部分地開發(fā)將原來必須明確的整體需求,調整為借助原型逐步確定用戶需求。優(yōu)點是在繼承瀑布模型整體性、連續(xù)性優(yōu)點的同時,能夠讓用戶及早地看到軟件功能,不斷完善需求并適時糾錯;人力資源配置靈活,剛開始不用投入大量人力。缺點是對軟件體系的開放性和整體性要求高;如果對增量需求控制不夠,容易形成邊做邊改、失去控制的風險;增量需求和增量模塊之間若銜接不暢,會形成明顯的技術風險。
螺旋模型。瀑布模型和增量模型的結合,是一種以風險分析為驅動的方法體系,在每個階段之前及經常發(fā)生的循環(huán)之前,都必須首先進行風險評估。螺旋模型的特點就在剛開始時不用把所有事情都確定,定義最重要的功能,實現(xiàn)后進行風險分析,然后聽取用戶的意見,再進入到下一個階段。如此不斷輪回,最終完成產品交付。該模型適合于大型軟件的內部開發(fā),能夠較好地控制技術風險。優(yōu)點是能夠有效控制風險,開發(fā)靈活;以小的分段開發(fā)系統(tǒng),有利于控制質量用戶參與度高,認可感好。缺點是該模型需要獲得外部用戶的信任,且外部用戶和開發(fā)團隊同樣擁有相當豐富風險評估經驗的人員,且能保持相對獨立,這是比較困難的;此外,開發(fā)的周期比較長。
智能模型。也稱作基于知識的模型,是將瀑布模型和專家系統(tǒng)結合在一起,在開發(fā)的各個階段都利用專家系統(tǒng),支持軟件人員完成開發(fā)工作。專家系統(tǒng)包括兩個部分,一個是以軟件工程知識為基礎的專家系統(tǒng),一個是應用領域知識為基礎的專家系統(tǒng)。智能模型適用于需要大量專業(yè)知識的軟件開發(fā)工程,如特定領域軟件和專家決策系統(tǒng)等。通過專家支持來縮短開發(fā)人員熟悉專業(yè)知識的時間,降低開發(fā)風險。優(yōu)點是能夠充分發(fā)揮專家系統(tǒng)的作用,提高效率、控制質量。缺點是需要有良好的專家系統(tǒng),包括各種模型、軟件工程知識與特定領域的知識等,成本高昂;專家系統(tǒng)如果出現(xiàn)質量不足等問題,會導致風險失去控制。
噴泉模型。是在軟件生命周期各個階段,尤其是分析和設計階段將瀑布、螺旋、增量模型統(tǒng)籌運用的模型。噴泉模型是以用戶需求為動力、以對象作為驅動的。該模型的特點在于,重視軟件分析,在分析階段耗用資源最多;分析階段與設計階段既是連續(xù)的、無縫的,也是可返回重復的;采取增量開發(fā)的模式,采取分析一點、設計一點的開發(fā)原則;模型在實現(xiàn)時,將系統(tǒng)實現(xiàn)和對象實現(xiàn)結合起來,對象是可以重用的。該模型適合于面向對象的軟件開發(fā)工程。該模型優(yōu)點為各個階段沒有明顯的界限,開發(fā)人員可以同步進行開發(fā),可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間;缺點為各個開發(fā)階段是重疊的,需要大量的開發(fā)人員,項目的管理難度大;此外這種模型要求嚴格管理文檔,使得審核的難度加大。
變換模型。是在軟件發(fā)的全過程中,從需求分析、設計、編碼測試、運行維護各階段,都采用嚴格的數(shù)學語言、具有精確的數(shù)學語義的方法。形式化方法有4個主要的技術源頭公理方法、模型方法、演算方法和代數(shù)方法。在形式規(guī)范語言和表示方面的探索主要為3類:描述順序系統(tǒng)行為、并發(fā)系統(tǒng)行為、集成的形式規(guī)范方法。該模型的優(yōu)點是能夠有效地避免軟件需求分析中的二義性,需求分析的文檔能夠被直接轉化為相應的程序代碼;缺點是該模型還處于探索階段,對于開發(fā)人員和支持環(huán)境的要求高,適合應用的領域有限,主要是軍事、航天等有限范圍。
綜上,各類軟件生命周期模型并不是完全隔離的,而是相互借鑒和完善的。在實踐中,各類軟件生命周期模型的應用也是相互交融的,一個軟件開發(fā)項目僅應用一種模型的情況是比較少見的。開發(fā)項目通過確認問題、分析問題,最終目的還是要解決問題,解決問題的方法并不是單一的,找到最適合各種約束條件的方法,也就是在應用合適的模型。