




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章軟件工程概述1.1軟件工程的產生和發展軟件工程是在克服60年代末所出現的“軟件危機”的過程中逐漸形成與發展的。自968年在北大西洋公約組織(NATO)舉行軟件可靠性的學術會議上正式提出“軟件工程(SoftwareEngineering)”的概念以來,在不到40年的時間里,軟件工程在理論和實踐兩方面都取得了長足的進步。軟件工程是一門指導計算機軟件系統開發和維護的工程學科,是一門新興的邊緣學科,它涉及到計算機科學、工程科學、管理科學、數學等多學科,軟件工程的研究范圍廣,不僅包括軟件系統的開發方法和技術、管理技術,還包括軟件工具、環境及軟件開發的規范。軟件是信息化的核心,國民經濟、國防建設、社會發展及人民生活都離不開軟件。軟件產業關系到國家經濟發展和文化安全,體現了國家綜合實力,是決定1世紀國際競爭地位的戰略性產業。因此大力推廣應用軟件工程的開發技術及管理技術,提高軟件工程的應用水平,對促進我國軟件產業與國際接軌推動軟件產業的迅速發展起著十分重要的關鍵作用。1.1.1軟件工程的發展過程軟件工程的產生和發展是與軟件的發展過程緊密相關的。自從第一臺電子計算機誕生以來,就開始了軟件的生產,“軟件工程”提出至今,它的發展已經歷了四個重要階段:第一代軟件工程(60年代末到70年代)60年代末,軟件生產主要采用“生產作坊方式”。隨著軟件需求量、規模及復雜度的迅速增大,生產作坊的方式已不能夠適應軟件生產的需要,出現了所謂“軟件危機”,即軟件生產效率低,大量質量低劣的軟件涌入市場或在開發過程中夭折。由于“軟件危機”的不斷擴大,對軟件生產已經產生了嚴重危害。為了克服“軟件危機"(Softwarecrisis),在著名的NATO(北大西洋公約組織)軟件可靠性會議上第一次提出“軟件工程”的名詞,將軟件開發納入了工程化的軌道,基本形成了軟件工程的概念、框架、技術和方法。這階段又稱為傳統的軟件工程。第二代軟件工程(80年代中到90年代)80年代中開始,以Smalltalk為代表的面向對象的程序設計語言相繼推出,面向對象的方法與技術得到發展,從90年代起,研究的重點從程序設計語言逐漸轉移到面向對象的分析與設計,演化為一種完整的軟件開發方法和系統的技術體系90年代以來,出現了許多面向對象的開發方法的流派,面向對象的方法逐漸成為軟件開發的主流。所以這一階段又成為稱為對象工程。第三代軟件工程隨著規模的不斷增大,開發人員也隨之增多,開發時間相應持續增長,加之軟件是知識密集型的邏輯思維產品,這些都增加了軟件工程管理的難度。人們在軟件開發的實踐過程中認識到:提高軟件生產率,保證軟件質量的關鍵是對“軟件過程”的控制和管理,提出對軟件項目管理的計劃、組織、成本估算、質量保證、軟件配置管理等技術與策略,逐步形成了軟件過程工程。構件工程90起年代,基于構件(Component)的開發方法取得重要進展,軟件系統的開發可通過使用現存的可復用構件組裝完成,而無需從頭開始構造,以此達到提高效率和質量,降低成本的目的。稱為構件工程。1.1.2軟件危機1、 軟件危機的產生“軟件危機”Softwarecrisis)的出現是由于軟件的規模越來越大,復雜度不斷增加,而軟件需求量也不斷增大,“生產作坊式”的軟件開發模式及技術已不能滿足軟件發展的需要。軟件開發過程是一種高密集度的腦力勞動,對開發人員的需要投入大量的人力、物力和財力,由于軟件開發的模式及技術不能適應軟件發展的需要,致使大量質量低劣的軟件產品涌向市場,有的甚至在開發過程中就夭折了。國外在開發一些大型軟件系統時,遇到了許多困難,有的系統最終徹底失敗了;有的系統則比原計劃推遲了好多年,而且費用大大超過了預算;有的系統不能符合用戶當初的期望;有的系統則無法進行修改維護。例如:IBM公司的OS/360,共約100萬條指令,花費了5000個人年;經費達數億美元,而結果卻令人沮喪,錯誤多達2000個以上,系統根本無法正常運行。OS/360系統的負責人Brooks這樣描述開發過程的困難和混亂:“像巨獸在泥潭中作垂死掙扎,掙扎得越猛,泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運。”1962年6月,美國飛往金星的第一個空間探測器(水手I號),因其飛艙中計算機導航程序的一條語句出錯,致使空間探測器偏離航線無法取得成功。還有,可以稱為上世紀世界上最精心設計,并花費了巨額投資的美國阿波羅登月飛行計劃的軟件,也仍然沒有避免出錯,例如阿波羅號由于太空飛船的一個計算機軟件錯誤,造成存儲器的一部分信息丟失;阿波羅14號在飛行的10天中,出現了18個軟件錯誤。2、 軟件危機的表現20世紀60年代末期所發生的軟件危機,反映在軟件可靠性沒有保障、軟件維護工作量大、費用不斷上升、進度無法預測、成本增長無法控制、程序人員無限度地增加等各個方面,以致形成人們難以控制軟件開發的局面。軟件危機”主要表現在兩個方面:軟件產品質量低劣,甚至在開發過程中就夭折。軟件生產率低,不能滿足需要。1.1.3軟件工程的定義究竟什么是“軟件工程”?自從1968年提出軟件工程這個術語,對于軟件工程就有了各種各樣的定義,但是它們的基本思想都是強調在軟件開發過程中應用工程化原則的重要性。例如,Boehm曾經為軟件工程下了以下定義:“運用現代科學技術知識時間并構造計算機程序及為開發、運行和維護這些程序所必需的相關文件資料?!?。1983年,IEEE(國際電氣與電子工程師協會)所下的定義是:軟件工程是開發、運行、維護和修復軟件的系統方法。1990年,IEEE又將定義更改為:對軟件開發、運作、維護的系統化的、有規范的、可定量的方法之應用,即是對軟件的工程化應用。軟件工程有方法、工具和過程三個要素。軟件工程方法就是研究軟件開發“如何作”的技術;軟件工具是研究支撐軟件開發方法的工具、軟件工具的集成環境一計算機輔助軟件工程CASE;軟件工程過程則是指將軟件工程方法與軟件工具相結合實現合理、及時的進行軟件開發的目的。1.1.4軟件工程研究的內容軟件工程是一門指導軟件開發的工程學科,是以計算機理論及其他相關學科的理論為指導,采用工程化的概念、原理、技術和方法進行軟件的開發和維護,把經實踐證明的科學的管理措施與最先進的技術方法結合起來,以較少的代價獲得高質量的軟件。1、 軟件工程研究的內容軟件工程是一門新興的邊緣學科,涉及的學科多,研究的范圍廣。歸結起來軟件工程研究的主要內容有以下4個方面:方法與技術、工具及環境、管理技術、標準與規范。軟件開發方法,主要討論軟件開發的各種方法及其工作模型,包括了多方面的任務,如軟件系統需求分析、總體設計、以及如何構建良好的軟件結構,數據結構及算法設計等,同時討論具體實現的技術,軟件工具為軟件工程方法提供了支持,研究計算機輔助軟件工程CASE,建立軟件工程環境。軟件工程管理,是指對軟件工程全過程的控制和管理,包括計劃安排、成本估算、項目管理、軟件質量管理。軟件工程標準化與規范化,使得各項工作有章可循,以保證軟件生產率和軟件質量的提高。軟件工程標準可分為個層次:國際標準、行業標準、企業規范和項目規范。必須要強調的是,隨著人們對軟件系統研究的逐漸深入,軟件工程所研究的內容也不是一成不變的。2、 軟件工程的目標軟件工程研究的目標是“以較少的投資獲取高質量的軟件”。即軟件的開發要在保證質量和效率的同時,盡量縮短開發期,降低軟件成本。軟件過程所實現的多目標中,有的是互補的,例如縮短開發期,顯然可降低成本,維護是需要代價的,易于維護就可降低總成本。高性能與高可靠性是互補的。而有的目標則是互斥的,例如:要獲得高的可靠性,通常要采取一些冗余的措施,往往成本會增加。為了實現軟件工程的多目標,要對軟件的的各項質量指標進行綜合考慮,以實現軟件開發的“多!快!好!??!”的總目標。圖1.1軟件工程的目標3、軟件工程的基本原則過去,軟件工程的基本原則是抽象、模塊化、清晰的結構、精確的設計規格說明。但今天的認識已經發生了很大的變化?,F已提出的軟件工程四條基本原則是:第一,必須認識軟件需求的變動性,便采取適當措施來保證結果產品能忠實地滿足用戶要求。在軟件設計中,通常要考慮模塊化、抽象與信息隱蔽、局部化、一致性等原則。第二,穩妥的設計方法大大地方便軟件開發,以達到軟件工程的目標。軟件工具與環境對軟件設計的支持來說,頗為重要。第三,軟件工程項目的質量與經濟開銷直接取決于對它所提供的支撐的質量與效用。第四,有效的軟件工程只有在對軟件過程進行有效管理的情況下才能實現。近年來,印度的軟件產業迅速發展,其成功的經驗是,嚴格按照國際規范進行科學管理。在本教材中,雖然主要討論軟件開發技術,只在第十章討論軟件管理技術,但軟件管理仍然是軟件開發成功的關鍵,因此,將介紹當前質量管理的國際規范CMM(軟件成熟度的度量)。1.2軟件與軟件生存期“軟件工程”是在軟件生產中采用工程化的方法,采用一系列科學的、現代化的方法技術來開發軟件。這種工程化的思想貫穿到軟件開發和維護的全過程。為了進一步學習有關軟件工程的方法、技術,先介紹軟件、軟件生存期及軟件工程過程,這幾個重要的概念。1.2.1軟件的概念和特點1.軟件(Software)
“軟件就是程序,開發軟件就是編寫程序”是一個錯誤觀念。這種錯誤觀點的長期存在,影響了軟件工程的正常發展。事實上,正如Boehm指出的:軟件是程序以及開發、使用和維護程序所需的所有文檔。它是由應用程序,系統程序,面向用戶的文檔及面向開發者的文檔四部分構成。即:軟件=程序+文檔,2.軟件的特點軟件是一種邏輯實體,不是具體的物理實體。軟件產品的生產主要是研制。軟件具有“復雜性”,其開發和運行常受到計算機系統的限制。軟件成本昂貴,其開發方式目前尚未完全擺脫手工生產方式。軟件不存在磨損和老化問題,但存在退化問題。失效率失效率圖1.2軟件失效率曲線失效率失效率圖1.2軟件失效率曲線圖1.1給出了硬件的失效率曲線,它是一個J型曲線(即浴盆曲線),說明硬件隨著使用時間的增加失效率急劇上升。圖1.2所描述的軟件失效率曲線,它沒有!型曲線的右半翼表明軟件隨著使用時間的增加失效率降低,因為軟件不存在磨損和老化問題,然而存在退化問題。3、軟件的分類按照軟件功能劃分?系統軟件-如操作系統、設備驅動程序等。?支撐軟件(實用軟件)一協助用戶開發的工具軟件,如編輯程序、程序庫、圖形軟件包等。?應用軟件一如工程與科學計算軟件、CAD/CAM軟件、CAI軟件、信息管理系統等。按照軟件規模劃分如表1—1所示,按照軟件的不同大小(源代碼行、參加人數、研制時間分為微型、小型、中型、大型、甚大型和極大型。需要說明的是:隨著軟件產品規模的不斷增大,類別的指標也會變化。(3)按照軟件工作方式劃分實時處理軟件、交互式軟件、批處理軟件(4)按照軟件服務對象的范圍劃分?項目軟件一由客戶委托開發的軟件。產品軟件一由軟件開發機構開發,提供給市場的。此外,還可以按照軟件使用的頻度及按照軟件失效的影響進行劃分。表1-1軟件規模分類類別參加人數研制期限產品規模(源代碼行)微型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)是指在軟件工具的支持下,所進行的一系列軟件工程活動。通常包括以下四類基本過程:軟件規格說明:規定軟件的功能及其運行環境。軟件開發:產生滿足規格說明的軟件。軟件確認:確認軟件能夠完成客戶提出的要求。軟件演進:為滿足客戶的變更要求,軟件必須在使用的過程中演進。軟件工程過程具有可理解性、可見性(過程的進展和結果可見)可靠性、可支持性(易于使用CASE工具支持)、可維護性、可接受性(為軟件工程師接受)、開發效率和健壯性(抵御外部意外錯誤的能力)等特性。1.2.3軟件Th存期軟件生命周期(SDLD)是指一個從用戶需求開始,經過開發、交付使用,在使用中不斷地增補修訂,直至軟件報廢的全過程,亦稱軟件生存期lifecycle)。GB8567中規定,軟件生命周期分為7個階段:可行性研究和項目開發計劃可行性研究和項目開發計劃階段必須要回答的問題是“要解決的問題是什么”。需求分析需求分析階段的任務不是具體地解決問題,而是準確地確定“軟件系統必須做什么”,確定軟件系統必須具備哪些功能。概要設計概要設計就是設計軟件的結構,該結構由哪些模塊組成,這些模塊的層次結構是怎樣地,這些模塊的調用關系是怎樣地,每個模塊的功能是什么。同時還要設計該項目的應用系統的總體數據結構和數據庫結構,即應用系統要存儲什么數據,這些數據是什么樣的結構,它們之間有什么關系等。詳細設計詳細設計階段就是為每個模塊完成的功能進行具體描述,要把功能描述變為精確的、結構化的過程描述。編碼編碼階段就是把每個模塊的控制結構轉換成計算機可接受的程序代碼,即寫成以某特定程序設計語言表示的“源程序清單”。測試測試是保證軟件質量的重要手段,其主要方式是在設計測試用例的基礎上檢驗軟件的各個組成部分。測試分為模塊測試、組裝測試、確認測試。維護軟件維護是軟件生存期中時間最長的階段。已交付的軟件投入正式使用后,便進入軟件維護階段,它可以持續幾年甚至幾十年。在大部分文獻中將生存周期劃分為5個階段,即要求定義、設計、編碼、測試及維護。其中要求定義階段包括可行性研究和項目開發計劃、需求分析,設計階段包括概要設計和詳細設計。為了描述軟件生存期的活動,提出了多種生存期模型。例如:瀑布模型、循環模型、演化模型、螺旋模型等。1.3軟件生存期模型軟件生存期模型是描述軟件開發過程中各種活動如何執行的模型。它確立了軟件開發和演繹中各階段的次序限制以及各階段活動的準則,確立開發過程所遵守的規定和限制,便于各種活動的協調以及各種人員的有效通信,有利于活動重用和活動管理。目前有若干軟件生存期模型,如瀑布模型、增量模型、螺旋模型、噴泉模型、變換模型和基于知識的模型等。1.3.1瀑布模型瀑布模型如圖1.3所示,這是1970年W.Royce提出的最早出現的軟件開發模型。瀑布模型是將軟件開發活動中的各項活動規定為依線性順序聯接的若干階段工作,形如瀑布流水,最終得到軟件系統或軟件產品。換句話說,它將軟件開發過程劃分成若干個互相區別而又彼此聯系的階段,每個階段中的工作都以上一個階段工作的結果為依據,同時作為下一個階段的工作基礎。該模型說明整個軟件開發過程是按圖中的各個階段進行的,每個階段的任務完成之后,產生相應的文檔。它是以文檔作為驅動、適合于需求很明確的軟件項目開發的模型。瀑布模型得到了廣泛的應用,它在消除非結構化軟件、降低軟件的復雜性、促進軟件開發工程化方面起了很大的作用。但在大量的仍然機軟件開發實踐中也逐漸暴露出它的缺
點。由于瀑布模型是一種理想的線性開發模式,缺乏靈活性,也無法解決軟件需求不準確或者不明確的問題。這些缺點對軟件開發帶來了嚴重影響,由于需求不明確,會導致開發的軟件不符合用戶的需求而夭折。問題定義開發時期計劃時期可行性研究I―I 目標與范圍說明書言可行性論證論告需求分析需求說明書運行
時期問題定義開發時期計劃時期可行性研究I―I 目標與范圍說明書言可行性論證論告需求分析需求說明書運行
時期匚=設計文檔匚。程序測試報告可 維護報告運行與維護圖1.3瀑布模型1.3.2圖1.3瀑布模型1.3.2循環模型瀑布模型的缺陷在于將充滿回溯、相互重疊的軟件開發過程硬性地割裂為幾個階段,隨著開發的軟件規模越來越大,造成的危害更加嚴重,循環模型是為了描述軟件開發過程中可能的回溯,對瀑布模型進行了改進,開發各階段可能循環重復。圖1.4描述了循環模型。1.3.3增量模型增量模型是一種非整體開發的模型。根據增量的方式和形式的不同,分為基于瀑布模型的漸增模型和基于原型的快速原型模型。最終系統系統不完全圖1.5最終系統系統不完全圖1.5增量模型該模型具有較大的靈活性,適合于軟件需求不明確、設計方案有一定風險的軟件項目。增量模型和瀑布模型之間的本質區別是:瀑布模型屬于整體開發模型,它規定在開始下一個階段的工作之前,必須完成前一階段的所有細節。而增量模型屬于非整體開發模型,它推遲某些階段或所有階段中的細節,從而較早地產生工作軟件。1.3.4螺旋模型對于大型軟件,只開發一個原型往往達不到要求。螺旋模型將瀑布模型和增量模型結合起來,并加入了風險分析。它是由TRW公司的B.Boehm于1988年提出的。該模型將開發劃分為制定計劃、風險分析、實施工程和客戶評估四類活動。沿著螺旋線每轉一圈,表示開發出一個更完善的新的軟件版本。如果開發風險過大,開發機構和客戶無法接受,項目有可能就此終止;多數情況下,會沿著螺旋線繼續下去,自內向外逐步延伸,最終得到滿意的軟件產品。提交部分客戶評估計劃下階段工作制定計劃 費用累加 風險分析決定目標、 T 評價方案、方案和限制識別風險、消除風險風險分析風險分析可操作原型風險i分析;原型原型3原型2模型基準點需求計劃生存期計劃操作概念軟件提交部分客戶評估計劃下階段工作制定計劃 費用累加 風險分析決定目標、 T 評價方案、方案和限制識別風險、消除風險風險分析風險分析可操作原型風險i分析;原型原型3原型2模型基準點需求計劃生存期計劃操作概念軟件需求軟件產/詳細設計品設計殖血/需求驗證開發計劃編碼模塊測試設計確認與驗節成和測試計劃組裝測試.確認運行測U試實施工程開發驗證下一級產品圖1.6螺旋模型螺旋模型將開發過程分為幾個螺旋周期,每個螺旋周期可分為4個工作步驟:第一,制定計劃:確定目標、方案和限制條件;第二,風險分析:評估方案、標識風險和解決風險;第三,實施工程:開發確認產品;第四,客戶評估:計劃下一周期工作。
1.3.5噴泉模型該模型是由B.H.Sollers和J.M.Edwards于1990年提出的一種新的開發模型。主要用于采用對象技術的軟件開發項目。它克服了瀑布模型不支持軟件重用和多項開發活動集成的圖1.7噴泉模型圖1.7噴泉模型噴泉模型是以面向對象的軟件開發方法為基礎,以用戶需求作為噴泉模型的源泉。從右邊噴泉模型的圖中可以看出其特點如下:(1) 噴泉模型規定軟件開發過程有4個階段,即分析、系統設計、軟件設計和實現。(2) 噴泉模型的各階段相互重疊,它反映了軟件過程并行性的特點。(3) 噴泉模型以分析為基礎,資源消耗成塔型,在分析階段消耗的資源最多。(4) 噴泉模型反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。(5) 噴泉模型強調增量開發,它依據分析一點,設計一點的原則,并不要求一個階段的徹底完成,整個過程是一個迭代的逐步提煉的過程。(6) 噴泉模型是對象驅動的過程,對象是所有活動作用的實體,也是項目管理的基本內容。(7)噴泉模型在實現時,由于活動不同,可分為系統實現和對象實現,這既反映了全系統的開發過程,也反映了對象族的開發和重用過程。1.3.6智能模型智能模型也成為基于知識的軟件開發模型,是知識工程與軟件工程在開發模型上結合的產物,是以瀑布模型與專家系統的綜合應用為基礎。該模型通過應用系統的知識和規則幫助設計者認識一個特定的軟件的需求和設計,這些專家系統已成為開發過程的伙伴,并指導開發過程。從智能模型的圖示中可以很清楚的看到,智能模型與其它模型不同,它的維護并不在程序一級上進行,這樣把問題的復雜性大大地降低了。該模型的優點主要有:(1) 通過領域的專家系統,可是需求說明更完整、準確和無二義性。(2) 通過軟件工程的專家系統,提供一個設計庫支持,在開發過程中成為設計者的助手。(3) 通過軟件工程知識和特定應用領域的知識和規則的應用來提供開發的幫助。但是,建立適合與軟件設計的專家系統和一個既適合軟件工程又適合應用領域的知識庫都是非常困難的。目前,在軟件開發中正應用AI技術,在CASE工具系統中使用專家系統,用專家系統來實現測試自動化,在軟件開發的局部階段有所發展。獲取需求;一需求分析一具體描述"「廣優/化 程序圖1.8智能模型1.4軟件開發方法為了克服軟件危機,從60年代末開始,一直在進行軟件開發方法的研究與實踐,并取得了一系列研究成果,對軟件產業的發展起著不可估量的作用。軟件工程的內容包括技術和管理兩方面,兩方面又緊密結合。通常把在軟件生命期中所使用的一整套技術的集合稱為方法學(methodology)或范型(paradigm)。軟件開發方法是一種使用早已定義好的技術集及符號表示習慣來組織軟件生產過程的方法,其方法一般表述成一系列的步驟,每一步驟都與相應的技術和符號相關。其目標是要在規定的投資和時間內,開發出符合用戶的需求,高質量的軟件,為此需要有成功的開發方法。軟件工程方法學包括三要素:方法、工具和過程。方法:完成軟件開發各項任務的技術方法;工具:為方法的運用提供自動或者半自動的支撐環境;過程:為開發高質量軟件所規定的各項任務的工作步驟。軟件開發方法可分為兩大類:面向過程的開發方法和面向對象的開發方法。本節將對結構化開發方法、原型化開發方法和面向對象的開發方法進行介紹。1。傳統的軟件工程方法也稱為面向過程的軟件開發方法,這類開發方法都典型地包含了分析、設計、實現、確認(測試)、演化(維護)等活動。典型的傳統軟件開發方法有:Jackson方法、結構化開發方法、原型化方法、HIPO法、IDEF法等。2.面向對象的開發方法是以對象作為基本的元素構建新系統的方法,從90年代開始面向對象的開發方法逐漸成為軟件開發方法的主流。具有代表性的有:Coda方法,Booch方法和OMT方法以及UML統一建模語言。1.4.1結構化開發方法結構化開發方法(StructuredDevelopingMethod)是一種面向數據流的開發方法,它的基本原則是功能的分解與抽象。結構化方法提出了一組提高軟件結構合理性的準則,如分解和抽象、模塊的獨立性、信息隱蔽等。它是現有的軟件開發方法中最成熟,應用最廣泛的方法,該方法的主要特點是快速,自然和方便。結構化方法總的指導思想自頂向下、逐步求精。1、結構化開發方法的組成結構化方法由三部分構成,按照推出的先后次序有:70年代初推出的結構化程序設計方法SP法(StructuredProgram);70年代中推出的結構化設計方法SD法(StructuredDesign);70年代末推出的結構化分析方法SA法(StructuredAnalysis)。SA、SD、SP法相互銜接,形成了一整套開發方法。若將SA,SD法結合起來,又稱為結構化分析與設計技術(SADT技術)。結構化分析方法給出一組幫助系統分析人員產生功能規約的原理和技術。需求分析結果主要以圖形方式表示,以數據流圖和控制流圖為基礎,伴以數據詞典,并配上結構化語言、判定表和判定樹等等手段,從而達到為問題的解決建立模型。結構化分析的步驟如下:分析當前的情況,做出反映當前物理模型的數據流圖;推導出等價的邏輯模型的數據流圖;設計新的邏輯系統,生成數據詞典和基元描述;建立人機接口界面,提出可供選擇的目標系統的物理模型數據流圖;選擇一種方案;建立完整的需求規約。結構化設計給出一組幫助設計人員在模塊層次上分析設計質量的原理與技術,它通常與結構化分析銜接起來使用,以數據流圖為基礎得到軟件模塊結構。結構化設計方法適用于變換型結構和事務型結構的目標系統。結構化設計的步驟如下:評審和細化數據流圖;確定數據流圖的類型;把數據流圖映射到軟件模塊結構,設計出模塊結構的上層;基于數據流圖逐步分解高層模塊,設計中下層模塊;對軟件模塊結構進行優化,得到更為合理的軟件結構;描述模塊借口。2.結構化方法的工作模型結構化方法的工作模型一瀑布模型(WaterfallModel)但從80年代開始,逐漸發現其不足,軟件開發過程是個充滿回溯的過程。而瀑布模型卻將其分割為獨立的幾個階段,不能從本質上反映軟件開發過程本身的規律。此外,過分強調復審,并不能完全避免較為頻繁的變動。盡管如此,瀑布模型仍然是開發軟件產品的一個行之有效的工程模型。1.4.2面向數據結構的開發方法結構化開發方法是一種面向數據流、數據封閉性的開發方法,而JACKSON系統開發方法則是面向數據結構的開發方法。其基本思想是先建立輸入輸出的數據結構再將其轉換為軟件結構。其分析的重點放在構造與系統相關的現實世界,并建立現實世界的信息域的模型上。其最終目標是生成軟件的過程性描述。強調程序結構與問題結構相對應。JACKSON方法由英國的M.Jackson提出,該方法特別適合于數據處理類的問題。如企事業管理一類的軟件系統。JACKSON方法的構成JACKSON方法由JSP(JacksonstructuredProgramming)和JSD(JacksonSystemDevelopment)方法構成。⑴JSP法主要體現程序結構的設計,不嚴格區分軟件概要設計和詳細設計??梢愿鶕﨡SP的規則直接導出程序結構。一般用于規模不大的數據處理系統,而且O數據結構容易描述的情況。JSD法是對JSP法的擴充,針對JSP法的缺陷而提出的解決方案。其主要特點是:用“分而治之”的策略控制系統的復雜性,解決I/O結構的沖突問題。實體結構分析是用Jackson圖來描述每個實體執行的動作及其時序,產生一組描述實體進程的Jackson結構圖。為了表示實體結構,Jackson引入了如圖1.9所示的結構圖。在此圖中給出了對實體的三種典型動作,即順序、選擇和重復。其中,順序型是指對于實偈的動作B,C是按時間順序先左后右執行;選擇型使用了符號“。”,表示實體A的兩個動作B與C在某個時刻只做一個;重復型表示帶有“*”的動作重復執行多次。JACKSON方法的設計過程、、順序結構 選擇結構 循環結構圖1.9三種基本結構
⑴建立數據結構JACKSON方法中數據結構通常表示為樹型結構,有順序、選擇和循環三種基本結構(圖1.9)。如圖1.10(a)所示,按照三種基本結構建立的文件數據結構。⑵以數據結構為基礎,建立相應的程序結構圖,如圖.10(b),也稱為JACKSON圖。當沒有結構沖突時,轉換過程是簡單的。一般情況,數據結構與模塊結構是相對應的,因此不難從數據結構導出程序結構。(a)(b)(a)圖1.10數據結構轉換為程序結構由于輸入、輸出數據結構在內容、數量、次序上是對應的,不難由數據結構導出程序結構圖。如果出現“結構沖突”Structureclash),至使從數據結構導出程序結構的困難。一般的解決辦法是在輸入、輸出之間構造一個或者多個中間結構。Jackson方法的優、缺點:優點:結構清晰、易理解、易修改。不會過多依賴于設計者的經驗。缺點:當系統規模及復雜度大時,確定數據結構困難。1.4.3原型化開發方法1、原型化方法(PrototypingMethod原型是軟件開發過程中,軟件的一個早期可運行的版本,它反映了最終系統的部分重要特性。原型化方法的基本思想是花費少量代價建立一個可運行的系統,使用戶及早獲得學習的機會,原型化方法又稱速成原型法(RapidPrototyping).強調的是軟件開發人員與用戶的不斷交互,通過原型的演進不斷適應用戶任務改變的需 —求。將維護和修改階段的工作盡早進行,使用戶驗收提前,從而 /L一<、\使軟件產品更加適用。 /、快速分析或修改1)快速建立需求規格原型(RSP法) j、"廣w評價 構造'RSP(RapidSpecificationPrototyping)法所建立的原型反映\/、---、、/了系統的某些特征,讓用戶學習,有利于獲得更加精確的需求說\<運行y明書,待需求說明書一旦確定原型被廢棄,后階段的工作仍按照圖i.ii原型化開發模型瀑布模型開發,所以也稱為廢棄(throwaway)型。2)快速建立漸進原型(人。法)RCP(RapidCyclicPrototyping法采用循環漸進的開發方式,對系統模型作連續精化,將系統需要具備的性質逐步添加上去,直至所有性質全部滿足,此時的原型模型也就是最終的產品,所以也稱為追加(addon)型。速成原型法適合于開發“探索型”,“實驗型”與“進化型”一類的軟件系統。速成原型的工作模型是一個循環的模型??焖僭头ò匆韵虏襟E循環執行:.快速分析快速確定軟件系統的基本要求,確定原型所要體現的特征(界面,總體結構,功能,性能).構造原型在快速分析的基礎上,根據基本規格說明,忽略細節,只考慮主要特征,快速構造一個可運行的系統。有三類原型:用戶界面原型,功能原型,性能原型。(3.)運行和評價原型用戶試用原型并與開發者之間頻繁交流,發現問題,目的是驗證原型的正確性。修改與改進對原型進行修改,增刪。1.4.4面向對象的開發方法OOSD(Object-OrientedSoftwareDevelopment)法是80年代推出的一種全新的軟件開發方法。非常實用而強有力,被譽為90年代軟件的核心技術之一。其基本思想是:對問題領域進行自然的分割,以更接近人類通常思維的方式建立問題領域的模型,以便對客觀的信息實體進行結構和行為的模擬,從而使設計的軟件更直接地表現問題的求解過程。面向對象的開發方法以對象作為最基本的元素,是分析和解決問題的核心。Coad和Yourdon給出一個面向對象的定義:面向對祭對象+類+繼承+消息如果一個軟件系統是按照這樣四個概念設計和實現的,則可以認為這個軟件系統是面向對象的。OOSD由OOA(面向對象的分析)、OOD(面向對象的設計)和OOP(面向對象的程序設計)三部分組成。1、OOA(Object-OrientedAnalysis)法OOA就是要解決“做什么”的問題。它的基本任務就是要建立以下三種模型:對象模型(信息模型)一一定義構成系統的類和對象,它們的屬性與操作。狀態模型(動態模型)一一描述任何時刻對象的聯系及其聯系的改變,即時序。常用狀態圖,事件追蹤圖描述。處理模型(函數模型)一一描述系統內部數據的傳送處理。顯然,在三大模型中,最重要的是對象模型。如何建立三大模型,我們將在第五章中介紹。2、 OOD(Object-OrientedDesign)法在需求分析的基礎上,進一步解決“如何作”的問題,OOD法也分為概要設計和詳細設計。概要設計:細化對象行為,添加新對象,認
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 首鋼股份電商協議書
- 船舶主機買賣協議書
- 俱樂部會長轉讓協議書
- 風水布局轉讓協議書
- 車輛質押免責協議書
- 企業公眾號轉讓協議書
- 金融貿易合伙協議書
- 項目收益分紅協議書
- 高中作業安全協議書
- 餐廳股權激勵協議書
- 社會調查方法問卷設計
- 竣 工 驗 收 證 書(施管表2)
- 二年級數學雙向細目表
- 第八講 發展全過程人民民主PPT習概論2023優化版教學課件
- 基于PLC三層電梯控制系統設計課程設計論文
- 北科大工業生態學課件08現代工業的生態化轉向
- 安徽國星生物化學有限公司年產5萬噸吡啶堿項目環境影響報告書
- 部編八下語文游記閱讀訓練題語文八年級下冊能力訓練(部編版)
- 涉外商標培訓-中科為
- 五金采購合同(含清單明細)2022
- 專利技術交底書-案例模板-軟件類-樣板示例
評論
0/150
提交評論