官术网_书友最值得收藏!

1.4 軟件開發方法

為了克服軟件危機,從20世紀60年代末開始,各國的軟件工作者一直在進行軟件開發方法的研究與實踐,并取得了一系列研究成果。

軟件工程的內容包括技術和管理兩方面,兩方面又緊密結合。通常,把在軟件生命期中所使用的一整套技術的集合稱為方法學(Methodology)或范型(Paradigm)。

軟件開發方法是一種使用早已定義好的技術集及符號表示習慣來組織軟件生產過程的方法,其方法一般表述成一系列的步驟,每一步驟都與相應的技術和符號相關。其目標是要在規定的投資和時間內,開發出符合用戶要求的、高質量的軟件,為此,需要有成功的開發方法。

軟件開發方法可分為兩大類:面向過程的開發方法和面向對象的開發方法。本節將對結構化開發方法、原型化開發方法和面向對象的開發方法進行簡介。

1.4.1 結構化開發方法

結構化開發方法(Structured Developing Method)是一種面向數據流的開發方法,它的基本原則是功能的分解與抽象。結構化方法提出了一組提高軟件結構合理性的準則,如分解和抽象、模塊的獨立性、信息隱蔽等。它是現有的軟件開發方法中最成熟、應用最廣泛的方法。該方法的主要特點是快速、自然和方便。

結構化方法的指導思想是“自頂向下、逐步求精”。

1.結構化開發方法的組成

結構化方法由三部分構成,按照推出的先后次序為:

① 20世紀70年代初推出的結構化程序設計方法,即SP(Structured Program)法;

② 20世紀70年代中推出的結構化設計方法,即SD(Structured Design)法;

③ 20世紀70年代末推出的結構化分析方法,即SA(Structured Analysis)法。

SA法、SD法、SP法相互銜接,形成了一整套開發方法。將SA法與SD法結合起來,又稱為結構化分析與設計技術(SADT)。

2.結構化方法的工作模型

結構化方法的工作模型為瀑布模型(Waterfall Model)。但從20世紀80年代開始,逐漸發現其不足。軟件開發過程是個充滿回溯的過程,而瀑布模型卻將其分割為獨立的幾個階段,不能從本質上反映軟件開發過程本身的規律。此外,過分強調復審,并不能完全避免較為頻繁的變動。盡管如此,瀑布模型仍然是開發軟件產品的一個行之有效的工程模型。

1.4.2 原型化開發方法

原型是指軟件開發過程中,軟件的一個早期可運行的版本,它反映了最終系統的部分重要特性。原型化方法的基本思想是,花費少量代價建立一個可運行的系統,使用戶及早獲得學習的機會。原型化開發方法又稱速成原型(Rapid P rototyping)法,強調的是軟件開發人員與用戶的不斷交互,通過原型的演進不斷適應用戶任務改變的需求。將維護和修改階段的工作盡早進行,使用戶驗收提前,從而使軟件產品更加適合實際應用。原型化開發方法有兩種方法。

① 快速建立需求規格原型(Rapid S pecification Pr ototyping,RSP)法所建立的原型反映了系統的某些特征,讓用戶學習,有利于獲得更加精確的需求說明書,需求說明書一旦確定,原型就被廢棄,后階段的工作仍按照瀑布模型開發,所以也稱為廢棄(Throw Away)型。

② 快速建立漸進原型(Rapid Cyclic Prototyping,RCP)法采用循環漸進的開發方式,對系統模型作連續精化,將系統需要具備的功能逐步添加上去,直至所有功能全部滿足,此時的原型模型也就是最終的產品,所以也稱為追加(add on)型。

原型化開發方法適合于開發探索型、實驗型與進化型的軟件系統。其工作模型如圖1-9所示,這是一個循環的模型。原型化開發方法按以下步驟循環執行。

圖1-9 原型化開發方法工作模型

① 快速分析。快速確定軟件系統的基本要求,確定原型所要體現的特征(界面、總體結構、功能、性能)。

② 構造原型。在快速分析的基礎上,根據基本規格說明,忽略細節,只考慮主要特征,快速構造一個可運行的系統。有三類原型:用戶界面原型、功能原型和性能原型。

③ 運行和評價原型。用戶試用原型并與開發者之間頻繁交流,目的是驗證原型的正確性。

④ 修改與改進。對原型進行修改、增刪。

1.4.3 面向對象的軟件開發方法

面向對象的軟件開發方法(Object-Oriented Software Development,OOSD)是20世紀80年代推出的一種全新的軟件開發方法。OOSD非常實用且強有力,被譽為20世紀90年代軟件的核心技術之一。

其基本思想是:對問題領域進行自然的分割,以更接近人類通常思維的方式建立問題領域的模型,以便對客觀的信息實體進行結構和行為的模擬,從而使設計的軟件更直接地表現問題的求解過程。面向對象的開發方法以對象作為最基本的元素,是分析和解決問題的核心。

Coad和Yourdon給出一個面向對象的定義如下:

面向對象 = 對象 + 類 + 繼承 + 消息

如果一個軟件系統是按照這樣4個概念設計和實現的,則可以認為這個軟件系統是面向對象的。

OOSD由OOA(面向對象的分析)、OOD(面向對象的設計)和OOP(面向對象的程序設計)三部分組成。

(1)OOA(Object-Oriented Analysis)法

OOA就是解決“做什么”的問題。它的基本任務就是建立以下三種模型。

對象模型(信息模型):定義構成系統的類和對象,以及它們的屬性與操作。

狀態模型(動態模型):描述任何時刻對象的聯系及其聯系的改變,即時序。常用狀態圖與事件追蹤圖描述。

處理模型(函數模型):描述系統內部數據的傳送處理。

顯然,在三大模型中,最重要的是對象模型。如何建立三大模型,我們將在第5章中介紹。

(2)OOD(Object-Oriented Design)法

在需求分析的基礎上,進一步解決“如何做”的問題。OOD法分為概要設計和詳細設計兩步。

概要設計:細化對象行為,添加新對象,認定類,組類庫,確定外部接口及主要數據結構。

詳細設計:詳細的對象描述。

(3)OOP(Object-Oriented Program)法

使用面向對象的程序設計語言,如C++進行程序設計,因為該類語言支持對象、類、多態性和繼承等概念,因此比較容易實現面向對象的程序設計。

用面向對象方法開發的軟件,其結構基于客觀世界界定的對象結構,因此與傳統的軟件相比較,軟件本身的內容結構發生了質的變化,因而易復用性和易擴充性都得到了提高,而且能支持需求的變化。

主站蜘蛛池模板: 道真| 红安县| 郴州市| 灵武市| 临漳县| 香河县| 玉环县| 崇礼县| 靖宇县| 朔州市| 家居| 文水县| 右玉县| 紫阳县| 尖扎县| 灵武市| 定南县| 张家口市| 板桥市| 镇远县| 栖霞市| 长治县| 托里县| 郧西县| 土默特左旗| 纳雍县| 建宁县| 吉隆县| 肇州县| 永寿县| 滦平县| 泗水县| 玉门市| 丰县| 日照市| 宝丰县| 拜城县| 定州市| 淮南市| 霍邱县| 长沙县|