探討軟件開發過程模型的發展論文
0引言
從第一個軟件開發過程模型一“瀑布模型”的產生到現在,人們陸續推出了許多軟件開發過程模型11。這些軟件開發過程模型是如何產生和發展的?軟件開發過程模型還會發展嗎?軟件開發過程模型如何發展?研究這些問題對于推動軟件工程理論向前發展具有重要意義。下面對這些問題進行研討。
1對幾個典型的軟件開發過程模型的分析
下面分析幾個典型的軟件開發過程模型的產生情況,通過分析,既可以看到它們的內容又可以了解它們產生的原因。同時,也可以從整體上看到軟件開發過程模型發展的大致過程,在此基礎上思考軟件開發過程模型的產生和發展問題。
1.1瀑布模型的產生情況
早期的軟件開發活動帶有明顯的個體化特征,非常不規范,隨意性很強,人們錯誤地認為軟件就是程序,對程序之外的數據和相關的文檔材料沒有給予重視,對編寫程序之外的軟件開發活動(如需求分析、概要設計、詳細設計、軟件維護等等)沒有給予重視,結果出現了軟件危機。軟件危機的典型表現有:開發成本急劇上升、開發進度一再拖延、軟件難以維護甚至無法維護、軟件質量無法保證、開發出的產品不能滿足用戶需要,等等。為了擺脫軟件危機,人們開始研究軟件開發方法,1968年提出“軟件工程”的概念,主要思路是將人類從事各種工程項目積累起來的行之有效的原理和方法應用于軟件的開發和維護活動中。在這種情況下,1970年瀑布模型被推出。
計劃到開發成功、交刪,再到廢棄不用,有一個完整的生命周期,稱為軟件的生命周期。瀑布模型按照軟件的生命周期,將軟件過程分為:問題定義、可行性研究、需求分析、概要設計、詳細設計、編碼、測試、維護等幾個階段。軟件開發活動按順序一個階段接著一個階段地進行,每個階段完成一項特定任務,每個階段的結果經審查合格后方能進入下一個階段。瀑布模型嚴格地規定了每個階段必須提交的文檔,強迫開發人員采用規范的方法,要求每個階段提交的產品必須經過專家的仔細驗證。這樣,軟件質量得到了保證。由于各階段提交了規范的文檔,軟件維護變得容易一些。瀑布模型的成功在很大程度上是由于它是文檔驅動的模型。
瀑布模型的推出,是人們為了擺脫軟件危機邁出的重要的一步。按照瀑布模型去進行軟件開發活動,克服了開發中的個體隨意性和不規范傾向,使軟件開發有章可循,有效地遏制了日益蔓延的軟件危機。
1.2快速原型化模型的產生情況
按照瀑布模型開發軟件,雖然很有效,但靈活性不強,因為瀑布模型是按階段順序來操作的,必須在前一階段的工作完成后才能進行下一階段的工作。需求分析是一個重要的階段,由于在開發早期用戶的需求往往是模糊的,或由于某些原因用戶的需求要發生變化,導致需求分析階段的工作無法結束,造成下一階段的概要設計工作無法進行。這時如果繼續采用瀑布模型進行軟件開發活動,顯然不妥,因此為了解決這類軟件開發問題,必須構建新的軟件開發過程模型。在這種情況下,快速原型化模型被推出。
人們認識未知的事物,往往按照“實踐、認識、再實踐、再認識,逐步完善”的規律去做,經過反復多次的迭代式的實踐和認識過程,達到基本了解事物情況的目的。快速原型化模型按照這個規律進行軟件開發活動,首先快速建立一個能反映用戶主要需求的原型系統,請用戶在計算機上試用,通過試用,用戶提出修改意見;開發人員按照用戶意見快速地修改原型系統,然后再讓用戶試用;然后開發人員按照用戶意見再去修改;如此反復多次,直到原型系統完全滿足用戶需求為止。
采用快速原型化模型進行開發活動,有效地解決了用戶需求模糊不清和用戶需求不斷變化的問題。可以認為快速原型化模型是對瀑布模型的補充和完善,瀑布模型是用靜止的觀點來看待軟件開發活動,將用戶需求看成是固定不變的,這樣實際上是將用戶需求簡單化了,這種理想狀態實際很難找到。快速原型化模型是從變化的觀點來看待軟件開發活動,符合客觀型化模型的這種觀點。
1.3增量模型的產生情況
采用瀑布模型或采用快速原型化模型來開發軟件時,是按照模型規定的開發過程,完成各開發環節的所有任務,得到一個完整的軟件,將其提交給用戶。面對軟件規模越來越大、軟件市場競爭越來越激烈、用戶要求越來越高的形勢,這樣開發存在很多問題。當你將一個大的完整產品提交給用戶后,用戶要花費很多時間來學習這個新產品,短時間內很難適應這個新產品,給工作中應用該產品帶來不便;這個產品完整提交后,用戶再去評價和提出修改意見就沒有意義了。這樣,使開發風險加大,使開發時間增長,使用戶滿意度降低。為了解決這個問題,必須構建新的軟件開發過程模型。在這種情況下,增量模型被推出。
人們解決大問題時,往往是將大問題分解為若干個小問題,每個小問題比較容易解決(其中有一個小問題是核心的關鍵問題)將這些小問題分別給予解決(對于核心的關鍵問題首先給予解決),那么大問題也就被解決了。一般來說,分解出的每個小問題具有相對獨立性,即每個小問題與其它每個小問題聯系不緊密,這樣,既可以一個接著一個地順序去解決每個小問題,也可以同時去解決多個小問題。增量模型按照這樣的方法進行軟件開發,將一個大的軟件分解為一系列較小的“增量”,每個增量分別進行開發,通常開發的第一個增量是軟件的核心部分,實現軟件的基本需求。向用戶一個增量接著一個增量地分批提交軟件產品。采用增量模型,用戶從拿到第一個增量時開始,就可以學習和熟悉軟件,通過使用來評價軟件及提出修改意見;開發人員根據用戶對已經提交的增量的反饋,可以改進軟件產品。這樣,提交所有增量后,軟件產品就達到比較完善的程度,也提高了用戶滿意度。
1.4螺旋模型的產生情況
軟件開發從始到終都存在著風險,項目規模越大、軟件越復雜,開發該項目所冒的風險就越大。并且風險具有不確定性,可能發生也可能不發生,但是一旦風險變為現實,就會造成損失,甚至產生惡性后果。因此,如何識別風險、預測風險、駕馭風險,將風險可能造成的危害消除或減少,是軟件開發中必須要考慮的問題。但是在螺旋模型之前所提出的各種軟件開發過程模型,都沒有強調“風險分析”。在這種情況下,螺旋模型被推出。
其實人們做任何事情之前,都要考慮風險。如果存在風險,那么一定要想辦法去消除,否則成功希望渺茫。螺旋模型是在結合瀑布模型和快速原型化模型的發框架上,帶有瀑布模型的系統性、順序性和“邊開發,邊評審”的特點。螺旋模型也是一種迭代模型,每一次迭代均可采用快速原型化模型方法,每一次迭代均作風險分析。螺旋模型由若干個螺旋周期組成,每一周期都包括需求定義、風險分析、工程實現和評審四個階段,當項目按順時針方向沿螺旋線移動時,每迭代一次,螺旋線就前進一個周期,軟件開發又前進一個層次,系統又生成一個新版本(即構造一個新的原型,這個新原型是在風險被排除后得到的),當迭代過程進行到用戶允許或可接受的范圍時,迭代結束。
螺旋模型的推出,強化了人們的風險意識。通過使用原型來降低風險是一種行之有效的方法。螺旋模型集成了瀑布模型和快速原型化模型的優點,又有自身的特點,是一個實用性很強的軟件開發過程模型。
1.5構件組裝模型的產生情況
面向對象技術出現之前所提出的各種軟件開發過程模型,一般很少考慮“軟件構件”的重復使用問題,即使編程時重復使用了一些庫函數,量也不大,并且粒度小。因此,軟件開發的'任何一項工作基本是從頭開始做,完整地做到尾。這樣開發的缺點是成本高、時間長,當然出錯的可能性也大。這里的“軟件構件”一般指源代碼,現在將需求規格說明、用戶界面、軟件體系結構等等也作為“軟件構件”。人們考慮:如果在開發新軟件時,能大量地重復使用已經開發過的軟件中的內容,開發時間和成本不就降低了嗎?又由于已經開發過的軟件經過了嚴格的測試,重復使用這些內容在質量上當然是有保證的。面向對象技術的出現,為這個想法開辟了道路。在這種情況下,構件組裝模型被推出。
重復使用的思想早已在許多領域廣泛應用了,例如在工業生產中,重復使用各種零部件來組裝生產新產品。在軟件生產中,由于每個軟件與其它軟件都不同,在面向對象技術出現之前,重復使用難度比較大。面向對象技術將數據和操作該數據的算法封裝在一起,做成一個個的“類”,將一個或多個相關“類”組合成一個“軟件構件”,在某領域內使用過的所有“軟件構件”被放到一個“軟件構件庫”中,這樣為重復使用打下了基礎,構件組裝模型就是通過重復使用“軟件構件庫”中的軟件構件來進行軟件開發。使用構件組裝模型開發軟件時,根據被開發軟件的目標和開發方案,選取軟件構件庫中的軟件構件,組裝成一個完整的軟件版本。
構件組裝模型的推出,使前人的勞動成果被有效地利用了起來。按此模型進行開發活動,可以節省時現,使軟件開發工作開始進入一個新時代。
1.6幾個軟件開發過程模型產生情況小結
從以上分析幾個典型的軟件開發過程模型的產生情況可以看出:軟件開發過程模型的出現,是人們為了消除軟件危機、使軟件開發活動有序化和規范化、高效率地得到高質量的軟件產品而不斷研究總結的結果,每一種新的軟件開發過程模型的出現,都為當時軟件開發遇到的某一類問題提供了解決方案,從而豐富了軟件工程的內容,推動了軟件工程理論向前發展。
2.促使軟件開發過程模型發展的主要因素
現在已經有了這么多的軟件開發過程模型,軟件開發過程模型還會發展嗎?答案是肯定的。通過上面的分析過程和深入的思考,可以得出促使軟件開發過程模型發展的兩個主要因素:
第一,客觀世界的情況在變化,不斷出現新的問題,需要用計算機處理。面對新情況和新問題,原有的軟件開發過程模型無法勝任,因此需要推出新的軟件開發過程模型來處理新情況和新問題。回顧軟件開發過程模型的變化和發展的歷史,許多軟件開發過程模型是為了處理新情況和新問題而推出的。例如快速原型化模型是針對用戶需求不完整和用戶需求不斷變化的情況而推出的。例如螺旋模型是針對風險控制問題而推出的。例如文獻[5]所介紹的建立在面向Agent技術上的Gaia模型,是針對現有的軟件開發過程模型在開發復雜分布軟件系統時常常遇到困難而推出的。例如文獻[6]所介紹的一種基于Agent的自適應軟件過程模型,是針對軟件過程所處的環境發生變化問題而推出的。
第二,人們希望軟件開發的效率更高、質量更好、速度更快,因此人們不會滿足現狀,勢必要研究并推出新的軟件開發過程模型。例如構件組裝模型的推出,就是人們不滿足現狀、遵循“重復使用”的思想所推出的軟件開發過程模型。再如文獻[7]所介紹輕載(敏捷)軟件開發方法中的XP模型(極限編程),也是人們不滿足現狀,針對傳統模型存在的問題,按照新的理念所推出的軟件開發過程模型。以上兩個主要因素顯然會長期存在,因此軟件開發過程模型必然還要發展。
3.軟件開發過程模型如何發展
既然還會有新的軟件開發過程模型被推出,就是說軟件開發過程模型還要發展,因此人們要思考軟件開發過程模型如何發展這個問題。根據對軟件開發過間.降低成本,軟件質量也有紙構件組裝模型的出程模型有關情況的分析研究,軟件開發過程模型可以
按以下三個方向去發展:
第一,可以通過對現有模型進行改進、擴充、綜合去發展。
結合新問題的內容,針對現有模型存在的適用面窄、考慮問題欠周到等情況,可以通過改進和擴充某個軟件開發過程模型的內容而得到一個新模型,或者通過綜合運用幾種軟件開發過程模型的內容而得到一個新模型。如文獻[8]介紹的一種新的軟件開發過程模型,是在瀑布模型基礎上進行改進和擴充的結果。再如增量模型,是綜合運用瀑布模型和快速原型化模型的結果。再如文獻[9]介紹的一種新的軟件開發過程模型,是綜合運用瀑布模型和構件組裝模型的結果。再如文獻[10]介紹的一種新的軟件開發過程模型,是綜合運用構件組裝模型和并行過程模型的結果。
第二,軟件開發過程模型可以遵循新的思維方式去發展。
現有的軟件開發過程模型,每一個都體現出各自不同的思維方式,例如瀑布模型是所有采用線性思維方式模型的典型代表,快速原型化模型是所有采用反復循環迭代思維方式模型的典型代表。遵循新的思維方式去發展,就是說,新建立的軟件開發過程模型應該是新的思維方式的體現,即按照新的想法去組織軟件開發活動。例如XP模型(極限編程)就是按照新的思維方式去發展起來的。從Agent具有自主性、反應性、社會性等角度看,各種面向Agent的軟件開發過程模型都是按照新的思維方式發展起來的。
第三,軟件開發過程模型可以借助新技術和新工具去發展。
任何軟件開發過程模型都是建立在一定的技術和工具基礎之上,技術和工具的進步對軟件開發過程模型的影響是巨大的,當新技術和新工具出現后,傳統的開發方式勢必要被改變,所以說新技術和新工具會推動軟件開發過程模型更新發展。如構件組裝模型、基于體系結構的軟件開發過程模型,就是在面向對象技術基礎上發展起來的。再如RUP[12]模型,就是在UML這個開發工具基礎上發展起來的。
4 結束語
軟件開發過程模型的出現不是偶然的,它是軟件開發活動到達一定程度后的必然結果。軟件開發活動的多樣性,決定了軟件開發過程模型在形式上的多樣性。每一個軟件開發過程模型都有不同于其它模型的特點,這個特點體現了需要被解決的某一類問題所具有的特殊性。人的思維在發展,開發技術和工具在發展,推動著軟件開發過程模型更新發展。在目前的基礎上,研究軟件開發過程模型的發展問題,對于提高軟件開發的質量和效率具有重要的意義。
【探討軟件開發過程模型的發展論文】相關文章:
信用評分模型探討分析論文04-06
流域模擬模型的發展思考論文05-28
民族體育發展探討的論文05-11
探討體育報道發展論文05-12
最新小額信貸發展探討論文04-05
休閑農業發展建議探討性論文09-11
對發展高校體育排舞的探討的論文05-19
專業鎮發展軌跡探討論文05-29
重彩畫的表達與發展探討論文05-30