基于新信息技術的軟件工程與UML教程課件:軟件工程基礎_第1頁
基于新信息技術的軟件工程與UML教程課件:軟件工程基礎_第2頁
基于新信息技術的軟件工程與UML教程課件:軟件工程基礎_第3頁
基于新信息技術的軟件工程與UML教程課件:軟件工程基礎_第4頁
基于新信息技術的軟件工程與UML教程課件:軟件工程基礎_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

軟件工程基礎任務一理解軟件及軟件工程任務二熟悉軟件開發(fā)流程任務三認識軟件質(zhì)量模型與CMMI模型習題

項目引導

本項目主要介紹軟件、軟件工程以及軟件開發(fā)流程,其中重點介紹軟件工程的內(nèi)涵、軟件生命周期和常用的軟件開發(fā)模型,幫助讀者建立對軟件及軟件工程的概念,熟悉軟件開發(fā)流程各個階段所做的工作內(nèi)容。

知識目標

(1)了解軟件的定義、特點和分類。

(2)了解軟件危機、軟件的發(fā)展歷程。

(3)理解軟件工程的內(nèi)涵和目標。

(4)熟悉軟件生命周期和常用的軟件開發(fā)模型。

(5)了解軟件質(zhì)量模型和CMMI模型。

目標能力

能夠了解軟件工程的基本概念,重點理解軟件生命周期,熟悉軟件產(chǎn)品的開發(fā)流程,認識到軟件質(zhì)量的重要性。

任務一理解軟件及軟件工程

一、軟件及分類

1.軟件定義國家標準(GB)中對軟件的定義為:與計算機系統(tǒng)操作有關的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。

其他定義:

(1)運行時,能夠提供所要求功能和性能的指令或計算機程序集合。

(2)程序能夠滿意地處理信息的數(shù)據(jù)結構。

(3)描述程序功能需求以及程序如何操作和使用所要求的文檔。

以開發(fā)語言作為描述語言,可以認為:軟件?=?程序?+?數(shù)據(jù)?+?文檔。

軟件按照功能可以分為應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件),見表1-1。

2.軟件特點

軟件產(chǎn)品不同于其他硬件產(chǎn)品,有其自身的特點:

(1)軟件是無形的,沒有物理形態(tài),只能通過運行狀況來了解功能、特性和質(zhì)量。

(2)軟件滲透了大量的腦力勞動,人的邏輯思維、智能活動和技術水平是軟件產(chǎn)品的關鍵。

(3)軟件具有可復用性,軟件開發(fā)出來很容易被復制,從而形成多個副本。

(4)軟件不會像硬件一樣老化磨損,但存在缺陷維護和技術更新。

(5)軟件的開發(fā)和運行必須依賴于特定的計算機系統(tǒng)環(huán)境,對于硬件有依賴性,為了減少依賴,開發(fā)中提出了軟件的可移植性。

二、軟件危機

1.軟件的發(fā)展歷程

計算機系統(tǒng)總是離不開軟件的,然而早期的硬件、軟件是融于一體的,為了使得某臺計算機設備能夠完成某項工作,不得不給它專門配置程序。

觀察軟件的發(fā)展,可發(fā)現(xiàn)軟件生產(chǎn)有三個發(fā)展階段,即程序設計階段、程序系統(tǒng)階段和軟件工程階段。

1)程序設計階段

20世紀50至60年代中期,隨著硬件的飛速發(fā)展,計算機實現(xiàn)批量生產(chǎn),逐步商業(yè)化,從一定程度上帶動了軟件的發(fā)展,然而,軟件生產(chǎn)仍然以個體為主。這一時期的程序通常是針對特定計算機或者特定任務編制的專用程序,程序規(guī)模小,編寫強調(diào)算法效率和對計算機資源的充分利用,但沒有系統(tǒng)化方法和管理理論指導軟件開發(fā)。

2)程序系統(tǒng)階段

大約在20世紀60年代中期到70年代中期,出現(xiàn)了多道程序、多用戶系統(tǒng)和第一代數(shù)據(jù)庫管理系統(tǒng)等新技術。以IBM的S/360為典型的通用商業(yè)化大型計算機出現(xiàn)后,一些軟件開發(fā)人員集合起來,專門為特定用戶在大型計算機上開發(fā)大型軟件系統(tǒng),編程語言和程序設計理論開始成熟,軟件生產(chǎn)以軟件作坊的形式出現(xiàn)。

3)軟件工程階段

在20世紀70年代中期到80年代中后期,結構化的工程方法獲得了廣泛應用,并已成為了一種成熟的軟件工程方法學。應該說,采用工程的原理、技術和方法實施軟件產(chǎn)品開發(fā),以適應軟件產(chǎn)業(yè)化發(fā)展的需要,成為了這個時期諸多軟件企業(yè)的追求目標。

軟件工程”自產(chǎn)生以來,人們就寄希望于它去沖破“軟件危機”這朵烏云。但是,軟件危機現(xiàn)象并沒有得到徹底排除,特別是,一些老的危機問題可能解決了,但接著又出現(xiàn)了許多新的危機問題,于是不得不去尋找一些更新的工程方法。應該說,正是危機問題的不斷出現(xiàn),推動著軟件工程方法學的快速發(fā)展。

2.軟件危機(SoftwareCrisis)

20世紀60年代以前,計算機剛剛投入實際使用,軟件設計往往只是為了一個特定的應用而在指定的計算機上進行設計和編制,并采用密切依賴于計算機的機器代碼或匯編語言,軟件的規(guī)模比較小,文檔資料通常也不存在,很少使用系統(tǒng)化的開發(fā)方法;設計軟件往往等同于編制程序,基本上是個人設計、個人使用、個人操作和自給自足的私人化的軟件生產(chǎn)方式。

1)軟件危機的表現(xiàn)

軟件危機是指落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象,例如軟件的開發(fā)成本、進度、軟件質(zhì)量等。這些問題絕不僅僅是不能正常運行的軟件才具有的,實際上,幾乎所有軟件都不同程度地存在這些問題。具體來說,軟件危機主要有以下幾方面的典型表現(xiàn):

(1)軟件開發(fā)成本、進度的估計很不準確。軟件開發(fā)機構制訂的項目計劃跟實際情況有很大差距,使得開發(fā)經(jīng)費一再突破。

(2)軟件產(chǎn)品常常與用戶的要求不一致。在開發(fā)過程中,軟件開發(fā)人員和用戶之間缺乏信息交流。

(3)軟件產(chǎn)品質(zhì)量可靠性差。軟件開發(fā)過程中,沒有建立起確實有效的質(zhì)量保證體系。

(4)軟件文檔不完整、不一致。計算機軟件不僅僅是程序,在軟件開發(fā)過程中還應該產(chǎn)生出一系列的文檔資料。實際上,軟件開發(fā)非常依賴這些文檔資料。在軟件開發(fā)過程中,軟件開發(fā)機構的管理人員需要使用這些文檔資料來管理軟件項目;技術人員則需要利用文檔資料進行信息交流;用戶也需要通過這些文檔資料來認識軟件,對軟件進行驗收,熟悉軟件的安裝、操作等。

(5)軟件產(chǎn)品可維護性差。軟件中的錯誤非常難改正,軟件很難適應新的硬件環(huán)境,很難根據(jù)用戶的需要在原有軟件中增加一些新的功能。

(6)軟件生產(chǎn)率低。軟件生產(chǎn)率跟不上硬件的發(fā)展速度,不能適應計算機應用的迅速普及,使得現(xiàn)代計算機硬件提供的巨大潛力不能被充分利用。

2)軟件危機的原因

軟件危機現(xiàn)象最初出現(xiàn)在軟件發(fā)展的第二個階段——程序系統(tǒng)階段。

通過對一系列危機現(xiàn)象的研究,人們總結發(fā)現(xiàn),產(chǎn)生軟件危機的原因主要體現(xiàn)在以下幾個方面:

(1)軟件的不可見特性。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件,缺乏“可見性”。

(2)軟件系統(tǒng)規(guī)模龐大。軟件成為產(chǎn)品以后已不同于早期程序,隨著其功能的增多,其規(guī)模越來越大、復雜程度越來越高。

(3)軟件生產(chǎn)工程化管理程度低。軟件生產(chǎn)的工程化管理是軟件作為產(chǎn)品所必需的,這意味著軟件也需要像硬件一樣,在軟件分析、設計完成之后,才能考慮軟件的實現(xiàn)。應該說,工程化管理能夠降低解決問題的代價。

(4)對用戶需求關心程度不夠。軟件開發(fā)機構不熟悉用戶業(yè)務領域。軟件技術人員所關注的僅僅是計算機技術,他們不太愿意和用戶溝通,輕視對用戶的需求調(diào)查,也缺乏有效的用戶調(diào)查策略和手段。

(5)對軟件維護重視程度不夠。軟件開發(fā)缺乏統(tǒng)一的規(guī)范。在軟件產(chǎn)品開發(fā)過程中,開發(fā)者很少考慮到這個軟件今后還需要提供維護。

(6)軟件開發(fā)工具自動化程度低。盡管軟件開發(fā)工具比30年前已經(jīng)有了很大的進步,但直到今天,軟件開發(fā)仍然離不開工程人員的個人創(chuàng)造與手工操作,軟件生產(chǎn)仍不可能像硬件設備的生產(chǎn)那樣,達到高度的自動化。

三、軟件工程

1.軟件工程的定義

軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質(zhì)量的軟件的學科。它涉及程序設計語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺、標準、設計模式等方面。

1983年美國《IEEE軟件工程標準術語》對軟件工程下的定義為:軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)方法。其中對“軟件”的定義為:計算機程序、方法、規(guī)則、相關的文檔資料以及在計算機上運行時所必需的數(shù)據(jù)。軟件工程是指應用計算機科學、數(shù)學及管理科學等原理,以工程化的原則和方法來開發(fā)與維護軟件的學科。

2.軟件工程的目標

軟件工程的目標是指在給定成本、進度的前提下,開發(fā)出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性、可互操作性和滿足用戶需求的軟件產(chǎn)品。追求這些目標有助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率,減少維護的困難。

(1)適用性:軟件在不同的系統(tǒng)約束條件下,使用戶需求得到滿足的難易程度。

(2)有效性:軟件系統(tǒng)能最有效地利用計算機的時間和空間資源。各種軟件無不把系統(tǒng)的時/空開銷作為衡量軟件質(zhì)量的一項重要技術指標。

(3)可修改性:允許對系統(tǒng)進行修改而不增加原系統(tǒng)的復雜性。

(4)可靠性:能防止因概念、設計和結構等方面的不完善造成的軟件系統(tǒng)失效,具有挽回因操作不當造成軟件系統(tǒng)失效的能力。

(5)可理解性:系統(tǒng)具有清晰的結構,能直接反映問題的需求??衫斫庑杂兄诳刂栖浖到y(tǒng)復雜性,并支持軟件的維護、移植或重用。

(6)可維護性:軟件交付使用后,能夠對它進行修改,以改正潛伏的錯誤,改進性能和其他屬性,使軟件產(chǎn)品適應環(huán)境的變化等。

(7)可重用性:把概念或功能相對獨立的一個或一組相關模塊定義為一個軟部件,可組裝在系統(tǒng)的任何位置,降低工作量。

(8)可移植性:軟件從某一環(huán)境搬到另一個環(huán)境的難易程度。

(9)可追蹤性:根據(jù)軟件需求對軟件設計、程序進行正向追蹤,或根據(jù)軟件設計、程序對軟件需求進行逆向追蹤的能力。

(10)可互操作性:多個軟件元素相互通信并協(xié)同完成任務的能力。

3.軟件工程的三要素

軟件工程技術是指軟件工程所具有的技術要素。作為軟件開發(fā)與維護的工程方法學,軟件工程具有三個方面的技術要素,即軟件工程方法、軟件工具和軟件工程過程。

軟件工程方法是指完成軟件開發(fā)與維護任務時,應該“如何做”的技術方法。它所涉及的任務貫穿于軟件開發(fā)、維護的整個過程之中,包括軟件需求分析、軟件結構設計、程序算法設計等諸多任務。

1)結構化方法

結構化方法(StructuredApproach)也稱新生命周期法,是生命周期法的繼承與發(fā)展,也是生命周期法與結構化程序設計思想的結合。結構化的最早概念是描述結構化程序設計方法的,它用三種基本邏輯結構來編程,使之標準化、線性化。結構化方法不僅提高了編程效率和程序清晰度,而且大大提高了程序的可讀性、可測試性、可修改性和可維護性。后來,把結構化程序設計思想引入MIS(ManagementInformationSystem,管理信息系統(tǒng))開發(fā)領域,逐步發(fā)展成結構化系統(tǒng)分析與設計的方法。

2)面向對象方法

面向對象方法(Object-OrientedMethod)是一種把面向對象的思想應用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,是建立在“對象”概念基礎上的方法學。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質(zhì)的一組對象。

軟件工具是為了方便軟件工程方法的運用而提供的具有自動化特征的軟件支撐環(huán)境。軟件工具通常也稱為CASE,它是計算機輔助軟件工程(Computer-AidedSoftwareEngineering)的英文縮寫。CASE工具覆蓋面很廣,包括分析建模、設計建模、源代碼編輯生成、軟件測試等。表1-2所列是一些常用的CASE工具類型。

軟件工程過程是指為了開發(fā)軟件產(chǎn)品,開發(fā)機構在軟件工具的支持下,按照一定的軟件工程方法所進行的一系列軟件工程活動。實際上,這一系列的活動也就是軟件開發(fā)中開發(fā)機構需要制定的工作步驟,它應該是科學的、合理的,否則將影響軟件開發(fā)成本、進度與產(chǎn)品質(zhì)量。因此,軟件工程過程也就涉及了軟件產(chǎn)品開發(fā)中有哪些工作步驟,各個工作步驟分別具有什么樣的工作特征,以及各個工作步驟分別需要產(chǎn)生一些什么結果等方面的問題。

4.軟件工程的基本原則

軟件工程是關于軟件項目的工程方法學,其價值只能通過具體的軟件項目才能真正體現(xiàn)出來。著名的軟件工程專家B.W.Boehm經(jīng)過總結,提出了以下七條基本原則:

(1)采用分階段的生命周期計劃,以實現(xiàn)對項目的嚴格管理。

軟件項目的開展,需要計劃在先,實施在后。統(tǒng)計表明,50%以上的失敗項目是由于計劃不周而造成的。

(2)堅持階段評審制度,以確保軟件產(chǎn)品質(zhì)量。

軟件質(zhì)量是通過軟件產(chǎn)品反映出來的,但是,軟件質(zhì)量的形成將貫穿于整個軟件開發(fā)過程之中。

(3)實行嚴格的產(chǎn)品控制,以適應軟件規(guī)格的變更。

軟件規(guī)格是軟件開發(fā)與軟件驗收的基本依據(jù),是不能隨意變更的。

(4)采用先進的程序設計技術。

許多先進的軟件工程方法往往都起源于先進的程序設計技術。

(5)軟件成果應該能夠清楚地被審查。

軟件成果是軟件開發(fā)的各個階段產(chǎn)生出來的一系列結果,是對軟件開發(fā)給出評價的基本依據(jù),包括系統(tǒng)文檔、用戶文檔、源程序、資源數(shù)據(jù)和最終產(chǎn)品等內(nèi)容。

(6)開發(fā)小組的人員應該少而精。

這條基本原則具有以下兩點含義:

其一,軟件開發(fā)小組的組成人員的素質(zhì)應該好。

其二,軟件開發(fā)小組的成員人數(shù)不宜過多。

(7)承認不斷改進軟件工程實踐的必要性。

軟件工程的意義重在實踐,作為一門工程方法學,它所推出的一系列原則、方法和標準,不僅來源于工程實踐,而且也需要在工程實踐中不斷地改進、完善。

上述七條基本原則是實現(xiàn)軟件開發(fā)工程化這個目標的必要前提。但是,僅有上述七條原則,還不足以保證軟件開發(fā)工程化進程能夠持久地進行下去。因此,Boehm提出了“承認不斷改進軟件工程實踐的必要性”,這表明:軟件工程在實際應用中,應該積極主動地采納新的軟件技術,并不斷總結新的工程經(jīng)驗。

軟件技術在不斷進步,軟件的應用領域也在不斷拓寬。軟件工程必須緊緊跟上新時代軟件的發(fā)展,才能獲得更加持久的生命力。

任務二熟悉軟件開發(fā)流程

一、軟件生命周期正如任何事物一樣,軟件也有其孕育、誕生、成長、成熟和衰亡的生存過程,一般稱其為“軟件生命周期”(SoftwareLifeCycle,SLC)。

軟件生命周期是軟件的產(chǎn)生直到報廢或停止使用的生命周期。軟件生命周期又稱為軟件生存周期或系統(tǒng)開發(fā)生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文檔以供交流或備查,從而提高軟件的質(zhì)量。

但隨著新的面向對象的設計方法和技術的成熟,軟件生命周期設計方法的指導意義正在逐步變小。生命周期的每一個周期都有確定的任務,并產(chǎn)生一定規(guī)格的文檔(資料),提交給下一個周期作為繼續(xù)工作的依據(jù)。按照軟件的生命周期,軟件的開發(fā)不再只單單強調(diào)“編碼”,而是概括了軟件開發(fā)的全過程。軟件工程要求每一周期工作的開始只能且必須是在前一個周期結果“正確”前提的方式上的延續(xù),因此,每一周期都是按“活動—結果—審核—再活動—直至結果正確”的方式循環(huán)往復進展的。

軟件生命周期一般分為六個階段,即制訂計劃、需求分析、設計、編碼、測試、運行和維護。軟件開發(fā)的各個階段之間的關系不可能是順序且線性的,而應該是帶有反饋的迭代過程。在軟件工程中,這個復雜的過程用軟件開發(fā)模型來描述和表示。

1)問題定義

要求系統(tǒng)分析員與用戶進行交流,弄清“用戶需要計算機解決什么問題”,然后提出關于“系統(tǒng)目標與范圍的說明”,提交用戶審查和確認。

2)可行性研究

一方面在于把待開發(fā)的系統(tǒng)目標以明確的語言描述出來,另一方面從經(jīng)濟、技術、法律等多方面進行可行性分析。

3)需求分析

弄清用戶對軟件系統(tǒng)的全部需求,編寫需求規(guī)格說明書和初步的用戶手冊,提交評審。

4)開發(fā)階段

開發(fā)階段由以下三個階段組成:

(1)設計。

(2)實現(xiàn):根據(jù)選定的程序設計語言完成源程序的編碼。

(3)測試。

5)維護

維護包括以下四個方面:

(1)改正性維護:在軟件交付使用后,由于開發(fā)測試時的不徹底、不完全,必然會有一部分隱藏的錯誤被帶到運行階段,這些隱藏的錯誤在某些特定的使用環(huán)境下就會暴露

出來。

(2)適應性維護:為適應環(huán)境的變化而修改軟件的活動。

(3)完善性維護:根據(jù)用戶在使用過程中提出的一些建設性意見而進行的維護活動。

(4)預防性維護:為了進一步改善軟件系統(tǒng)的可維護性和可靠性,并為以后的改進奠定基礎。

二、軟件開發(fā)模型

軟件生命周期模型是指人們?yōu)殚_發(fā)更好的軟件而歸納總結的軟件生命周期的典型實踐參考。常見的軟件生命周期模型有瀑布模型、迭代式模型、螺旋模型、快速原型模型、噴泉模型等,本節(jié)將簡單地分析并比較這幾種模型。

1.瀑布模型

瀑布模型(WaterfallModel)是一個項目開發(fā)架構,開發(fā)過程是通過設計一系列階段順序展開的,從系統(tǒng)需求分析開始直到產(chǎn)品發(fā)布和維護,每個階段都會產(chǎn)生循環(huán)反饋,因此,如果有信息未被覆蓋或者發(fā)現(xiàn)了問題,那么最好返回上一個階段并進行適當?shù)男薷?,否則項目開發(fā)進程從一個階段“流動”到下一個階段,這也是瀑布模型名稱的由來。瀑布模型將軟件生命周期劃分為軟件計劃、需求分析和定義、軟件設計、軟件實現(xiàn)、軟件測試、軟件運行和維護這六個階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級下落。采用瀑布模型的軟件過程如圖1-1所示。

圖1-1采用瀑布模型的軟件過程

然而軟件開發(fā)的實踐表明,上述各項活動之間并非完全是自上而下且呈線性圖式的,因此瀑布模型存在如下嚴重的缺陷:

(1)由于開發(fā)模型呈線性,所以當開發(fā)成果尚未經(jīng)過測試時,用戶無法看到軟件的效果。這樣軟件與用戶見面的時間間隔較長,也增加了一定的風險。

(2)在軟件開發(fā)前期未發(fā)現(xiàn)的錯誤傳到后面的開發(fā)活動中時,可能會擴散,進而可能會造成整個軟件項目開發(fā)失敗。

(3)在軟件需求分析階段,完全確定用戶的所有需求是比較困難的,甚至可以說是不太可能的。

2.迭代式模型

迭代式模型是RUP(RationalUnifiedProcess,統(tǒng)一軟件開發(fā)過程)推薦的周期模型。在RUP中,迭代被定義為包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動和要使用該發(fā)布必需的所有其他外圍元素。所以,在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程,至少包括需求工作流程、分析設計工作流程、實施工作流程和測試工作流程。實質(zhì)上,它類似小型的瀑布式項目。RUP認為,所有的階段(需求及其他)都可以細分為迭代。每一次的迭代都會產(chǎn)生一個可以發(fā)布的產(chǎn)品,這個產(chǎn)品是最終產(chǎn)品的一個子集。迭代式模型如圖1-2所示。

圖1-2迭代式模型

迭代式模型和瀑布模型的最大的差別就在于風險的暴露時間上。任何項目都會涉及一定的風險。如果能在生命周期中盡早確保避免了風險,那么計劃自然會更趨精確。有許多風險直到已準備集成系統(tǒng)時才被發(fā)現(xiàn)。不管開發(fā)團隊經(jīng)驗如何,都絕不可能預知所有的風險。

由于瀑布模型的特點(文檔是主體),很多的問題在最后才會暴露出來,這些問題的風險是巨大的。在迭代式生命周期中,需要根據(jù)主要風險列表選擇要在迭代中開發(fā)的新的增量內(nèi)容。每次迭代完成時都會生成一個經(jīng)過測試的可執(zhí)行文件,這樣就可以核實是否已經(jīng)降低了目標風險。

3.螺旋模型

螺旋模型是一種演化軟件開發(fā)過程的模型,它兼顧了快速原型的迭代的特征及瀑布模型的系統(tǒng)化與嚴格監(jiān)控。螺旋模型最大的特點在于引入了其他模型不具備的風險分析,使軟件在無法排除重大風險時有機會停止,以減小損失。同時,在每個迭代階段構建原型是螺旋模型用以減小風險的途徑。螺旋模型更適合大型的昂貴的系統(tǒng)級的軟件應用。這種模型的每一個周期都包括需求定義、風險分析、工程實現(xiàn)和評審四個階段,由這四個階段進行迭代。軟件開發(fā)過程每迭代一次,軟件開發(fā)又前進一個層次。采用螺旋模型的軟件過程如圖1-3所示。

圖1-3采用螺旋模型的軟件過程

螺旋模型基本做法是在“瀑布模型”的每一個開發(fā)階段前引入非常嚴格的風險識別、風險分析和風險控制,它把軟件項目分解成一個個小項目。每個小項目都標識一個或多個主要風險,直到所有的主要風險因素都被確定。

與瀑布模型相比,螺旋模型支持用戶需求的動態(tài)變化,為用戶參與軟件開發(fā)的所有關鍵決策提供了方便,有助于提高目標軟件的適應能力,并且為項目管理人員及時調(diào)整管理決策提供了便利,從而降低了軟件開發(fā)風險。

但是,我們不能說螺旋模型絕對比其他模型優(yōu)越,事實上,這種模型也有其自身的缺點:

(1)采用螺旋模型需要具有相當豐富的風險評估經(jīng)驗和專業(yè)知識,在風險較大的項目開發(fā)中,如果未能及時標識風險,勢必造成重大損失。

(2)過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。

4.快速原型模型

快速原型模型又稱原型模型,它是在開發(fā)真實系統(tǒng)之前,構造一個原型,在該原型的基礎上,逐漸完成整個系統(tǒng)的開發(fā)工作。從需求收集開始,開發(fā)者和客戶在一起定義軟件的總體目標,標識出已知的需求,并規(guī)劃出需要進一步定義的區(qū)域;然后進行“快速設計”,即集中于軟件中那些對用戶/客戶可見的部分的表示,以創(chuàng)建原型,并由用戶/客戶并評估進一步精化待開發(fā)軟件的需求。

隨后逐步調(diào)整原型使其滿足客戶的要求,同時也使開發(fā)者對將要做的事情有更好的理解。這個過程是迭代的,其流程從聽取客戶意見開始,隨后是建造/修改原型、客戶測試運行原型,然后往復循環(huán),直到客戶對原型滿意為止。采用快速原型模型的軟件過程如圖1-4所示。

圖1-4采用快速原型模型的軟件過程

快速原型模型的最大特點是能夠快速實現(xiàn)一個可實際運行的系統(tǒng)初步模型,供開發(fā)人員和用戶進行交流和評審,以便較準確地獲得用戶的需求。該模型采用逐步求精的方法使原型逐步完善,即每次經(jīng)用戶評審后修改、運行,不斷重復最終得到雙方認可。這個過程是迭代過程,它可以避免在瀑布模型冗長的開發(fā)過程中看不見產(chǎn)品雛形的現(xiàn)象。其優(yōu)點一是開發(fā)工具先進,開發(fā)效率高,使總的開發(fā)費用降低,時間縮短;二是開發(fā)人員與用戶交流直觀,可以澄清模糊需求,調(diào)動用戶積極參與,能及早暴露系統(tǒng)實施后潛在的一些問題;三是原型系統(tǒng)可作為培訓環(huán)境,有利于用戶培訓和開發(fā)同步,開發(fā)過程也是學習過程。

快速原型模型的缺點是產(chǎn)品原型在一定程度上限制了開發(fā)人員的創(chuàng)新,沒有考慮軟件的整體質(zhì)量和長期的可維護性。由于達不到質(zhì)量要求,產(chǎn)品可能被拋棄而采用新的模型重新設計,因此快速原型模型不適合嵌入式、實時控制及科學數(shù)值計算等大型軟件系統(tǒng)的開發(fā)。

5.噴泉模型

噴泉模型(FountainModel)是一種以用戶需求為動力,以對象為驅動的模型,主要用于描述面向對象的軟件開發(fā)過程。該模型認為軟件開發(fā)過程自下而上,各階段是周期性的并且是相互迭代和無間隙的,就像水噴上去又可以落下來,類似一個噴泉。各個開發(fā)階段沒有特定的次序要求,并且可以交互進行,可以在某個開發(fā)階段中隨時補充其他任何開發(fā)階段中的遺漏。采用噴泉模型的軟件過程如圖1-5所示。

圖1-5采用噴泉模型的軟件過程

噴泉模型不像瀑布模型那樣,需要分析活動結束后才開始設計活動,設計活動結束后才開始編碼活動。該模型的各個階段沒有明顯的界限,開發(fā)人員可以同步進行開發(fā)。其優(yōu)點是可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間,適應于面向對象的軟件開發(fā)過程。由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,這樣就不利于項目的管理。此外,這種模型要求嚴格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。

任務三認識軟件質(zhì)量模型與CMMI模型

一、軟件質(zhì)量模型軟件質(zhì)量是指與軟件產(chǎn)品滿足規(guī)定的和隱含的需要的能力有關的特征或特性的組合。軟件質(zhì)量的特性是多方面的,但必須包括:與明確確定的功能和性能需求的一致性,能滿足給定需要的全部特性;與明確成文的開發(fā)標準的一致性;與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性;顧客或用戶認為能滿足其綜合期望的程度,即軟件的組合特性,它確定即軟件在使用中將滿足顧客預期要求的程度。

目前已有很多質(zhì)量模型,它們分別定義了不同的軟件質(zhì)量屬性。比較常見的三個質(zhì)量模型是McCall模型(1977年)、Boehm模型(1978年)和ISO9126模型(1993年)。McCall等認為,特性是軟件質(zhì)量的反映,軟件屬性可用做評價準則,定量化地度量軟件屬性可知軟件質(zhì)量的優(yōu)劣。圖1-6給出了McCall模型的組成部分。

圖1-6McCall質(zhì)量模型

軟件質(zhì)量保證的主要活動內(nèi)容歸納如下:

(1)質(zhì)量方針的制定與展開;

(2)質(zhì)量保證方針和質(zhì)量保證標準的制定;

(3)質(zhì)量保證體系的建立與管理;

(4)各階段的質(zhì)量評審;

(5)確保設計質(zhì)量;

(6)重要質(zhì)量問題的提出與分析;

(7)總結實現(xiàn)階段的質(zhì)量保證活動;

(8)整理面向用戶的文檔資料和說明書等;

(9)產(chǎn)品質(zhì)量鑒定、質(zhì)量保證系統(tǒng)鑒定;

(10)質(zhì)量信息的收集、分析和使用。

二、CMMI模型

CMMI(Capability

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論