當前位置:文書都 >

實用範文 >論文 >

探討軟件開發過程模型的發展論文

探討軟件開發過程模型的發展論文

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 結束語

軟件開發過程模型的出現不是偶然的,它是軟件開發活動到達一定程度後的必然結果。軟件開發活動的多樣性,決定了軟件開發過程模型在形式上的多樣性。每一個軟件開發過程模型都有不同於其它模型的特點,這個特點體現了需要被解決的某一類問題所具有的特殊性。人的思維在發展,開發技術和工具在發展,推動着軟件開發過程模型更新發展。在目前的基礎上,研究軟件開發過程模型的發展問題,對於提高軟件開發的質量和效率具有重要的意義。

  • 文章版權屬於文章作者所有,轉載請註明 https://wenshudu.com/shiyongfanwen/lunwen/dp7nzv.html
專題