軟件工程概述_第1頁
軟件工程概述_第2頁
軟件工程概述_第3頁
軟件工程概述_第4頁
軟件工程概述_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章軟件工程概述1.1軟件工程的產(chǎn)生和發(fā)展軟件工程是在克服60年代末所出現(xiàn)的“軟件危機”的過程中逐漸形成與發(fā)展的。自968年在北大西洋公約組織(NATO)舉行軟件可靠性的學(xué)術(shù)會議上正式提出“軟件工程(SoftwareEngineering)”的概念以來,在不到40年的時間里,軟件工程在理論和實踐兩方面都取得了長足的進步。軟件工程是一門指導(dǎo)計算機軟件系統(tǒng)開發(fā)和維護的工程學(xué)科,是一門新興的邊緣學(xué)科,它涉及到計算機科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)等多學(xué)科,軟件工程的研究范圍廣,不僅包括軟件系統(tǒng)的開發(fā)方法和技術(shù)、管理技術(shù),還包括軟件工具、環(huán)境及軟件開發(fā)的規(guī)范。軟件是信息化的核心,國民經(jīng)濟、國防建設(shè)、社會發(fā)展及人民生活都離不開軟件。軟件產(chǎn)業(yè)關(guān)系到國家經(jīng)濟發(fā)展和文化安全,體現(xiàn)了國家綜合實力,是決定1世紀國際競爭地位的戰(zhàn)略性產(chǎn)業(yè)。因此大力推廣應(yīng)用軟件工程的開發(fā)技術(shù)及管理技術(shù),提高軟件工程的應(yīng)用水平,對促進我國軟件產(chǎn)業(yè)與國際接軌推動軟件產(chǎn)業(yè)的迅速發(fā)展起著十分重要的關(guān)鍵作用。1.1.1軟件工程的發(fā)展過程軟件工程的產(chǎn)生和發(fā)展是與軟件的發(fā)展過程緊密相關(guān)的。自從第一臺電子計算機誕生以來,就開始了軟件的生產(chǎn),“軟件工程”提出至今,它的發(fā)展已經(jīng)歷了四個重要階段:第一代軟件工程(60年代末到70年代)60年代末,軟件生產(chǎn)主要采用“生產(chǎn)作坊方式”。隨著軟件需求量、規(guī)模及復(fù)雜度的迅速增大,生產(chǎn)作坊的方式已不能夠適應(yīng)軟件生產(chǎn)的需要,出現(xiàn)了所謂“軟件危機”,即軟件生產(chǎn)效率低,大量質(zhì)量低劣的軟件涌入市場或在開發(fā)過程中夭折。由于“軟件危機”的不斷擴大,對軟件生產(chǎn)已經(jīng)產(chǎn)生了嚴重危害。為了克服“軟件危機"(Softwarecrisis),在著名的NATO(北大西洋公約組織)軟件可靠性會議上第一次提出“軟件工程”的名詞,將軟件開發(fā)納入了工程化的軌道,基本形成了軟件工程的概念、框架、技術(shù)和方法。這階段又稱為傳統(tǒng)的軟件工程。第二代軟件工程(80年代中到90年代)80年代中開始,以Smalltalk為代表的面向?qū)ο蟮某绦蛟O(shè)計語言相繼推出,面向?qū)ο蟮姆椒ㄅc技術(shù)得到發(fā)展,從90年代起,研究的重點從程序設(shè)計語言逐漸轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計,演化為一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系90年代以來,出現(xiàn)了許多面向?qū)ο蟮拈_發(fā)方法的流派,面向?qū)ο蟮姆椒ㄖ饾u成為軟件開發(fā)的主流。所以這一階段又成為稱為對象工程。第三代軟件工程隨著規(guī)模的不斷增大,開發(fā)人員也隨之增多,開發(fā)時間相應(yīng)持續(xù)增長,加之軟件是知識密集型的邏輯思維產(chǎn)品,這些都增加了軟件工程管理的難度。人們在軟件開發(fā)的實踐過程中認識到:提高軟件生產(chǎn)率,保證軟件質(zhì)量的關(guān)鍵是對“軟件過程”的控制和管理,提出對軟件項目管理的計劃、組織、成本估算、質(zhì)量保證、軟件配置管理等技術(shù)與策略,逐步形成了軟件過程工程。構(gòu)件工程90起年代,基于構(gòu)件(Component)的開發(fā)方法取得重要進展,軟件系統(tǒng)的開發(fā)可通過使用現(xiàn)存的可復(fù)用構(gòu)件組裝完成,而無需從頭開始構(gòu)造,以此達到提高效率和質(zhì)量,降低成本的目的。稱為構(gòu)件工程。1.1.2軟件危機1、 軟件危機的產(chǎn)生“軟件危機”Softwarecrisis)的出現(xiàn)是由于軟件的規(guī)模越來越大,復(fù)雜度不斷增加,而軟件需求量也不斷增大,“生產(chǎn)作坊式”的軟件開發(fā)模式及技術(shù)已不能滿足軟件發(fā)展的需要。軟件開發(fā)過程是一種高密集度的腦力勞動,對開發(fā)人員的需要投入大量的人力、物力和財力,由于軟件開發(fā)的模式及技術(shù)不能適應(yīng)軟件發(fā)展的需要,致使大量質(zhì)量低劣的軟件產(chǎn)品涌向市場,有的甚至在開發(fā)過程中就夭折了。國外在開發(fā)一些大型軟件系統(tǒng)時,遇到了許多困難,有的系統(tǒng)最終徹底失敗了;有的系統(tǒng)則比原計劃推遲了好多年,而且費用大大超過了預(yù)算;有的系統(tǒng)不能符合用戶當初的期望;有的系統(tǒng)則無法進行修改維護。例如:IBM公司的OS/360,共約100萬條指令,花費了5000個人年;經(jīng)費達數(shù)億美元,而結(jié)果卻令人沮喪,錯誤多達2000個以上,系統(tǒng)根本無法正常運行。OS/360系統(tǒng)的負責人Brooks這樣描述開發(fā)過程的困難和混亂:“像巨獸在泥潭中作垂死掙扎,掙扎得越猛,泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運。”1962年6月,美國飛往金星的第一個空間探測器(水手I號),因其飛艙中計算機導(dǎo)航程序的一條語句出錯,致使空間探測器偏離航線無法取得成功。還有,可以稱為上世紀世界上最精心設(shè)計,并花費了巨額投資的美國阿波羅登月飛行計劃的軟件,也仍然沒有避免出錯,例如阿波羅號由于太空飛船的一個計算機軟件錯誤,造成存儲器的一部分信息丟失;阿波羅14號在飛行的10天中,出現(xiàn)了18個軟件錯誤。2、 軟件危機的表現(xiàn)20世紀60年代末期所發(fā)生的軟件危機,反映在軟件可靠性沒有保障、軟件維護工作量大、費用不斷上升、進度無法預(yù)測、成本增長無法控制、程序人員無限度地增加等各個方面,以致形成人們難以控制軟件開發(fā)的局面。軟件危機”主要表現(xiàn)在兩個方面:軟件產(chǎn)品質(zhì)量低劣,甚至在開發(fā)過程中就夭折。軟件生產(chǎn)率低,不能滿足需要。1.1.3軟件工程的定義究竟什么是“軟件工程”?自從1968年提出軟件工程這個術(shù)語,對于軟件工程就有了各種各樣的定義,但是它們的基本思想都是強調(diào)在軟件開發(fā)過程中應(yīng)用工程化原則的重要性。例如,Boehm曾經(jīng)為軟件工程下了以下定義:“運用現(xiàn)代科學(xué)技術(shù)知識時間并構(gòu)造計算機程序及為開發(fā)、運行和維護這些程序所必需的相關(guān)文件資料?!?。1983年,IEEE(國際電氣與電子工程師協(xié)會)所下的定義是:軟件工程是開發(fā)、運行、維護和修復(fù)軟件的系統(tǒng)方法。1990年,IEEE又將定義更改為:對軟件開發(fā)、運作、維護的系統(tǒng)化的、有規(guī)范的、可定量的方法之應(yīng)用,即是對軟件的工程化應(yīng)用。軟件工程有方法、工具和過程三個要素。軟件工程方法就是研究軟件開發(fā)“如何作”的技術(shù);軟件工具是研究支撐軟件開發(fā)方法的工具、軟件工具的集成環(huán)境一計算機輔助軟件工程CASE;軟件工程過程則是指將軟件工程方法與軟件工具相結(jié)合實現(xiàn)合理、及時的進行軟件開發(fā)的目的。1.1.4軟件工程研究的內(nèi)容軟件工程是一門指導(dǎo)軟件開發(fā)的工程學(xué)科,是以計算機理論及其他相關(guān)學(xué)科的理論為指導(dǎo),采用工程化的概念、原理、技術(shù)和方法進行軟件的開發(fā)和維護,把經(jīng)實踐證明的科學(xué)的管理措施與最先進的技術(shù)方法結(jié)合起來,以較少的代價獲得高質(zhì)量的軟件。1、 軟件工程研究的內(nèi)容軟件工程是一門新興的邊緣學(xué)科,涉及的學(xué)科多,研究的范圍廣。歸結(jié)起來軟件工程研究的主要內(nèi)容有以下4個方面:方法與技術(shù)、工具及環(huán)境、管理技術(shù)、標準與規(guī)范。軟件開發(fā)方法,主要討論軟件開發(fā)的各種方法及其工作模型,包括了多方面的任務(wù),如軟件系統(tǒng)需求分析、總體設(shè)計、以及如何構(gòu)建良好的軟件結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計等,同時討論具體實現(xiàn)的技術(shù),軟件工具為軟件工程方法提供了支持,研究計算機輔助軟件工程CASE,建立軟件工程環(huán)境。軟件工程管理,是指對軟件工程全過程的控制和管理,包括計劃安排、成本估算、項目管理、軟件質(zhì)量管理。軟件工程標準化與規(guī)范化,使得各項工作有章可循,以保證軟件生產(chǎn)率和軟件質(zhì)量的提高。軟件工程標準可分為個層次:國際標準、行業(yè)標準、企業(yè)規(guī)范和項目規(guī)范。必須要強調(diào)的是,隨著人們對軟件系統(tǒng)研究的逐漸深入,軟件工程所研究的內(nèi)容也不是一成不變的。2、 軟件工程的目標軟件工程研究的目標是“以較少的投資獲取高質(zhì)量的軟件”。即軟件的開發(fā)要在保證質(zhì)量和效率的同時,盡量縮短開發(fā)期,降低軟件成本。軟件過程所實現(xiàn)的多目標中,有的是互補的,例如縮短開發(fā)期,顯然可降低成本,維護是需要代價的,易于維護就可降低總成本。高性能與高可靠性是互補的。而有的目標則是互斥的,例如:要獲得高的可靠性,通常要采取一些冗余的措施,往往成本會增加。為了實現(xiàn)軟件工程的多目標,要對軟件的的各項質(zhì)量指標進行綜合考慮,以實現(xiàn)軟件開發(fā)的“多!快!好!?。 钡目偰繕?。圖1.1軟件工程的目標3、軟件工程的基本原則過去,軟件工程的基本原則是抽象、模塊化、清晰的結(jié)構(gòu)、精確的設(shè)計規(guī)格說明。但今天的認識已經(jīng)發(fā)生了很大的變化?,F(xiàn)已提出的軟件工程四條基本原則是:第一,必須認識軟件需求的變動性,便采取適當措施來保證結(jié)果產(chǎn)品能忠實地滿足用戶要求。在軟件設(shè)計中,通常要考慮模塊化、抽象與信息隱蔽、局部化、一致性等原則。第二,穩(wěn)妥的設(shè)計方法大大地方便軟件開發(fā),以達到軟件工程的目標。軟件工具與環(huán)境對軟件設(shè)計的支持來說,頗為重要。第三,軟件工程項目的質(zhì)量與經(jīng)濟開銷直接取決于對它所提供的支撐的質(zhì)量與效用。第四,有效的軟件工程只有在對軟件過程進行有效管理的情況下才能實現(xiàn)。近年來,印度的軟件產(chǎn)業(yè)迅速發(fā)展,其成功的經(jīng)驗是,嚴格按照國際規(guī)范進行科學(xué)管理。在本教材中,雖然主要討論軟件開發(fā)技術(shù),只在第十章討論軟件管理技術(shù),但軟件管理仍然是軟件開發(fā)成功的關(guān)鍵,因此,將介紹當前質(zhì)量管理的國際規(guī)范CMM(軟件成熟度的度量)。1.2軟件與軟件生存期“軟件工程”是在軟件生產(chǎn)中采用工程化的方法,采用一系列科學(xué)的、現(xiàn)代化的方法技術(shù)來開發(fā)軟件。這種工程化的思想貫穿到軟件開發(fā)和維護的全過程。為了進一步學(xué)習(xí)有關(guān)軟件工程的方法、技術(shù),先介紹軟件、軟件生存期及軟件工程過程,這幾個重要的概念。1.2.1軟件的概念和特點1.軟件(Software)

“軟件就是程序,開發(fā)軟件就是編寫程序”是一個錯誤觀念。這種錯誤觀點的長期存在,影響了軟件工程的正常發(fā)展。事實上,正如Boehm指出的:軟件是程序以及開發(fā)、使用和維護程序所需的所有文檔。它是由應(yīng)用程序,系統(tǒng)程序,面向用戶的文檔及面向開發(fā)者的文檔四部分構(gòu)成。即:軟件=程序+文檔,2.軟件的特點軟件是一種邏輯實體,不是具體的物理實體。軟件產(chǎn)品的生產(chǎn)主要是研制。軟件具有“復(fù)雜性”,其開發(fā)和運行常受到計算機系統(tǒng)的限制。軟件成本昂貴,其開發(fā)方式目前尚未完全擺脫手工生產(chǎn)方式。軟件不存在磨損和老化問題,但存在退化問題。失效率失效率圖1.2軟件失效率曲線失效率失效率圖1.2軟件失效率曲線圖1.1給出了硬件的失效率曲線,它是一個J型曲線(即浴盆曲線),說明硬件隨著使用時間的增加失效率急劇上升。圖1.2所描述的軟件失效率曲線,它沒有!型曲線的右半翼表明軟件隨著使用時間的增加失效率降低,因為軟件不存在磨損和老化問題,然而存在退化問題。3、軟件的分類按照軟件功能劃分?系統(tǒng)軟件-如操作系統(tǒng)、設(shè)備驅(qū)動程序等。?支撐軟件(實用軟件)一協(xié)助用戶開發(fā)的工具軟件,如編輯程序、程序庫、圖形軟件包等。?應(yīng)用軟件一如工程與科學(xué)計算軟件、CAD/CAM軟件、CAI軟件、信息管理系統(tǒng)等。按照軟件規(guī)模劃分如表1—1所示,按照軟件的不同大小(源代碼行、參加人數(shù)、研制時間分為微型、小型、中型、大型、甚大型和極大型。需要說明的是:隨著軟件產(chǎn)品規(guī)模的不斷增大,類別的指標也會變化。(3)按照軟件工作方式劃分實時處理軟件、交互式軟件、批處理軟件(4)按照軟件服務(wù)對象的范圍劃分?項目軟件一由客戶委托開發(fā)的軟件。產(chǎn)品軟件一由軟件開發(fā)機構(gòu)開發(fā),提供給市場的。此外,還可以按照軟件使用的頻度及按照軟件失效的影響進行劃分。表1-1軟件規(guī)模分類類別參加人數(shù)研制期限產(chǎn)品規(guī)模(源代碼行)微型11—4周0.5K小型11—6月1K—2K中型2—51—2年5K—50K大型5—202—3年5K—500K甚大型100—10004—5年1M極大型2000—50005—10年1M—10M1.2.2軟件工程過程軟件工程過程(Softwareengineeringprocess)是指在軟件工具的支持下,所進行的一系列軟件工程活動。通常包括以下四類基本過程:軟件規(guī)格說明:規(guī)定軟件的功能及其運行環(huán)境。軟件開發(fā):產(chǎn)生滿足規(guī)格說明的軟件。軟件確認:確認軟件能夠完成客戶提出的要求。軟件演進:為滿足客戶的變更要求,軟件必須在使用的過程中演進。軟件工程過程具有可理解性、可見性(過程的進展和結(jié)果可見)可靠性、可支持性(易于使用CASE工具支持)、可維護性、可接受性(為軟件工程師接受)、開發(fā)效率和健壯性(抵御外部意外錯誤的能力)等特性。1.2.3軟件Th存期軟件生命周期(SDLD)是指一個從用戶需求開始,經(jīng)過開發(fā)、交付使用,在使用中不斷地增補修訂,直至軟件報廢的全過程,亦稱軟件生存期lifecycle)。GB8567中規(guī)定,軟件生命周期分為7個階段:可行性研究和項目開發(fā)計劃可行性研究和項目開發(fā)計劃階段必須要回答的問題是“要解決的問題是什么”。需求分析需求分析階段的任務(wù)不是具體地解決問題,而是準確地確定“軟件系統(tǒng)必須做什么”,確定軟件系統(tǒng)必須具備哪些功能。概要設(shè)計概要設(shè)計就是設(shè)計軟件的結(jié)構(gòu),該結(jié)構(gòu)由哪些模塊組成,這些模塊的層次結(jié)構(gòu)是怎樣地,這些模塊的調(diào)用關(guān)系是怎樣地,每個模塊的功能是什么。同時還要設(shè)計該項目的應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu),即應(yīng)用系統(tǒng)要存儲什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系等。詳細設(shè)計詳細設(shè)計階段就是為每個模塊完成的功能進行具體描述,要把功能描述變?yōu)榫_的、結(jié)構(gòu)化的過程描述。編碼編碼階段就是把每個模塊的控制結(jié)構(gòu)轉(zhuǎn)換成計算機可接受的程序代碼,即寫成以某特定程序設(shè)計語言表示的“源程序清單”。測試測試是保證軟件質(zhì)量的重要手段,其主要方式是在設(shè)計測試用例的基礎(chǔ)上檢驗軟件的各個組成部分。測試分為模塊測試、組裝測試、確認測試。維護軟件維護是軟件生存期中時間最長的階段。已交付的軟件投入正式使用后,便進入軟件維護階段,它可以持續(xù)幾年甚至幾十年。在大部分文獻中將生存周期劃分為5個階段,即要求定義、設(shè)計、編碼、測試及維護。其中要求定義階段包括可行性研究和項目開發(fā)計劃、需求分析,設(shè)計階段包括概要設(shè)計和詳細設(shè)計。為了描述軟件生存期的活動,提出了多種生存期模型。例如:瀑布模型、循環(huán)模型、演化模型、螺旋模型等。1.3軟件生存期模型軟件生存期模型是描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。它確立了軟件開發(fā)和演繹中各階段的次序限制以及各階段活動的準則,確立開發(fā)過程所遵守的規(guī)定和限制,便于各種活動的協(xié)調(diào)以及各種人員的有效通信,有利于活動重用和活動管理。目前有若干軟件生存期模型,如瀑布模型、增量模型、螺旋模型、噴泉模型、變換模型和基于知識的模型等。1.3.1瀑布模型瀑布模型如圖1.3所示,這是1970年W.Royce提出的最早出現(xiàn)的軟件開發(fā)模型。瀑布模型是將軟件開發(fā)活動中的各項活動規(guī)定為依線性順序聯(lián)接的若干階段工作,形如瀑布流水,最終得到軟件系統(tǒng)或軟件產(chǎn)品。換句話說,它將軟件開發(fā)過程劃分成若干個互相區(qū)別而又彼此聯(lián)系的階段,每個階段中的工作都以上一個階段工作的結(jié)果為依據(jù),同時作為下一個階段的工作基礎(chǔ)。該模型說明整個軟件開發(fā)過程是按圖中的各個階段進行的,每個階段的任務(wù)完成之后,產(chǎn)生相應(yīng)的文檔。它是以文檔作為驅(qū)動、適合于需求很明確的軟件項目開發(fā)的模型。瀑布模型得到了廣泛的應(yīng)用,它在消除非結(jié)構(gòu)化軟件、降低軟件的復(fù)雜性、促進軟件開發(fā)工程化方面起了很大的作用。但在大量的仍然機軟件開發(fā)實踐中也逐漸暴露出它的缺

點。由于瀑布模型是一種理想的線性開發(fā)模式,缺乏靈活性,也無法解決軟件需求不準確或者不明確的問題。這些缺點對軟件開發(fā)帶來了嚴重影響,由于需求不明確,會導(dǎo)致開發(fā)的軟件不符合用戶的需求而夭折。問題定義開發(fā)時期計劃時期可行性研究I―I 目標與范圍說明書言可行性論證論告需求分析需求說明書運行

時期問題定義開發(fā)時期計劃時期可行性研究I―I 目標與范圍說明書言可行性論證論告需求分析需求說明書運行

時期匚=設(shè)計文檔匚。程序測試報告可 維護報告運行與維護圖1.3瀑布模型1.3.2圖1.3瀑布模型1.3.2循環(huán)模型瀑布模型的缺陷在于將充滿回溯、相互重疊的軟件開發(fā)過程硬性地割裂為幾個階段,隨著開發(fā)的軟件規(guī)模越來越大,造成的危害更加嚴重,循環(huán)模型是為了描述軟件開發(fā)過程中可能的回溯,對瀑布模型進行了改進,開發(fā)各階段可能循環(huán)重復(fù)。圖1.4描述了循環(huán)模型。1.3.3增量模型增量模型是一種非整體開發(fā)的模型。根據(jù)增量的方式和形式的不同,分為基于瀑布模型的漸增模型和基于原型的快速原型模型。最終系統(tǒng)系統(tǒng)不完全圖1.5最終系統(tǒng)系統(tǒng)不完全圖1.5增量模型該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計方案有一定風(fēng)險的軟件項目。增量模型和瀑布模型之間的本質(zhì)區(qū)別是:瀑布模型屬于整體開發(fā)模型,它規(guī)定在開始下一個階段的工作之前,必須完成前一階段的所有細節(jié)。而增量模型屬于非整體開發(fā)模型,它推遲某些階段或所有階段中的細節(jié),從而較早地產(chǎn)生工作軟件。1.3.4螺旋模型對于大型軟件,只開發(fā)一個原型往往達不到要求。螺旋模型將瀑布模型和增量模型結(jié)合起來,并加入了風(fēng)險分析。它是由TRW公司的B.Boehm于1988年提出的。該模型將開發(fā)劃分為制定計劃、風(fēng)險分析、實施工程和客戶評估四類活動。沿著螺旋線每轉(zhuǎn)一圈,表示開發(fā)出一個更完善的新的軟件版本。如果開發(fā)風(fēng)險過大,開發(fā)機構(gòu)和客戶無法接受,項目有可能就此終止;多數(shù)情況下,會沿著螺旋線繼續(xù)下去,自內(nèi)向外逐步延伸,最終得到滿意的軟件產(chǎn)品。提交部分客戶評估計劃下階段工作制定計劃 費用累加 風(fēng)險分析決定目標、 T 評價方案、方案和限制識別風(fēng)險、消除風(fēng)險風(fēng)險分析風(fēng)險分析可操作原型風(fēng)險i分析;原型原型3原型2模型基準點需求計劃生存期計劃操作概念軟件提交部分客戶評估計劃下階段工作制定計劃 費用累加 風(fēng)險分析決定目標、 T 評價方案、方案和限制識別風(fēng)險、消除風(fēng)險風(fēng)險分析風(fēng)險分析可操作原型風(fēng)險i分析;原型原型3原型2模型基準點需求計劃生存期計劃操作概念軟件需求軟件產(chǎn)/詳細設(shè)計品設(shè)計殖血/需求驗證開發(fā)計劃編碼模塊測試設(shè)計確認與驗節(jié)成和測試計劃組裝測試.確認運行測U試實施工程開發(fā)驗證下一級產(chǎn)品圖1.6螺旋模型螺旋模型將開發(fā)過程分為幾個螺旋周期,每個螺旋周期可分為4個工作步驟:第一,制定計劃:確定目標、方案和限制條件;第二,風(fēng)險分析:評估方案、標識風(fēng)險和解決風(fēng)險;第三,實施工程:開發(fā)確認產(chǎn)品;第四,客戶評估:計劃下一周期工作。

1.3.5噴泉模型該模型是由B.H.Sollers和J.M.Edwards于1990年提出的一種新的開發(fā)模型。主要用于采用對象技術(shù)的軟件開發(fā)項目。它克服了瀑布模型不支持軟件重用和多項開發(fā)活動集成的圖1.7噴泉模型圖1.7噴泉模型噴泉模型是以面向?qū)ο蟮能浖_發(fā)方法為基礎(chǔ),以用戶需求作為噴泉模型的源泉。從右邊噴泉模型的圖中可以看出其特點如下:(1) 噴泉模型規(guī)定軟件開發(fā)過程有4個階段,即分析、系統(tǒng)設(shè)計、軟件設(shè)計和實現(xiàn)。(2) 噴泉模型的各階段相互重疊,它反映了軟件過程并行性的特點。(3) 噴泉模型以分析為基礎(chǔ),資源消耗成塔型,在分析階段消耗的資源最多。(4) 噴泉模型反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。(5) 噴泉模型強調(diào)增量開發(fā),它依據(jù)分析一點,設(shè)計一點的原則,并不要求一個階段的徹底完成,整個過程是一個迭代的逐步提煉的過程。(6) 噴泉模型是對象驅(qū)動的過程,對象是所有活動作用的實體,也是項目管理的基本內(nèi)容。(7)噴泉模型在實現(xiàn)時,由于活動不同,可分為系統(tǒng)實現(xiàn)和對象實現(xiàn),這既反映了全系統(tǒng)的開發(fā)過程,也反映了對象族的開發(fā)和重用過程。1.3.6智能模型智能模型也成為基于知識的軟件開發(fā)模型,是知識工程與軟件工程在開發(fā)模型上結(jié)合的產(chǎn)物,是以瀑布模型與專家系統(tǒng)的綜合應(yīng)用為基礎(chǔ)。該模型通過應(yīng)用系統(tǒng)的知識和規(guī)則幫助設(shè)計者認識一個特定的軟件的需求和設(shè)計,這些專家系統(tǒng)已成為開發(fā)過程的伙伴,并指導(dǎo)開發(fā)過程。從智能模型的圖示中可以很清楚的看到,智能模型與其它模型不同,它的維護并不在程序一級上進行,這樣把問題的復(fù)雜性大大地降低了。該模型的優(yōu)點主要有:(1) 通過領(lǐng)域的專家系統(tǒng),可是需求說明更完整、準確和無二義性。(2) 通過軟件工程的專家系統(tǒng),提供一個設(shè)計庫支持,在開發(fā)過程中成為設(shè)計者的助手。(3) 通過軟件工程知識和特定應(yīng)用領(lǐng)域的知識和規(guī)則的應(yīng)用來提供開發(fā)的幫助。但是,建立適合與軟件設(shè)計的專家系統(tǒng)和一個既適合軟件工程又適合應(yīng)用領(lǐng)域的知識庫都是非常困難的。目前,在軟件開發(fā)中正應(yīng)用AI技術(shù),在CASE工具系統(tǒng)中使用專家系統(tǒng),用專家系統(tǒng)來實現(xiàn)測試自動化,在軟件開發(fā)的局部階段有所發(fā)展。獲取需求;一需求分析一具體描述"「廣優(yōu)/化 程序圖1.8智能模型1.4軟件開發(fā)方法為了克服軟件危機,從60年代末開始,一直在進行軟件開發(fā)方法的研究與實踐,并取得了一系列研究成果,對軟件產(chǎn)業(yè)的發(fā)展起著不可估量的作用。軟件工程的內(nèi)容包括技術(shù)和管理兩方面,兩方面又緊密結(jié)合。通常把在軟件生命期中所使用的一整套技術(shù)的集合稱為方法學(xué)(methodology)或范型(paradigm)。軟件開發(fā)方法是一種使用早已定義好的技術(shù)集及符號表示習(xí)慣來組織軟件生產(chǎn)過程的方法,其方法一般表述成一系列的步驟,每一步驟都與相應(yīng)的技術(shù)和符號相關(guān)。其目標是要在規(guī)定的投資和時間內(nèi),開發(fā)出符合用戶的需求,高質(zhì)量的軟件,為此需要有成功的開發(fā)方法。軟件工程方法學(xué)包括三要素:方法、工具和過程。方法:完成軟件開發(fā)各項任務(wù)的技術(shù)方法;工具:為方法的運用提供自動或者半自動的支撐環(huán)境;過程:為開發(fā)高質(zhì)量軟件所規(guī)定的各項任務(wù)的工作步驟。軟件開發(fā)方法可分為兩大類:面向過程的開發(fā)方法和面向?qū)ο蟮拈_發(fā)方法。本節(jié)將對結(jié)構(gòu)化開發(fā)方法、原型化開發(fā)方法和面向?qū)ο蟮拈_發(fā)方法進行介紹。1。傳統(tǒng)的軟件工程方法也稱為面向過程的軟件開發(fā)方法,這類開發(fā)方法都典型地包含了分析、設(shè)計、實現(xiàn)、確認(測試)、演化(維護)等活動。典型的傳統(tǒng)軟件開發(fā)方法有:Jackson方法、結(jié)構(gòu)化開發(fā)方法、原型化方法、HIPO法、IDEF法等。2.面向?qū)ο蟮拈_發(fā)方法是以對象作為基本的元素構(gòu)建新系統(tǒng)的方法,從90年代開始面向?qū)ο蟮拈_發(fā)方法逐漸成為軟件開發(fā)方法的主流。具有代表性的有:Coda方法,Booch方法和OMT方法以及UML統(tǒng)一建模語言。1.4.1結(jié)構(gòu)化開發(fā)方法結(jié)構(gòu)化開發(fā)方法(StructuredDevelopingMethod)是一種面向數(shù)據(jù)流的開發(fā)方法,它的基本原則是功能的分解與抽象。結(jié)構(gòu)化方法提出了一組提高軟件結(jié)構(gòu)合理性的準則,如分解和抽象、模塊的獨立性、信息隱蔽等。它是現(xiàn)有的軟件開發(fā)方法中最成熟,應(yīng)用最廣泛的方法,該方法的主要特點是快速,自然和方便。結(jié)構(gòu)化方法總的指導(dǎo)思想自頂向下、逐步求精。1、結(jié)構(gòu)化開發(fā)方法的組成結(jié)構(gòu)化方法由三部分構(gòu)成,按照推出的先后次序有:70年代初推出的結(jié)構(gòu)化程序設(shè)計方法SP法(StructuredProgram);70年代中推出的結(jié)構(gòu)化設(shè)計方法SD法(StructuredDesign);70年代末推出的結(jié)構(gòu)化分析方法SA法(StructuredAnalysis)。SA、SD、SP法相互銜接,形成了一整套開發(fā)方法。若將SA,SD法結(jié)合起來,又稱為結(jié)構(gòu)化分析與設(shè)計技術(shù)(SADT技術(shù))。結(jié)構(gòu)化分析方法給出一組幫助系統(tǒng)分析人員產(chǎn)生功能規(guī)約的原理和技術(shù)。需求分析結(jié)果主要以圖形方式表示,以數(shù)據(jù)流圖和控制流圖為基礎(chǔ),伴以數(shù)據(jù)詞典,并配上結(jié)構(gòu)化語言、判定表和判定樹等等手段,從而達到為問題的解決建立模型。結(jié)構(gòu)化分析的步驟如下:分析當前的情況,做出反映當前物理模型的數(shù)據(jù)流圖;推導(dǎo)出等價的邏輯模型的數(shù)據(jù)流圖;設(shè)計新的邏輯系統(tǒng),生成數(shù)據(jù)詞典和基元描述;建立人機接口界面,提出可供選擇的目標系統(tǒng)的物理模型數(shù)據(jù)流圖;選擇一種方案;建立完整的需求規(guī)約。結(jié)構(gòu)化設(shè)計給出一組幫助設(shè)計人員在模塊層次上分析設(shè)計質(zhì)量的原理與技術(shù),它通常與結(jié)構(gòu)化分析銜接起來使用,以數(shù)據(jù)流圖為基礎(chǔ)得到軟件模塊結(jié)構(gòu)。結(jié)構(gòu)化設(shè)計方法適用于變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的目標系統(tǒng)。結(jié)構(gòu)化設(shè)計的步驟如下:評審和細化數(shù)據(jù)流圖;確定數(shù)據(jù)流圖的類型;把數(shù)據(jù)流圖映射到軟件模塊結(jié)構(gòu),設(shè)計出模塊結(jié)構(gòu)的上層;基于數(shù)據(jù)流圖逐步分解高層模塊,設(shè)計中下層模塊;對軟件模塊結(jié)構(gòu)進行優(yōu)化,得到更為合理的軟件結(jié)構(gòu);描述模塊借口。2.結(jié)構(gòu)化方法的工作模型結(jié)構(gòu)化方法的工作模型一瀑布模型(WaterfallModel)但從80年代開始,逐漸發(fā)現(xiàn)其不足,軟件開發(fā)過程是個充滿回溯的過程。而瀑布模型卻將其分割為獨立的幾個階段,不能從本質(zhì)上反映軟件開發(fā)過程本身的規(guī)律。此外,過分強調(diào)復(fù)審,并不能完全避免較為頻繁的變動。盡管如此,瀑布模型仍然是開發(fā)軟件產(chǎn)品的一個行之有效的工程模型。1.4.2面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法結(jié)構(gòu)化開發(fā)方法是一種面向數(shù)據(jù)流、數(shù)據(jù)封閉性的開發(fā)方法,而JACKSON系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法。其基本思想是先建立輸入輸出的數(shù)據(jù)結(jié)構(gòu)再將其轉(zhuǎn)換為軟件結(jié)構(gòu)。其分析的重點放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實世界,并建立現(xiàn)實世界的信息域的模型上。其最終目標是生成軟件的過程性描述。強調(diào)程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(yīng)。JACKSON方法由英國的M.Jackson提出,該方法特別適合于數(shù)據(jù)處理類的問題。如企事業(yè)管理一類的軟件系統(tǒng)。JACKSON方法的構(gòu)成JACKSON方法由JSP(JacksonstructuredProgramming)和JSD(JacksonSystemDevelopment)方法構(gòu)成。⑴JSP法主要體現(xiàn)程序結(jié)構(gòu)的設(shè)計,不嚴格區(qū)分軟件概要設(shè)計和詳細設(shè)計??梢愿鶕?jù)JSP的規(guī)則直接導(dǎo)出程序結(jié)構(gòu)。一般用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),而且O數(shù)據(jù)結(jié)構(gòu)容易描述的情況。JSD法是對JSP法的擴充,針對JSP法的缺陷而提出的解決方案。其主要特點是:用“分而治之”的策略控制系統(tǒng)的復(fù)雜性,解決I/O結(jié)構(gòu)的沖突問題。實體結(jié)構(gòu)分析是用Jackson圖來描述每個實體執(zhí)行的動作及其時序,產(chǎn)生一組描述實體進程的Jackson結(jié)構(gòu)圖。為了表示實體結(jié)構(gòu),Jackson引入了如圖1.9所示的結(jié)構(gòu)圖。在此圖中給出了對實體的三種典型動作,即順序、選擇和重復(fù)。其中,順序型是指對于實偈的動作B,C是按時間順序先左后右執(zhí)行;選擇型使用了符號“?!?,表示實體A的兩個動作B與C在某個時刻只做一個;重復(fù)型表示帶有“*”的動作重復(fù)執(zhí)行多次。JACKSON方法的設(shè)計過程、、順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)圖1.9三種基本結(jié)構(gòu)

⑴建立數(shù)據(jù)結(jié)構(gòu)JACKSON方法中數(shù)據(jù)結(jié)構(gòu)通常表示為樹型結(jié)構(gòu),有順序、選擇和循環(huán)三種基本結(jié)構(gòu)(圖1.9)。如圖1.10(a)所示,按照三種基本結(jié)構(gòu)建立的文件數(shù)據(jù)結(jié)構(gòu)。⑵以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ),建立相應(yīng)的程序結(jié)構(gòu)圖,如圖.10(b),也稱為JACKSON圖。當沒有結(jié)構(gòu)沖突時,轉(zhuǎn)換過程是簡單的。一般情況,數(shù)據(jù)結(jié)構(gòu)與模塊結(jié)構(gòu)是相對應(yīng)的,因此不難從數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)。(a)(b)(a)圖1.10數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為程序結(jié)構(gòu)由于輸入、輸出數(shù)據(jù)結(jié)構(gòu)在內(nèi)容、數(shù)量、次序上是對應(yīng)的,不難由數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)圖。如果出現(xiàn)“結(jié)構(gòu)沖突”Structureclash),至使從數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)的困難。一般的解決辦法是在輸入、輸出之間構(gòu)造一個或者多個中間結(jié)構(gòu)。Jackson方法的優(yōu)、缺點:優(yōu)點:結(jié)構(gòu)清晰、易理解、易修改。不會過多依賴于設(shè)計者的經(jīng)驗。缺點:當系統(tǒng)規(guī)模及復(fù)雜度大時,確定數(shù)據(jù)結(jié)構(gòu)困難。1.4.3原型化開發(fā)方法1、原型化方法(PrototypingMethod原型是軟件開發(fā)過程中,軟件的一個早期可運行的版本,它反映了最終系統(tǒng)的部分重要特性。原型化方法的基本思想是花費少量代價建立一個可運行的系統(tǒng),使用戶及早獲得學(xué)習(xí)的機會,原型化方法又稱速成原型法(RapidPrototyping).強調(diào)的是軟件開發(fā)人員與用戶的不斷交互,通過原型的演進不斷適應(yīng)用戶任務(wù)改變的需 —求。將維護和修改階段的工作盡早進行,使用戶驗收提前,從而 /L一<、\使軟件產(chǎn)品更加適用。 /、快速分析或修改1)快速建立需求規(guī)格原型(RSP法) j、"廣w評價 構(gòu)造'RSP(RapidSpecificationPrototyping)法所建立的原型反映\/、---、、/了系統(tǒng)的某些特征,讓用戶學(xué)習(xí),有利于獲得更加精確的需求說\<運行y明書,待需求說明書一旦確定原型被廢棄,后階段的工作仍按照圖i.ii原型化開發(fā)模型瀑布模型開發(fā),所以也稱為廢棄(throwaway)型。2)快速建立漸進原型(人。法)RCP(RapidCyclicPrototyping法采用循環(huán)漸進的開發(fā)方式,對系統(tǒng)模型作連續(xù)精化,將系統(tǒng)需要具備的性質(zhì)逐步添加上去,直至所有性質(zhì)全部滿足,此時的原型模型也就是最終的產(chǎn)品,所以也稱為追加(addon)型。速成原型法適合于開發(fā)“探索型”,“實驗型”與“進化型”一類的軟件系統(tǒng)。速成原型的工作模型是一個循環(huán)的模型??焖僭头ò匆韵虏襟E循環(huán)執(zhí)行:.快速分析快速確定軟件系統(tǒng)的基本要求,確定原型所要體現(xiàn)的特征(界面,總體結(jié)構(gòu),功能,性能).構(gòu)造原型在快速分析的基礎(chǔ)上,根據(jù)基本規(guī)格說明,忽略細節(jié),只考慮主要特征,快速構(gòu)造一個可運行的系統(tǒng)。有三類原型:用戶界面原型,功能原型,性能原型。(3.)運行和評價原型用戶試用原型并與開發(fā)者之間頻繁交流,發(fā)現(xiàn)問題,目的是驗證原型的正確性。修改與改進對原型進行修改,增刪。1.4.4面向?qū)ο蟮拈_發(fā)方法OOSD(Object-OrientedSoftwareDevelopment)法是80年代推出的一種全新的軟件開發(fā)方法。非常實用而強有力,被譽為90年代軟件的核心技術(shù)之一。其基本思想是:對問題領(lǐng)域進行自然的分割,以更接近人類通常思維的方式建立問題領(lǐng)域的模型,以便對客觀的信息實體進行結(jié)構(gòu)和行為的模擬,從而使設(shè)計的軟件更直接地表現(xiàn)問題的求解過程。面向?qū)ο蟮拈_發(fā)方法以對象作為最基本的元素,是分析和解決問題的核心。Coad和Yourdon給出一個面向?qū)ο蟮亩x:面向?qū)缹ο?類+繼承+消息如果一個軟件系統(tǒng)是按照這樣四個概念設(shè)計和實現(xiàn)的,則可以認為這個軟件系統(tǒng)是面向?qū)ο蟮摹OSD由OOA(面向?qū)ο蟮姆治?、OOD(面向?qū)ο蟮脑O(shè)計)和OOP(面向?qū)ο蟮某绦蛟O(shè)計)三部分組成。1、OOA(Object-OrientedAnalysis)法OOA就是要解決“做什么”的問題。它的基本任務(wù)就是要建立以下三種模型:對象模型(信息模型)一一定義構(gòu)成系統(tǒng)的類和對象,它們的屬性與操作。狀態(tài)模型(動態(tài)模型)一一描述任何時刻對象的聯(lián)系及其聯(lián)系的改變,即時序。常用狀態(tài)圖,事件追蹤圖描述。處理模型(函數(shù)模型)一一描述系統(tǒng)內(nèi)部數(shù)據(jù)的傳送處理。顯然,在三大模型中,最重要的是對象模型。如何建立三大模型,我們將在第五章中介紹。2、 OOD(Object-OrientedDesign)法在需求分析的基礎(chǔ)上,進一步解決“如何作”的問題,OOD法也分為概要設(shè)計和詳細設(shè)計。概要設(shè)計:細化對象行為,添加新對象,認

溫馨提示

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

評論

0/150

提交評論