軟件工程實踐教程第1章課件_第1頁
軟件工程實踐教程第1章課件_第2頁
軟件工程實踐教程第1章課件_第3頁
軟件工程實踐教程第1章課件_第4頁
軟件工程實踐教程第1章課件_第5頁
已閱讀5頁,還剩143頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程實踐教程

(第2版)軟件工程實踐教程

(第2版)1美麗的北師大珠海分校(1)

校園黎明靜悄悄----趙池龍攝美麗的北師大珠海分校(1)

校園黎明靜悄悄----趙池龍攝2軟件工程實踐教程第1章3學習與評估1.教材:楊林、趙池龍主編著,《軟件工程實踐教程(第2版)》,電子工業(yè)出版社,2011。2.成績評估:期末開卷筆試占總成績的40%左右。平時項目實踐占總成績的60%左右。學習與評估1.教材:楊林、趙池龍主編著,《軟件工程實踐教程4第1章軟件開發(fā)與軟件管理全過程

軟件工程是研究軟件開發(fā)與軟件管理的工程科學。軟件工程認為:只要將軟件開發(fā)過程與軟件管理過程改善了,軟件企業(yè)的項目、產品和服務就能令客戶滿意,軟件企業(yè)就能發(fā)展壯大。那么,軟件開發(fā)過程到底包含哪些內容呢?這就是本章要解決的問題。

第1章軟件開發(fā)與軟件管理全過程軟件工程是研究軟件開發(fā)與軟5軟件開發(fā)的一般過程首先要選擇合適的軟件生命周期模型,然后按照此模型規(guī)定的路線圖,進行需求、設計、編程、測試、驗收。若符合客戶要求,則開發(fā)過程結束,轉入運行與維護階段。若不符合客戶要求,則進入新一輪迭代循環(huán),開始新一輪需求、設計、編程、測試、驗收。如此往復循環(huán),直到客戶滿意為止。若要減少往復循環(huán)次數,則要加強對每一步的評審、審計、配置管理與質量保證工作,尤其是第一步(需求)的質量保證工作。軟件開發(fā)的一般過程首先要選擇合適的軟件生命周期模型,然后按照61.1選擇軟件開發(fā)模型

生命周期指軟件開發(fā)全部過程、活動和任務的結構框架。軟件開發(fā)包括需求、設計、編程和測試階段,有時也包括軟件實施與維護階段。目前IT企業(yè)在軟件開發(fā)實踐中使用的生命周期模型是:瀑布模型、增量模型、原型模型與迭代模型。1.1選擇軟件開發(fā)模型生命周期指軟件開發(fā)全部過程、活動和71.瀑布模型(WaterfallModel)

瀑布模型形象地用階梯瀑布描述,水由上向下一個階梯接著一個階梯地傾瀉下來。在瀑布模型中,軟件開發(fā)的各項活動嚴格按照線性方式進行,當前階段的活動接受上一階段活動的工作結果,實施完成所需的工作內容。對當前階段活動的工作結果需要進行驗證,如果驗證通過,則該結果作為下一階段活動的輸入,繼續(xù)進行下一階段的活動,否則返回上一階段進行修改。瀑布模型選取的條件是:在開發(fā)周期內,客戶的需求是穩(wěn)定的。1.瀑布模型(WaterfallModel)瀑布模型形象82.增量模型(IncrementalModel)

增量模型是遵循遞增方式來進行軟件開發(fā)的。軟件產品被作為一組增量構件(模塊),每次需求、設計、編程、集成、測試和交付一塊構件,直到所有構件全部實現(xiàn)為止。增量模型選取的條件是:項目本身可拆卸成為多個模塊,并且客戶同意一個模塊接著一個模塊地交付。2.增量模型(IncrementalModel)增量模型93.原型模型(PrototypeModel)

原型模型的本意是:在初步需求分析之后,馬上向客戶展示一個軟件產品原型(樣品),對客戶進行培訓,讓客戶試用,在試用中收集客戶意見,根據客戶意見立刻修改原型,之后再讓客戶試用,反復循環(huán)幾次,直到客戶確認為止。原型模型選取的條件是:開發(fā)者手中有相近或相似的產品原型。3.原型模型(PrototypeModel)原型模型的本104.迭代模型(IterativeModel)

RUP(RationalUnifiedProcess),是一種最有代表性的迭代模型。RUP推出的一種“逐步求精”的面向對象的軟件開發(fā)過程模型,被認為軟件界迄今為止最完善的、商品化的開發(fā)過程模型。迭代模型的特點是:迭代或迭代循環(huán)驅動,每一次迭代或迭代循環(huán),均要走完初始(規(guī)范業(yè)務與需求)、精化(架構設計與詳細設計)、構建(編程與測試)、移交(產品化)這四個階段。迭代模型選取的條件是:在開發(fā)周期內,客戶的需求是有變化的。4.迭代模型(IterativeModel)RUP(Ra115.瀑布模型與迭代模型之間的關系

在宏觀上,迭代模型是動態(tài)模型,瀑布模型是靜態(tài)模型。迭代模型的每一次迭代,實質上都是執(zhí)行一次瀑布模型,都要經歷初始、精化、構造、移交四個階段(或需求、設計、實現(xiàn)、交付四個階段),走完瀑布模型的全過程。在微觀上,迭代模型與瀑布模型都是動態(tài)模型。迭代模型與瀑布模型在每一個開發(fā)階段(初始、精化、構造、移交)的內部,都有一個小小的迭代過程,只有經歷這個小小的迭代過程,該階段的開發(fā)工作才能做細做好。5.瀑布模型與迭代模型之間的關系在宏觀上,迭代模型是動態(tài)模12從圖中可見:迭代中有瀑布,瀑布中有迭代。即你中有我、我中有你。從圖中可見:迭代中有瀑布,瀑布中有迭代。即你中有我、我中有你13瀑布模型與迭代模型之間的關系

瀑布模型與迭代模型之間的關系,完全反映了人們對客觀事物的認識論:要認識與掌握某一客觀事物,你必須經歷過由宏觀到微觀的多次反復過程。只有從宏觀上反復迭代幾次,你才能看清全貌,掌握事物的宏觀發(fā)展規(guī)律。只有從微觀上反復迭代幾次,你才能吃透每個細節(jié),掌握事物的微觀發(fā)展規(guī)律。瀑布模型與迭代模型之間的關系瀑布模型與迭代模型之間的關系,146.軟件開發(fā)模型總結

以上介紹的四種開發(fā)模型,是IT企業(yè)常用的模型,它們的性能比較,如表1-2所示。此外,自從敏捷文化出現(xiàn)之后,在一些中小型軟件企業(yè),XP模型(ExtremeProgrammingModel)也迅速得到了應用。除了上面介紹的幾種常用模型之外,還有螺旋模型(SpiralModel)、噴泉模型(FountainModel)等等,這些模型在IT企業(yè)很少使用。

6.軟件開發(fā)模型總結以上介紹的四種開發(fā)模型,是IT企業(yè)常151.2選擇軟件開發(fā)方法

在軟件工程界,目前流行四種基本的軟件開發(fā)方法:面向過程方法、面向對象方法、面向元數據方法和形式化方法。作為軟件開發(fā)人員,到底要如何看待這些方法,進而如何選擇這些方法呢?請看下文分析。1.2選擇軟件開發(fā)方法在軟件工程界,目前流行四種基本的軟161.面向過程方法面向過程方法,習慣上稱為傳統(tǒng)軟件工程開發(fā)方法,或結構化方法。它包括結構化分析、結構化設計、結構化編程、結構化測試、結構化維護。面向過程的方法,有時又稱面向功能的方法,即面向功能分析、面向功能設計、面向功能編程、面向功能測試、面向功能維護。由此可見,面向過程方法、面向功能方法、結構化方法,三者是同一個意思。1.面向過程方法面向過程方法,習慣上稱為傳統(tǒng)軟件工程開發(fā)方法17面向過程方法,采用“自頂向下,逐步求精”的技術對系統(tǒng)進行劃分,分解和抽象是它的兩個基本手段。編程時采用單入口單出口的控制結構,并且只包含順序、選擇和循環(huán)三種結構,目標之一是使程序的控制流程線性化,即程序的動態(tài)執(zhí)行順序符合靜態(tài)書寫結構。面向過程方法的優(yōu)點是:以處理流程為基礎,簡單實用。面向過程方法,采用“自頂向下,逐步求精”的技術對系統(tǒng)進行劃分18面向過程方法的缺點:只注重過程化信息,因而忽略信息的層面關系以及相互聯(lián)系。它企圖使用簡單的時序過程方法(順序、分支、循環(huán)三種結構),來描述關系復雜(隨機)的信息世界,因而對于關系復雜的信息系統(tǒng)來說,其描述能力不強,最后可能導致軟件設計、開發(fā)和維護陷入困難。自從面向對象方法出現(xiàn)之后,面向過程方法的應用范圍開始萎縮。當前,面向過程方法主要用在過程式的程序設計中,例如:對象方法(函數)、科學計算、實時跟蹤和實時控制的實現(xiàn)。面向過程方法的缺點:只注重過程化信息,因而忽略信息的層面關系192.面向對象方法

面向對象方法,在不少軟件工程教材中,也稱為現(xiàn)代軟件工程開發(fā)方法。該方法包括面向對象需求分析、面向對象設計、面向對象編程、面向對象測試、面向對象維護、面向對象管理。面向對象方法是一種運用對象、類、消息傳遞、繼承、封裝、聚合、多態(tài)性等概念來構造軟件系統(tǒng)的軟件開發(fā)方法。2.面向對象方法面向對象方法,在不少軟件工程教材中,也稱為20面向對象方法的特點是:將現(xiàn)實世界的事物(問題域)直接映射到對象。分析設計時由對象(Object)抽象出類(Class),程序運行時由類還原到對象。面向對象方法的優(yōu)點是:由于每個對象可以接收信息、處理數據和發(fā)送信息給其他對象,可作為一個獨立的單元使用與運行,可起到效果獨特的作用,可解決大量既離散又關聯(lián)的實體,可重復使用編程的邏輯單位,以及該方法側重的不是過程的連續(xù)數據,而是客觀的離散數據,所以它能描述無窮的信息世界。同時,又由于對象間具有繼承性,所以易于代碼重用和擴展。

面向對象方法的特點是:將現(xiàn)實世界的事物(問題域)直接映射到對21面向對象方法的缺點是:設計和實現(xiàn)的復雜性較高,對于習慣于面向過程方法的人,他們較難掌握。面向對象方法是當前計算機界關心的重點,是軟件工程方法論的主流。面向對象的概念和應用已超越了程序設計和軟件開發(fā),擴展到更寬的范圍。如交互式界面、應用結構、應用平臺、分布式系統(tǒng)、網絡管理結構、CAD技術、人工智能等領域。面向對象方法的缺點是:設計和實現(xiàn)的復雜性較高,對于習慣于面向223.面向元數據方法

這里講的面向元數據方法,既不是傳統(tǒng)軟件工程中的“面向數據流”方法,也不是傳統(tǒng)意義上的面向數據結構的Jackson方法,它們倆者都是面向過程的方法,而且這兩個方法都出現(xiàn)在關系數據庫管理系統(tǒng)RDBMS(RelationalDatabaseManagementSystem)成熟之前。3.面向元數據方法這里講的面向元數據方法,既不是傳統(tǒng)軟件工23元數據(meta-data)是關于數據的數據,組織數據的數據,管理數據的數據。這里的元數據,是泛指一切組織數據的數據,例如類的名稱、屬性和方法,實體的名稱、屬性和關聯(lián),數據庫中的表名、字段名、主鍵、外鍵、索引、視圖,數據結構中存儲數據的框架等等。但是,我們研究的重點,是指數據庫中的元數據。元數據(meta-data)是關于數據的數據,組織數據的數據24面向元數據方法來源于面向元數據的程序設計思想,即來源于關系數據庫語言的程序設計思想。當關系數據庫管理系統(tǒng)和數據庫服務器出現(xiàn)之后,面向元數據方法才被人們所發(fā)現(xiàn)與重視。當數據庫設計的CASE工具PowerDesigner、OracleDesigner和ERwin出現(xiàn)之后,面向元數據設計方法才開始大流行。面向元數據方法包括面向元數據需求分析、面向元數據設計、面向元數據編程、面向元數據測試、面向元數據維護。面向元數據方法來源于面向元數據的程序設計思想,即來源于關系數25面向元數據需求分析,就是在需求分析時,找出信息系統(tǒng)所有的元數據,使其完全滿足信息系統(tǒng)對數據的存儲、處理、查詢、傳輸、輸出的數據要求。有了這些元數據,信息系統(tǒng)中的一切原始數據不但都被組織起來了,而且能完全派生出系統(tǒng)中的一切輸出數據。面向元數據設計,就是利用需求分析獲得的元數據,采用面向元數據的CASE工具,設計出信息系統(tǒng)的概念數據模型CDM(ConceptualDataModel)和物理數據模型PDM(PhysicsDataModel),以及從原始數據到輸出數據的所有算法與視圖。面向元數據需求分析,就是在需求分析時,找出信息系統(tǒng)所有的元數26面向元數據編程,就是在物理數據模型PDM的基礎上,根據信息系統(tǒng)的功能、性能、接口和業(yè)務規(guī)則,建立數據庫表和視圖,再利用數據庫編程語言,編寫出存儲過程和觸發(fā)器。面向元數據測試,就是對數據庫表初始化并加載之后,運行相關的存儲過程和觸發(fā)器,測試信息系統(tǒng)的各種功能需求與性能指標。面向元數據維護,就是對數據庫表中的記錄進行統(tǒng)計、分析、審計、復制、備份、恢復,甚至對表結構及視圖結構,也可以進行必要的調整。面向元數據編程,就是在物理數據模型PDM的基礎上,根據信息系27面向元數據方法的缺點是:只能實現(xiàn)二維表格,不能實現(xiàn)窗口界面。面向元數據方法,與關系數據庫管理系統(tǒng)緊密地捆綁在一起,只要面向對象數據庫不能完全替代關系數據庫,這種方法就不會終結。目前數據庫管理系統(tǒng)的發(fā)展趨勢是:在關系型數據庫的基礎上,將面向對象的某些特性(如繼承)添加上去,稱為“對象-關系型數據庫”,但本質上仍然是一個關系型數據庫。面向元數據方法的缺點是:只能實現(xiàn)二維表格,不能實現(xiàn)窗口界面。284.形式化方法

軟件工程的形式化方法(Formalizedmethod),是建立在嚴格數學基礎上、以邏輯推理為出發(fā)點、并且具有精確數學語義的開發(fā)方法。形式化方法在IT企業(yè)很少使用,在此也不進一步介紹。4.形式化方法軟件工程的形式化方法(Formalized295.各種方法之間的關系

到目前為止,軟件工程的基本方法,包涵面向過程方法、面向對象方法、面向元數據方法和形式化方法。至于面向業(yè)務基礎平臺方法,它只是面向元數據方法與面向對象方法的具體應用案例,不能單獨作為一種基本方法。5.各種方法之間的關系到目前為止,軟件工程的基本方法,包涵30在大型多層(B/A/S)結構的信息系統(tǒng)建設中,這四種方法的關系是:面向元數據方法用在數據庫服務器S層面上系統(tǒng)的分析、設計與實現(xiàn),面向對象方法用在除數據庫服務器層面之外的其他層面上(B/A)系統(tǒng)的分析、設計與實現(xiàn),面向過程方法用在其他兩種方法本身內部函數的分析、設計與實現(xiàn),形式化方法用在某些核心程序的正確性證明上。面向過程方法、面向對象方法、面向元數據方法和形式化方法,它們各有優(yōu)缺點,適合于不同的場合。四種方法的比較,如表1-3所示。在大型多層(B/A/S)結構的信息系統(tǒng)建設中,這四種方法的關31方法名稱優(yōu)點缺點適合的場合面向過程方法簡單好學不適應窗口界面,維護困難大型工程計算,實時數據跟蹤處理,各種自動化控制系統(tǒng),以及系統(tǒng)軟件實現(xiàn)等領域,以及過程、方法與函數的計算面向對象方法功能強大,易于維護不易掌握互聯(lián)網絡時代,完全由用戶交互控制程序執(zhí)行過程的應用軟件和系統(tǒng)軟件的開發(fā),例如,在B/S結構中數據層之外的其它各層的需求、設計與實現(xiàn)面向元數據方法通俗易懂不適應窗口界面以關系數據庫管理系統(tǒng)為支撐平臺的信息系統(tǒng)建設,例如,B/S結構中數據層的需求、設計與實現(xiàn)形式化方法準確、嚴謹難于上手和應用對安全性要求極高,不容許出錯的軟件系統(tǒng),如軍事、醫(yī)藥、交通等領域方法名稱優(yōu)點缺點適合的場合面向過程方321.3三個模型與三層結構

在信息系統(tǒng)的需求與設計中,一般需要建立三個模型,即功能模型、業(yè)務模型和數據模型,分別對應B/A/S三層體系結構中的三個不同層次,即瀏覽層、中間層和數據層,如圖1-2所示。其中:功能模型主要表現(xiàn)在瀏覽層;業(yè)務模型對應中間層,即業(yè)務邏輯層,功能模型中的功能,基本上都在業(yè)務模型中加以具體實現(xiàn);數據模型對應數據層,實現(xiàn)持久型數據的存儲與運算。

1.3三個模型與三層結構在信息系統(tǒng)的需求與設計中,一般需33軟件工程實踐教程第1章341.三個模型

(1).功能模型功能模型實質上是用戶需求模型,是描述系統(tǒng)能做什么,即對系統(tǒng)的功能、性能、接口和界面進行定義。功能模型在需求分析時的表示方法為:系統(tǒng)功能需求列表、性能需求列表、接口需求列表、界面需求列表。統(tǒng)一建模語言UML,主要采用“用例圖”來描述功能模型。功能模型既是動態(tài)的,又是靜態(tài)的。1.三個模型(1).功能模型35(2).業(yè)務模型

業(yè)務模型實質上是業(yè)務邏輯模型,是描述系統(tǒng)在何時、何地、由何角色、按什么業(yè)務規(guī)則去做,以及做的步驟或流程,即對系統(tǒng)的操作流程進行定義。業(yè)務流程圖也可以用業(yè)務操作步驟來描述,還可以用類似于程序流程圖的圖形來表達。在UML中,完整的業(yè)務模型由用例圖、時序圖、交互圖、狀態(tài)圖、活動圖來表述。業(yè)務模型是動態(tài)的,所以有時稱業(yè)務模型為動態(tài)模型或操作模型。(2).業(yè)務模型業(yè)務模型實質上是業(yè)務邏輯模型,是描述系統(tǒng)36(3).數據模型

數據模型實質上是實體或類的狀態(tài)關系模型,是描述系統(tǒng)工作前的數據來自何處,工作中的數據暫存什么地方,工作后的數據放到何處,以及這些數據的狀態(tài)及互相之間的關聯(lián),即對系統(tǒng)的數據結構進行定義。數據模型反映了系統(tǒng)的數據關系,它是實體或類的狀態(tài)設計依據。(3).數據模型數據模型實質上是實體或類的狀態(tài)關系模型,37數據模型有類模型和數據庫關系模型。其中類模型用于用戶界面層和中間層的數據建模,數據庫關系模型用于持久層數據建模。信息系統(tǒng)中的數據模型,是指它的E-R圖及其相應的數據字典。這里的數據字典,包括實體字典、屬性字典、關系字典。在數據庫CASE工具幫助下,可以查閱、顯示、修改、打印、保存數據字典。數據模型有類模型和數據庫關系模型。其中類模型用于用戶界面層和38信息系統(tǒng)中的數據模型分為概念數據模型CDM和物理數據模型PDM兩個層次。CDM就是數據庫的邏輯設計,即E-R圖。PDM就是數據庫的物理設計,即物理表。有了CASE工具后,從CDM就可以自動轉換為PDM,而且還可以自動獲得主鍵索引、觸發(fā)器等等。數據模型設計是企業(yè)信息系統(tǒng)設計的中心環(huán)節(jié),數據模型建設是企業(yè)信息系統(tǒng)建設的基石,設計者與建設者萬萬不可粗心大意。這里要特別強調:數據模型要在程序設計之前完成設計,要用數據模型指導程序設計,絕對不允許用程序設計來指導數據模型設計!

信息系統(tǒng)中的數據模型分為概念數據模型CDM和物理數據模型PD39數據模型本身是靜態(tài)的,但是在設計者心目中,應該盡量將它由靜態(tài)變成動態(tài)。設計者可以想象數據(或記錄)在相關表上的流動過程,即增加、刪除、修改、傳輸與處理等,從而在腦海中運行系統(tǒng),或在E-R圖上運行系統(tǒng)。數據模型本身是靜態(tài)的,但是在設計者心目中,應該盡量將它由靜態(tài)402.三層體系結構

所謂的三層結構,就是在原來兩層結構(Client/Server)的客戶層與數據層之間,加入了一個中間層(也叫業(yè)務層),并將應用程序的業(yè)務規(guī)則、數據訪問、合法性校驗等工作放到了中間層進行處理,這樣就變成了三層結構(Browser/Server)。這里所說的三層,不一定是指物理上的三層,不是簡單地放置三臺機器就是三層結構,也不僅僅有B/S應用才是三層結構,三層是指邏輯上的三層,即使這三個層都放置到一臺機器上。當然,三層也可以放在兩臺或三臺機器上。2.三層體系結構所謂的三層結構,就是在原來兩層結構(Cli41表示層(PresentationTier)表示層采用圖形化用戶界面,在客戶端的PC機或工作站上運行。系統(tǒng)內部支持表示層的模型是“功能模型”,盡管“功能模型”中的功能實現(xiàn)組件都存放在業(yè)務層上。表示層的主要功能是:(1).接受用戶的請求,將這些請求反饋給業(yè)務邏輯層,等待業(yè)務邏輯層的回答信息;(2).對業(yè)務邏輯層的回答信息,進行顯示;(3).有時也會兼做業(yè)務邏輯層的一些小功能,比如對用戶輸入數據的驗證,以及操作合法性的檢驗。表示層(PresentationTier)表示層采用圖形42中間層(BusinessTier)中間層也稱業(yè)務層,由許多構件或組件組成,這些構件或組件體現(xiàn)了用戶的業(yè)務邏輯或業(yè)務規(guī)則,系統(tǒng)內部支持業(yè)務層的模型是“業(yè)務模型”。業(yè)務層的主要功能是:(1).接受從表現(xiàn)層傳來的用戶請求信息;(2).根據用戶的請求信息生成SQL語句;(3).利用生成的SQL語句從數據層取數據、或修改數據、或刪除數據;(4).將結果返回給表現(xiàn)層。中間層(BusinessTier)中間層也稱業(yè)務層,由許43數據層(DataTier)數據層是數據庫服務器上的數據庫,它包括數據庫管理系統(tǒng)DBMS和數據庫DB兩部分,系統(tǒng)內部支持數據層的模型是“數據模型”。該層的主要功能是:(1).接受業(yè)務層數據處理請求的SQL語句或存儲過程;(2).利用SQL語句或存儲過程,對數據庫服務器上數據庫的相關表進行存儲或檢索;(3).將存儲或檢索的結果信息,傳遞給業(yè)務層。數據層(DataTier)數據層是數據庫服務器上的數據庫44三層協(xié)調工作

三層之間,通過各自提供的接口來訪問。用戶想登錄并操作系統(tǒng),在表示層輸入用戶名和密碼,表示層會收集相關的數據傳遞給業(yè)務層,業(yè)務層將數據經過一些處理和封裝之后,再傳遞給數據層,數據層執(zhí)行數據庫查詢操作,并將結果返回業(yè)務層,業(yè)務層再返回表示層,表示層再顯示給用戶看。對登錄信息和操作信息,都是這么分層處理、協(xié)調工作的。業(yè)務層與數據層的信息交換采取批發(fā)方式,業(yè)務層與表示層的信息交換采取零售方式。三層協(xié)調工作三層之間,通過各自提供的接口來訪問。45三層結構優(yōu)點

(1).三層之間的低耦合,所以互不干擾,哪一層出了問題就去找哪一層去解決。(2).三層結構減少了客戶機的工作量,提高了網絡系統(tǒng)的運行效率;(3).三層結構有利于系統(tǒng)的維護和升級,各個層的維護,互不影響。三層結構優(yōu)點(1).三層之間的低耦合,所以互不干擾,哪一層461.4軟件開發(fā)全過程

軟件開發(fā)過程,一般由立項、需求、設計、編程、測試、運行與維護這幾個階段組成。下面對每個階段的內容進行介紹。1.4軟件開發(fā)全過程軟件開發(fā)過程,一般由立項、需求、設計471.可行性研究與軟件立項

在可行性研究階段內,要分析該軟件項目立項的必要性(有市場前景)與可能性(我們能夠做好),開發(fā)目標和總體要求,以及項目的總體功能、性能、接口與界面,當前用戶與潛在用戶,投資/收益分析與風險分析,并完成立項報告。當立項報告經評審通過后,才能正式立項??尚行匝芯渴橇㈨椀那疤?,立項是可行性研究的結果。1.可行性研究與軟件立項在可行性研究階段內,要分析該軟件482.軟件需求分析

需求分析是面向流程的,而流程是動態(tài)的、實時的。系統(tǒng)的功能、性能、接口、界面都是在流程中動態(tài)實時地反映出來。在所有的流程(物流、人流、資金流、信息流、單據流、報表流、數據流)中,數據流最重要,也最有代表性。面向流程分析本質上是面向數據流程分析。

2.軟件需求分析需求分析是面向流程的,而流程是動態(tài)的、實49需求分析的思路,是從用戶的功能需求(系統(tǒng)需要做什么)出發(fā),由系統(tǒng)的業(yè)務流程和數據流程導出系統(tǒng)的業(yè)務模型和功能模型,識別出系統(tǒng)的元數據和中間數據,為今后設計數據模型做好充分準備。對系統(tǒng)的軟、硬件環(huán)境配置、開發(fā)工期、費用、開發(fā)進度、培訓、系統(tǒng)風險進行深入評估。需求分析的思路,是從用戶的功能需求(系統(tǒng)需要做什么)出發(fā),由50需求分析要產生《用戶需求報告》文檔。該文檔是用戶和開發(fā)者雙方,對該軟件系統(tǒng)的功能規(guī)定與性能規(guī)定的共同理解,使之成為整個開發(fā)工作的基礎。《用戶需求報告》主要內容包括該軟件的功能、性能、接口、界面及數據要求說明等。該文檔完成后,要經過適當地評審,評審通過后,雙方要簽字確認,形成第一個里程碑?!队脩粜枨髨蟾妗肺臋n完成后,就要產生《需求分析規(guī)格說明書》,為概要設計做好充分準備,同時還要考慮內部測試計劃、用戶驗收計劃、測試用例設計和用戶操作手冊設計。需求分析要產生《用戶需求報告》文檔。該文檔是用戶和開發(fā)者雙方513.軟件設計

概要設計(架構設計)是面向模塊的,其主要目的,將軟件系統(tǒng)分解為多個子系統(tǒng),再將子系統(tǒng)分解為多個模塊或部件,并將系統(tǒng)所有的功能,合理地分配到模塊或部件中去。《概要設計說明書》文檔主要內容為:軟件系統(tǒng)架構設計、運行環(huán)境設計、模塊劃分、模塊功能分配、數據庫與數據結構設計、接口設計。編制的目的是為詳細設計提供基礎。3.軟件設計概要設計(架構設計)是面向模塊的,其主要目的52詳細設計是面向程序的,它的主要目的,將軟件系統(tǒng)的模塊或部件分解成類,建立類與類之間的關系,并設計類的行為,用以指導程序人員編寫代碼?!对敿氃O計說明書》文檔主要內容為:公用模塊設計、專用模塊設計、存儲過程與觸發(fā)器設計、接口設計、界面設計。對于簡單或熟悉的系統(tǒng),概要設計和詳細設計可以合二而一,形成一份文檔(稱為設計說明書),進行一次評審,實現(xiàn)一個里程碑,確立一條基線。對于復雜或生疏的系統(tǒng),概要設計和詳細設計必須分開,形成兩份文檔,進行兩次評審,實現(xiàn)兩個里程碑,確立兩條基線。詳細設計是面向程序的,它的主要目的,將軟件系統(tǒng)的模塊或部件分53在設計之前,首先要確定系統(tǒng)命名規(guī)范,模塊命名規(guī)范,構件命名規(guī)范,變量命名規(guī)范,以及數據庫中的表名、字段名、索引名、視圖名、存儲過程名、觸發(fā)器的命名規(guī)范等。軟件設計時,一方面要善于將需求分析規(guī)格說明書中的冗余去掉,將公用功能提煉出來,并將它設計為構件,標準化后加入到公司構件庫中,由構件庫管理,作為公共資源。另一方面,還要盡量調用公司構件庫中已有的構件。構件的實現(xiàn)和調用是一個面向對象的編程技術問題。在設計之前,首先要確定系統(tǒng)命名規(guī)范,模塊命名規(guī)范,構件命名規(guī)544.軟件實現(xiàn)(編程)

微觀上講,軟件實現(xiàn)是指通過編碼、調試、單元測試、集成測試等活動創(chuàng)建軟件產品的過程。軟件實現(xiàn)與軟件設計、軟件測試密不可分。軟件設計為軟件實現(xiàn)提供輸入,軟件實現(xiàn)的輸出是軟件測試的輸入。盡管軟件設計和軟件測試是獨立的過程,但軟件實現(xiàn)本身也涉及到設計和測試工作,它們之間的界限視具體項目而定。軟件實現(xiàn)還會產生大量的軟件配置項,例如,源文件、測試用例等,因此軟件實現(xiàn)過程還涉及配置管理。4.軟件實現(xiàn)(編程)微觀上講,軟件實現(xiàn)是指通過編碼、調試55軟件實現(xiàn)環(huán)境,目前主要是.Net和J2EE。軟件實現(xiàn)原則,通常有如下幾條:(1)盡量簡單。在軟件實現(xiàn)過程中,應創(chuàng)建簡單、易讀的代碼。相同功能的代碼只寫一次。(2)易于驗證。無論是在編碼、測試還是實際操作中,軟件工程師應很容易地發(fā)現(xiàn)其中的錯誤。自動化的單元測試可幫助產生易于驗證的代碼。寫代碼時,要限制使用復雜的難以理解的語言結構。軟件實現(xiàn)環(huán)境,目前主要是.Net和J2EE。56(3)適應變化。外部環(huán)境、軟件需求和軟件設計,在整個開發(fā)過程中可能會隨時變化,因此,要求軟件實現(xiàn)時考慮適應這些變化。(4)遵守編程規(guī)范。(5)選擇最熟悉的工具或語言。軟件實現(xiàn)工具或語言,不是越時髦越好,而是越成熟與越熟練越好,這樣可以避免技術風險和技能風險。(6)在實現(xiàn)過程中完善《用戶操作手冊》。(3)適應變化。外部環(huán)境、軟件需求和軟件設計,在整個開發(fā)過575.軟件測試

在IT企業(yè),通常以黑盒測試為主,以白盒測試為輔,比較適用的是黑加白的“灰盒測試”。黑盒測試是面向功能的測試,也稱為不透明盒測試,它給我們更多啟示是它的思考方式,即不考慮(主觀上屏蔽)或者不需要(客觀條件限制)知道被測對象的內部實現(xiàn)細節(jié),只關心輸入和輸出。理論講上,只有把所有可能的行為都作為測試用例(TestCase)輸入,就能完成黑盒測試工作。黑盒測試的對象可以是軟件單元、軟件模塊、軟件組件、軟件子系統(tǒng)和軟件系統(tǒng)。

5.軟件測試在IT企業(yè),通常以黑盒測試為主,以白盒測試為58在用黑盒測試方法測試系統(tǒng)的功能模型時,重點是要設計黑盒測試用例,包括輸入條件和預期輸出結果。在實際項目測試中,由于時間和資源的限制,黑盒測試工作要用盡可能少的測試用例,測試出盡可能多的軟件需求。在提煉測試需求后,再采用黑盒測試方法設計測試用例。如何將軟件需求轉換到測試需求,再將測試需求轉換到測試用例?轉換的一般原則是:每一項用戶需求都應該分解為多個測試需求,每個測試需求都應該設計出多個測試用例。這種分解或轉換關系,如圖1-2所示。在用黑盒測試方法測試系統(tǒng)的功能模型時,重點是要設計黑盒測試用59軟件需求(用戶需求)測試需求測試用例軟件需求測試需求測試用例60白盒測試是面向程序執(zhí)行路徑的測試,測定依據是《詳細設計說明書》。理論上講,面向程序執(zhí)行路徑要進行窮舉代碼測試,直至覆蓋所有路徑為止。白盒測試的測試對象,側重于軟件單元、模塊和構件等小規(guī)模對象,不適合大規(guī)模的軟件項目或產品等測試對象。實用的白盒測試覆蓋技術有四種,即語句覆蓋、條件覆蓋、分支覆蓋和組合覆蓋。覆蓋技術的主要思想,是從不同角度盡可能提高代碼的測試覆蓋率。為了減少測試工作量,應該使得每一個測試用例,盡可能滿足多個覆蓋條件。白盒測試是面向程序執(zhí)行路徑的測試,測定依據是《詳細設計說明書616.軟件運行與維護

所謂軟件維護,就是指軟件項目或產品在安裝、運行并交付給用戶使用后,在新版本升級之前這段時間里,軟件廠商向客戶提供的服務工作。軟件維護過程是軟件開發(fā)過程的縮影。軟件維護的工作程序是:維護前的需求分析、維護前的系統(tǒng)設計、修改程序代碼、維護后的測試、維護后的試運行、維護后的正式運行、對維護過程的評審和審計。

6.軟件運行與維護所謂軟件維護,就是指軟件項目或產品在安621.5軟件開發(fā)所需基本知識

軟件等于“程序加數據加文檔”,程序是軟件的基礎與載體,數據是程序運行的條件與結果,文檔是指導程序設計與維護的依據。任何軟件專業(yè)的核心課程,必定包括“程序設計、離散數學、數據結構、數據庫、算法分析和軟件工程”,在這些核心課程中,真正日新月異、與時俱進的課程就是程序設計。如果你不但將這些課程學會,而且能在軟件開發(fā)的實踐中加以運用,那么你將成為軟件開發(fā)高手。1.5軟件開發(fā)所需基本知識軟件等于“程序加數據加文檔”,631.如果你是用B/A/S(三層結構)在網上開發(fā)信息系統(tǒng),比如網站開發(fā)、電子商務開發(fā)、MIS(管理信息系統(tǒng))開發(fā)、ERP(企業(yè)資源規(guī)劃)開發(fā)、網上游戲開發(fā),那么你必須具備如下知識:(1).軟件工程基本知識。它告訴你做軟件開發(fā)的一般路線圖是:先做需求分析,再做設計與編程,最后是測試與驗收。若一次不能完全成功,則需進行第二次迭代循環(huán),直到客戶驗收滿意為止;

1.如果你是用B/A/S(三層結構)在網上開發(fā)信息系統(tǒng),比如64(2).數據庫基本知識。因為信息系統(tǒng)是以DBMS(數據庫管理系統(tǒng))為支撐平臺的系統(tǒng),你不但要知道數據庫管理系統(tǒng)的基本操作,而且要知道如何設計數據庫,比如數據庫需求分析、設計概念數據模型CDM、設計物理數據模型PDM。只有這樣,你才能做好三層結構中數據庫服務器層次上的需求、設計、實現(xiàn)、維護工作;(3).面向對象開發(fā)平臺。當前的開發(fā)平臺,主要是.Net平臺和J2EE平臺。.NET開發(fā)平臺由微軟發(fā)布,J2EE開發(fā)平臺由SUN公司發(fā)布。只有掌握這兩個開發(fā)平臺(至少其中之一平臺),你才能做好三層結構中B/A層次上的需求、設計、實現(xiàn)、維護工作。這兩個平臺,都有各自的數據庫連接中間件ADO和JDBC,用以實現(xiàn)A層次上的數據與S層次上的數據之間的連接。(2).數據庫基本知識。因為信息系統(tǒng)是以DBMS(數據庫管652.如果你不是用B/A/S(三層結構)開發(fā)軟件系統(tǒng),比如系統(tǒng)軟件、嵌入式軟件、自動控制軟件、科學計算軟件,那么你必須具備如下知識:(1).軟件工程基本知識。它告訴你做軟件開發(fā)的一般路線圖是:先做需求分析,再做設計與編程,最后是測試與驗收。若一次不能完全成功,則需進行第二次迭代循環(huán),直到客戶驗收滿意為止;2.如果你不是用B/A/S(三層結構)開發(fā)軟件系統(tǒng),比如系統(tǒng)66(2).數據結構的基本知識。因為這些軟件的實現(xiàn)程序,多數都是面向過程的,而面向過程程序的基本特點是:程序等于算法加上相應的數據結構;(3).面向過程的開發(fā)平臺。當前的面向過程開發(fā)平臺,主要是C語言平臺。作為開發(fā)平臺的特例,Delphi是一種強類型的高級編程語言,支持面向過程、面向元數據和面向對象的開發(fā)方法。由此可見,掌握軟件工程的基本知識,熟悉開發(fā)語言,這是軟件開發(fā)必備的技術。

(2).數據結構的基本知識。因為這些軟件的實現(xiàn)程序,多數都671.6軟件管理全過程

軟件管理是面向過程的。軟件工程中的過程,是指軟件生命周期中的時間序列。軟件過程作為一個時間序列,它自然有起始點和終止點。1.6軟件管理全過程軟件管理是面向過程的。68面向過程管理,就是面向軟件生命周期過程,對軟件生命周期各個階段進行過程管理與過程改進。因為軟件產品質量及軟件服務質量的提高與改進,完全取決于軟件企業(yè)軟件過程的改善。無論是CMMI,還是ISO9001,都是站在軟件生命周期過程的層面上,去提高軟件企業(yè)的過程管理素質。軟件組織的軟件過程管理與改進,既面向開發(fā)全過程,又面向管理全過程。管理全過程,從軟件項目立項開始,始終跟蹤與監(jiān)控整個軟件生命周期的開發(fā)計劃、配置管理計劃、質量保證計劃,直到軟件項目結束為止。面向過程管理,就是面向軟件生命周期過程,對軟件生命周期各個階69可視、可控、優(yōu)化的全過程,就能保證軟件工作產品的高質量。質量源于過程,過程需要改進,改進需要模型,改進永無止境,這就是CMMI精神。在中國,軟件企業(yè)內部的軟件組織,都是按照CMMI模型的22個過程域,來進行軟件過程改進的。實施CMMI的投入成本高,工作量大,屬于重載過程管理。可視、可控、優(yōu)化的全過程,就能保證軟件工作產品的高質量。質量70以微軟為代表的自成體系的一套過程管理文化,稱為“微軟企業(yè)文化”,它既不正式采用CMMI體系,也不正式采用ISO9001體系,獨創(chuàng)了自己的管理模式,來替代CMMI和ISO9001體系。該管理模式的特色是激勵創(chuàng)新,培養(yǎng)開發(fā)人員標新立異的思維方式,以及既有個人的自由自在、又有團隊密切協(xié)同的企業(yè)精神。敏捷文化的主要內容包括:敏捷軟件過程AP(AgileProcess)、敏捷方法AM(AgileMethodology)、敏捷建模AM(AgileModeling)和極限編程XP(ExtremeProgramming)。實施敏捷文化的投入成本低,工作量小,屬于輕載過程管理。以微軟為代表的自成體系的一套過程管理文化,稱為“微軟企業(yè)文化71在過程管理與改進的三種模型中,起主導作用的還是軟件過程能力成熟度模型CMMI。應注意,任何標準體系或過程改善模型的實施成功,都不能保證企業(yè)產品質量100%合格,而只能保證改進企業(yè)管理過程,最終促進產品質量的提高。評審、審計、跟蹤、監(jiān)控、測試、糾錯,這是軟件質量保證的基本方法,也是軟件過程管理與過程改進的基本途徑。在過程管理與改進的三種模型中,起主導作用的還是軟件過程能力成72軟件過程中的評審,都要求在同行專家中進行,外行沒有資格參與評審,也不建議領導參與評審。表1-4和表1-5是兩張需求管理表,它們記錄了需求管理過程中的詳盡信息。各種評審記錄表,記錄了軟件開發(fā)過程中的大量評審記錄,大量過程管理記錄的積累,為軟件企業(yè)的軟件測量數據庫增加了巨大的財富。這些財富信息既為軟件企業(yè)的科學管理與決策提供了良好的基礎,又為軟件企業(yè)進行CMMI4級和5級的評估做好了充分準備。

軟件過程中的評審,都要求在同行專家中進行,外行沒有資格參與評73第1章介紹完畢。謝謝諸位,再見!第1章介紹完畢。74軟件工程實踐教程

(第2版)軟件工程實踐教程

(第2版)75美麗的北師大珠海分校(1)

校園黎明靜悄悄----趙池龍攝美麗的北師大珠海分校(1)

校園黎明靜悄悄----趙池龍攝76軟件工程實踐教程第1章77學習與評估1.教材:楊林、趙池龍主編著,《軟件工程實踐教程(第2版)》,電子工業(yè)出版社,2011。2.成績評估:期末開卷筆試占總成績的40%左右。平時項目實踐占總成績的60%左右。學習與評估1.教材:楊林、趙池龍主編著,《軟件工程實踐教程78第1章軟件開發(fā)與軟件管理全過程

軟件工程是研究軟件開發(fā)與軟件管理的工程科學。軟件工程認為:只要將軟件開發(fā)過程與軟件管理過程改善了,軟件企業(yè)的項目、產品和服務就能令客戶滿意,軟件企業(yè)就能發(fā)展壯大。那么,軟件開發(fā)過程到底包含哪些內容呢?這就是本章要解決的問題。

第1章軟件開發(fā)與軟件管理全過程軟件工程是研究軟件開發(fā)與軟79軟件開發(fā)的一般過程首先要選擇合適的軟件生命周期模型,然后按照此模型規(guī)定的路線圖,進行需求、設計、編程、測試、驗收。若符合客戶要求,則開發(fā)過程結束,轉入運行與維護階段。若不符合客戶要求,則進入新一輪迭代循環(huán),開始新一輪需求、設計、編程、測試、驗收。如此往復循環(huán),直到客戶滿意為止。若要減少往復循環(huán)次數,則要加強對每一步的評審、審計、配置管理與質量保證工作,尤其是第一步(需求)的質量保證工作。軟件開發(fā)的一般過程首先要選擇合適的軟件生命周期模型,然后按照801.1選擇軟件開發(fā)模型

生命周期指軟件開發(fā)全部過程、活動和任務的結構框架。軟件開發(fā)包括需求、設計、編程和測試階段,有時也包括軟件實施與維護階段。目前IT企業(yè)在軟件開發(fā)實踐中使用的生命周期模型是:瀑布模型、增量模型、原型模型與迭代模型。1.1選擇軟件開發(fā)模型生命周期指軟件開發(fā)全部過程、活動和811.瀑布模型(WaterfallModel)

瀑布模型形象地用階梯瀑布描述,水由上向下一個階梯接著一個階梯地傾瀉下來。在瀑布模型中,軟件開發(fā)的各項活動嚴格按照線性方式進行,當前階段的活動接受上一階段活動的工作結果,實施完成所需的工作內容。對當前階段活動的工作結果需要進行驗證,如果驗證通過,則該結果作為下一階段活動的輸入,繼續(xù)進行下一階段的活動,否則返回上一階段進行修改。瀑布模型選取的條件是:在開發(fā)周期內,客戶的需求是穩(wěn)定的。1.瀑布模型(WaterfallModel)瀑布模型形象822.增量模型(IncrementalModel)

增量模型是遵循遞增方式來進行軟件開發(fā)的。軟件產品被作為一組增量構件(模塊),每次需求、設計、編程、集成、測試和交付一塊構件,直到所有構件全部實現(xiàn)為止。增量模型選取的條件是:項目本身可拆卸成為多個模塊,并且客戶同意一個模塊接著一個模塊地交付。2.增量模型(IncrementalModel)增量模型833.原型模型(PrototypeModel)

原型模型的本意是:在初步需求分析之后,馬上向客戶展示一個軟件產品原型(樣品),對客戶進行培訓,讓客戶試用,在試用中收集客戶意見,根據客戶意見立刻修改原型,之后再讓客戶試用,反復循環(huán)幾次,直到客戶確認為止。原型模型選取的條件是:開發(fā)者手中有相近或相似的產品原型。3.原型模型(PrototypeModel)原型模型的本844.迭代模型(IterativeModel)

RUP(RationalUnifiedProcess),是一種最有代表性的迭代模型。RUP推出的一種“逐步求精”的面向對象的軟件開發(fā)過程模型,被認為軟件界迄今為止最完善的、商品化的開發(fā)過程模型。迭代模型的特點是:迭代或迭代循環(huán)驅動,每一次迭代或迭代循環(huán),均要走完初始(規(guī)范業(yè)務與需求)、精化(架構設計與詳細設計)、構建(編程與測試)、移交(產品化)這四個階段。迭代模型選取的條件是:在開發(fā)周期內,客戶的需求是有變化的。4.迭代模型(IterativeModel)RUP(Ra855.瀑布模型與迭代模型之間的關系

在宏觀上,迭代模型是動態(tài)模型,瀑布模型是靜態(tài)模型。迭代模型的每一次迭代,實質上都是執(zhí)行一次瀑布模型,都要經歷初始、精化、構造、移交四個階段(或需求、設計、實現(xiàn)、交付四個階段),走完瀑布模型的全過程。在微觀上,迭代模型與瀑布模型都是動態(tài)模型。迭代模型與瀑布模型在每一個開發(fā)階段(初始、精化、構造、移交)的內部,都有一個小小的迭代過程,只有經歷這個小小的迭代過程,該階段的開發(fā)工作才能做細做好。5.瀑布模型與迭代模型之間的關系在宏觀上,迭代模型是動態(tài)模86從圖中可見:迭代中有瀑布,瀑布中有迭代。即你中有我、我中有你。從圖中可見:迭代中有瀑布,瀑布中有迭代。即你中有我、我中有你87瀑布模型與迭代模型之間的關系

瀑布模型與迭代模型之間的關系,完全反映了人們對客觀事物的認識論:要認識與掌握某一客觀事物,你必須經歷過由宏觀到微觀的多次反復過程。只有從宏觀上反復迭代幾次,你才能看清全貌,掌握事物的宏觀發(fā)展規(guī)律。只有從微觀上反復迭代幾次,你才能吃透每個細節(jié),掌握事物的微觀發(fā)展規(guī)律。瀑布模型與迭代模型之間的關系瀑布模型與迭代模型之間的關系,886.軟件開發(fā)模型總結

以上介紹的四種開發(fā)模型,是IT企業(yè)常用的模型,它們的性能比較,如表1-2所示。此外,自從敏捷文化出現(xiàn)之后,在一些中小型軟件企業(yè),XP模型(ExtremeProgrammingModel)也迅速得到了應用。除了上面介紹的幾種常用模型之外,還有螺旋模型(SpiralModel)、噴泉模型(FountainModel)等等,這些模型在IT企業(yè)很少使用。

6.軟件開發(fā)模型總結以上介紹的四種開發(fā)模型,是IT企業(yè)常891.2選擇軟件開發(fā)方法

在軟件工程界,目前流行四種基本的軟件開發(fā)方法:面向過程方法、面向對象方法、面向元數據方法和形式化方法。作為軟件開發(fā)人員,到底要如何看待這些方法,進而如何選擇這些方法呢?請看下文分析。1.2選擇軟件開發(fā)方法在軟件工程界,目前流行四種基本的軟901.面向過程方法面向過程方法,習慣上稱為傳統(tǒng)軟件工程開發(fā)方法,或結構化方法。它包括結構化分析、結構化設計、結構化編程、結構化測試、結構化維護。面向過程的方法,有時又稱面向功能的方法,即面向功能分析、面向功能設計、面向功能編程、面向功能測試、面向功能維護。由此可見,面向過程方法、面向功能方法、結構化方法,三者是同一個意思。1.面向過程方法面向過程方法,習慣上稱為傳統(tǒng)軟件工程開發(fā)方法91面向過程方法,采用“自頂向下,逐步求精”的技術對系統(tǒng)進行劃分,分解和抽象是它的兩個基本手段。編程時采用單入口單出口的控制結構,并且只包含順序、選擇和循環(huán)三種結構,目標之一是使程序的控制流程線性化,即程序的動態(tài)執(zhí)行順序符合靜態(tài)書寫結構。面向過程方法的優(yōu)點是:以處理流程為基礎,簡單實用。面向過程方法,采用“自頂向下,逐步求精”的技術對系統(tǒng)進行劃分92面向過程方法的缺點:只注重過程化信息,因而忽略信息的層面關系以及相互聯(lián)系。它企圖使用簡單的時序過程方法(順序、分支、循環(huán)三種結構),來描述關系復雜(隨機)的信息世界,因而對于關系復雜的信息系統(tǒng)來說,其描述能力不強,最后可能導致軟件設計、開發(fā)和維護陷入困難。自從面向對象方法出現(xiàn)之后,面向過程方法的應用范圍開始萎縮。當前,面向過程方法主要用在過程式的程序設計中,例如:對象方法(函數)、科學計算、實時跟蹤和實時控制的實現(xiàn)。面向過程方法的缺點:只注重過程化信息,因而忽略信息的層面關系932.面向對象方法

面向對象方法,在不少軟件工程教材中,也稱為現(xiàn)代軟件工程開發(fā)方法。該方法包括面向對象需求分析、面向對象設計、面向對象編程、面向對象測試、面向對象維護、面向對象管理。面向對象方法是一種運用對象、類、消息傳遞、繼承、封裝、聚合、多態(tài)性等概念來構造軟件系統(tǒng)的軟件開發(fā)方法。2.面向對象方法面向對象方法,在不少軟件工程教材中,也稱為94面向對象方法的特點是:將現(xiàn)實世界的事物(問題域)直接映射到對象。分析設計時由對象(Object)抽象出類(Class),程序運行時由類還原到對象。面向對象方法的優(yōu)點是:由于每個對象可以接收信息、處理數據和發(fā)送信息給其他對象,可作為一個獨立的單元使用與運行,可起到效果獨特的作用,可解決大量既離散又關聯(lián)的實體,可重復使用編程的邏輯單位,以及該方法側重的不是過程的連續(xù)數據,而是客觀的離散數據,所以它能描述無窮的信息世界。同時,又由于對象間具有繼承性,所以易于代碼重用和擴展。

面向對象方法的特點是:將現(xiàn)實世界的事物(問題域)直接映射到對95面向對象方法的缺點是:設計和實現(xiàn)的復雜性較高,對于習慣于面向過程方法的人,他們較難掌握。面向對象方法是當前計算機界關心的重點,是軟件工程方法論的主流。面向對象的概念和應用已超越了程序設計和軟件開發(fā),擴展到更寬的范圍。如交互式界面、應用結構、應用平臺、分布式系統(tǒng)、網絡管理結構、CAD技術、人工智能等領域。面向對象方法的缺點是:設計和實現(xiàn)的復雜性較高,對于習慣于面向963.面向元數據方法

這里講的面向元數據方法,既不是傳統(tǒng)軟件工程中的“面向數據流”方法,也不是傳統(tǒng)意義上的面向數據結構的Jackson方法,它們倆者都是面向過程的方法,而且這兩個方法都出現(xiàn)在關系數據庫管理系統(tǒng)RDBMS(RelationalDatabaseManagementSystem)成熟之前。3.面向元數據方法這里講的面向元數據方法,既不是傳統(tǒng)軟件工97元數據(meta-data)是關于數據的數據,組織數據的數據,管理數據的數據。這里的元數據,是泛指一切組織數據的數據,例如類的名稱、屬性和方法,實體的名稱、屬性和關聯(lián),數據庫中的表名、字段名、主鍵、外鍵、索引、視圖,數據結構中存儲數據的框架等等。但是,我們研究的重點,是指數據庫中的元數據。元數據(meta-data)是關于數據的數據,組織數據的數據98面向元數據方法來源于面向元數據的程序設計思想,即來源于關系數據庫語言的程序設計思想。當關系數據庫管理系統(tǒng)和數據庫服務器出現(xiàn)之后,面向元數據方法才被人們所發(fā)現(xiàn)與重視。當數據庫設計的CASE工具PowerDesigner、OracleDesigner和ERwin出現(xiàn)之后,面向元數據設計方法才開始大流行。面向元數據方法包括面向元數據需求分析、面向元數據設計、面向元數據編程、面向元數據測試、面向元數據維護。面向元數據方法來源于面向元數據的程序設計思想,即來源于關系數99面向元數據需求分析,就是在需求分析時,找出信息系統(tǒng)所有的元數據,使其完全滿足信息系統(tǒng)對數據的存儲、處理、查詢、傳輸、輸出的數據要求。有了這些元數據,信息系統(tǒng)中的一切原始數據不但都被組織起來了,而且能完全派生出系統(tǒng)中的一切輸出數據。面向元數據設計,就是利用需求分析獲得的元數據,采用面向元數據的CASE工具,設計出信息系統(tǒng)的概念數據模型CDM(ConceptualDataModel)和物理數據模型PDM(PhysicsDataModel),以及從原始數據到輸出數據的所有算法與視圖。面向元數據需求分析,就是在需求分析時,找出信息系統(tǒng)所有的元數100面向元數據編程,就是在物理數據模型PDM的基礎上,根據信息系統(tǒng)的功能、性能、接口和業(yè)務規(guī)則,建立數據庫表和視圖,再利用數據庫編程語言,編寫出存儲過程和觸發(fā)器。面向元數據測試,就是對數據庫表初始化并加載之后,運行相關的存儲過程和觸發(fā)器,測試信息系統(tǒng)的各種功能需求與性能指標。面向元數據維護,就是對數據庫表中的記錄進行統(tǒng)計、分析、審計、復制、備份、恢復,甚至對表結構及視圖結構,也可以進行必要的調整。面向元數據編程,就是在物理數據模型PDM的基礎上,根據信息系101面向元數據方法的缺點是:只能實現(xiàn)二維表格,不能實現(xiàn)窗口界面。面向元數據方法,與關系數據庫管理系統(tǒng)緊密地捆綁在一起,只要面向對象數據庫不能完全替代關系數據庫,這種方法就不會終結。目前數據庫管理系統(tǒng)的發(fā)展趨勢是:在關系型數據庫的基礎上,將面向對象的某些特性(如繼承)添加上去,稱為“對象-關系型數據庫”,但本質上仍然是一個關系型數據庫。面向元數據方法的缺點是:只能實現(xiàn)二維表格,不能實現(xiàn)窗口界面。1024.形式化方法

軟件工程的形式化方法(Formalizedmethod),是建立在嚴格數學基礎上、以邏輯推理為出發(fā)點、并且具有精確數學語義的開發(fā)方法。形式化方法在IT企業(yè)很少使用,在此也不進一步介紹。4.形式化方法軟件工程的形式化方法(Formalized1035.各種方法之間的關系

到目前為止,軟件工程的基本方法,包涵面向過程方法、面向對象方法、面向元數據方法和形式化方法。至于面向業(yè)務基礎平臺方法,它只是面向元數據方法與面向對象方法的具體應用案例,不能單獨作為一種基本方法。5.各種方法之間的關系到目前為止,軟件工程的基本方法,包涵104在大型多層(B/A/S)結構的信息系統(tǒng)建設中,這四種方法的關系是:面向元數據方法用在數據庫服務器S層面上系統(tǒng)的分析、設計與實現(xiàn),面向對象方法用在除數據庫服務器層面之外的其他層面上(B/A)系統(tǒng)的分析、設計與實現(xiàn),面向過程方法用在其他兩種方法本身內部函數的分析、設計與實現(xiàn),形式化方法用在某些核心程序的正確性證明上。面向過程方法、面向對象方法、面向元數據方法和形式化方法,它們各有優(yōu)缺點,適合于不同的場合。四種方法的比較,如表1-3所示。在大型多層(B/A/S)結構的信息系統(tǒng)建設中,這四種方法的關105方法名稱優(yōu)點缺點適合的場合面向過程方法簡單好學不適應窗口界面,維護困難大型工程計算,實時數據跟蹤處理,各種自動化控制系統(tǒng),以及系統(tǒng)軟件實現(xiàn)等領域,以及過程、方法與函數的計算面向對象方法功能強大,易于維護不易掌握互聯(lián)網絡時代,完全由用戶交互控制程序執(zhí)行過程的應用軟件和系統(tǒng)軟件的開發(fā),例如,在B/S結構中數據層之外的其它各層的需求、設計與實現(xiàn)面向元數據方法通俗易懂不適應窗口界面以關系數據庫管理系統(tǒng)為支撐平臺的信息系統(tǒng)建設,例如,B/S結構中數據層的需求、設計與實現(xiàn)形式化方法準確、嚴謹難于上手和應用對安全性要求極高,不容許出錯的軟件系統(tǒng),如軍事、醫(yī)藥、交通等領域方法名稱優(yōu)點缺點適合的場合面向過程方1061.3三個模型與三層結構

在信息系統(tǒng)的需求與設計中,一般需要建立三個模型,即功能模型、業(yè)務模型和數據模型,分別對應B/A/S三層體系結構中的三個不同層次,即瀏覽層、中間層和數據層,如圖1-2所示。其中:功能模型主要表現(xiàn)在瀏覽層;業(yè)務模型對應中間層,即業(yè)務邏輯層,功能模型中的功能,基本上都在業(yè)務模型中加以具體實現(xiàn);數據模型對應數據層,實現(xiàn)持久型數據的存儲與運算。

1.3三個模型與三層結構在信息系統(tǒng)的需求與設計中,一般需107軟件工程實踐教程第1章1081.三個模型

(1).功能模型功能模型實質上是用戶需求模型,是描述系統(tǒng)能做什么,即對系統(tǒng)的功能、性能、接口和界面進行定義。功能模型在需求分析時的表示方法為:系統(tǒng)功能需求列表、性能需求列表、接口需求列表、界面需求列表。統(tǒng)一建模語言UML,主要采用“用例圖”來描述功能模型。功能模型既是動態(tài)的,又是靜態(tài)的。1.三個模型(1).功能模型109(2).業(yè)務模型

業(yè)務模型實質上是業(yè)務邏輯模型,是描述系統(tǒng)在何時、何地、由何角色、按什么業(yè)務規(guī)則去做,以及做的步驟或流程,即對系統(tǒng)的操作流程進行定義。業(yè)務流程圖也可以用業(yè)務操作步驟來描述,還可以用類似于程序流程圖的圖形來表達。在UML中,完整的業(yè)務模型由用例圖、時序圖、交互圖、狀態(tài)圖、活動圖來表述。業(yè)務模型是動態(tài)的,所以有時稱業(yè)務模型為動態(tài)模型或操作模型。(2).業(yè)務模型業(yè)務模型實質上是業(yè)務邏輯模型,是描述系統(tǒng)110(3).數據模型

數據模型實質上是實體或類的狀態(tài)關系模型,是描述系統(tǒng)工作前的數據來自何處,工作中的數據暫存什么地方,工作后的數據放到何處,以及這些數據的狀態(tài)及互相之間的關聯(lián),即對系統(tǒng)的數據結構進行定義。數據模型反映了系統(tǒng)的數據關系,它是實體或類的狀態(tài)設計依據。(3).數據模型數據模型實質上是實體或類的狀態(tài)關系模型,111數據模型有類模型和數據庫關系模型。其中類模型用于用戶界面層和中間層的數據建模,數據庫關系模型用于持久層數據建模。信息系統(tǒng)中的數據模型,是指它的E-R圖及其相應的數據字典。這里的數據字典,包括實體字典、屬性字典、關系字典。在數據庫CASE工具幫助下,可以查閱、顯示、修改、打印、保存數據字典。數據模型有類模型和數據庫關系模型。其中類模型用于用戶界面層和112信息系統(tǒng)中的數據模型分為概念數據模型CDM和物理數據模型PDM兩個層次。CDM就是數據庫的邏輯設計,即E-R圖。PDM就是數據庫的物理設計,即物理表。有了CASE工具后,從CDM就可以自動轉換為PDM,而且還可以自動獲得主鍵索引、觸發(fā)器等等。數據模型設計是企業(yè)信息系統(tǒng)設計的中心環(huán)節(jié),數據模型建設是企業(yè)信息系統(tǒng)建設的基石,設計者與建設者萬萬不可粗心大意。這里要特別強調:數據模型要在程序設計之前完成設計,要用數據模型指導程序設計,絕對不允許用程序設計來指導數據模型設計!

信息系統(tǒng)中的數據模型分為概念數據模型CDM和物理數據模型PD113數據模型本身是靜態(tài)的,但是在設計者心目中,應該盡量將它由靜態(tài)變成動態(tài)。設計者可以想象數據(或記錄)在相關表上的流動過程,即增加、刪除、修改、傳輸與處理等,從而在腦海中運行系統(tǒng),或在E-R圖上運行系統(tǒng)。數據模型本身是靜態(tài)的,但是在設計者心目中,應該盡量將它由靜態(tài)1142.三層體系結構

所謂的三層結構,就是在原來兩層結構(Client/Server)的客戶層與數據層之間,加入了一個中間層(也叫業(yè)務層),并將應用程序的業(yè)務規(guī)則、數據訪問、合法性校驗等工作放到了中間層進行處理,這樣就變成了三層結構(Browser/Server)。這里所說的三層,不一定是指物理上的三層,不是簡單地放置三臺機器就是三層結構,也不僅僅有B/S應用才是三層結構,三層是指邏輯上的三層,即使這三個層都放置到一臺機器上。當然,三層也可以放在兩臺或三臺機器上。2.三層體系結構所謂的三層結構,就是在原來兩層結構(Cli115表示層(PresentationTier)表示層采用圖形化用戶界面,在客戶端的PC機或工作站上運行。系統(tǒng)內部支持表示層的模型是“功能模型”,盡管“功能模型”中的功能實現(xiàn)組件都存放在業(yè)務層上。表示層的主要功能是:(1).接受用戶的請求,將這些請求反饋給業(yè)務邏輯層,等待業(yè)務邏輯層的回答信息;(2).對業(yè)務邏輯層的回答信息,進行顯示;(3).有時也會兼做業(yè)務邏輯層的一些小功能,比如對用戶輸入數據的驗證,以及操作合法性的檢驗。表示層(PresentationTier)表示層采用圖形116中間層(BusinessTier)中間層也稱業(yè)務層,由許多構件或組件組成,這些構件或組件體現(xiàn)了用戶的業(yè)務邏輯或業(yè)務規(guī)則,系統(tǒng)內部支持業(yè)務層的模型是“業(yè)務模型”。業(yè)務層的主要功能是:(1).接受從表現(xiàn)層傳來的用戶請求信息;(2).根據用戶的請求信息生成SQL語句;(3).利用生成的SQL語句從數據層取數據、或修改數據、或刪除數據;(4).將結果返回給表現(xiàn)層。中間層(BusinessTier)中間層也稱業(yè)務層,由許117數據層(DataTier)數據層是數據庫服務器上的數據庫,它包括數據庫管理系統(tǒng)DBMS和數據庫DB兩部分,系統(tǒng)內部支持數據層的模型是“數據模型”。該層的主要功能是:(1).接受業(yè)務層數據處理請求的SQL語句或存儲過程;(2).利用SQL語句或存儲過程,對數據庫服務器上數據庫的相關表進行存儲或檢索;(3).將存儲或檢索的結果信息,傳遞給業(yè)務層。數據層(DataTier)數據層是數據庫服務器上的數據庫118三層協(xié)調工作

三層之間,通過各自提供的接口來訪問。用戶想登錄并操作系統(tǒng),在表示層輸入用戶名和密碼,表示層會收集相關的數據傳遞給業(yè)務層,業(yè)務層將數據經過一些處理和封裝之后,再傳遞給數據層,數據層執(zhí)行數據庫查詢操作,并將結果返回業(yè)務層,業(yè)務層再返回表示層,表示層再顯示給用戶看。對登錄信息和操作信息,都是這么分層處理、協(xié)調工作的。業(yè)務層與數據層的信息交換采取批發(fā)方式,業(yè)務層與表示層的信息交換采取零售方式。三層協(xié)調工作三層之間,通過各自提供的接口來訪問。119三層結構優(yōu)點

(1).三層之間的低耦合,所以互不干擾,哪一層出了問題就去找哪一層去解決。(2).三層結構減少了客戶機的工作量,提高了網絡系統(tǒng)的運行效率;(3).三層結構有利于系統(tǒng)的維護和升級,各個層的維護,互不影響。三層結構優(yōu)點(1).三層之間的低耦合,所以互不干擾,哪一層1201.4軟件開發(fā)全過程

軟件開發(fā)過程,一般由立項、需求、設計、編程、測試、運行與維護這幾個階段組成。下面對每個階段的內容進行介紹。1.4軟件開發(fā)全過程軟件開發(fā)過程,一般由立項、需求、設計1211.可行性研究與軟件立項

在可行性研究階段內,要分析該軟件項目立項的必要性(有市場前景)與可能性(我們能夠做好),開發(fā)目標和總體要求,以及項目的總體功能、性能、接口與界面,當前用戶與潛在用戶,投資/收益分析與風險分析,并完成立項報告。當立項報告經評審通過后,才能正式立項??尚行匝芯渴橇㈨椀那疤?,立項是可行性研究的結果。1.可行性研究與軟件立項在可行性研究階段內,要分析該軟件1222.軟件需求分析

需求分析是面向流程的,而流程是動態(tài)的、實時的。系統(tǒng)的功能、性能、接口、界面都是在流程中動態(tài)實時地反映出來。在所有的流程(物流、人流、資金流、信息流、單據流、報表流、數據流)中,數據流最重要,也最有代表性。面向流程分析本質上是面向數據流程分析。

2.軟件需求分析需求分析是面向流程的,而流程是動態(tài)的、實123需求分析的思路,是從用戶的功能需求(系統(tǒng)需要做什么)出發(fā),由系統(tǒng)的業(yè)務流程和數據流程導出系統(tǒng)的業(yè)務模型和功能模型,識別出系統(tǒng)的元數據和中間數據,為今后設計數據模型做好充分準備。對系統(tǒng)的軟、硬件環(huán)境配置、開發(fā)工期、費用、開發(fā)進度、培訓、系統(tǒng)風險進行深入評估。需求分析的思路,是從用戶的功能需求(系統(tǒng)需要做什么)出發(fā),由124需求分析要產生《用戶需求報告》文檔。該文檔是用戶和開發(fā)者雙方,對該軟件系統(tǒng)的功能規(guī)定與性能規(guī)定的共同理解,使之成為整個開發(fā)工作的基礎。《用戶需求報告》主要內容包括該軟件的功能、性能、接口、界面及數據要求說明等。該文檔完成后,要經過適當地評審,評審通過后,雙方要簽字確認,形成第一個里程碑?!队脩粜枨髨蟾妗肺臋n完成后,就要產生《需求分析規(guī)格說明書》,為概要設計做好充分準備,同時還要考慮內部測試計劃、用戶驗收計劃、測試用例設計和用戶操作手冊設計。需求分析要產生《用戶需求報告》文檔。該文檔是用戶和開發(fā)者雙方1253.軟件設計

概要設計(架構設計)是面向模塊的,其主要目的,將軟件系統(tǒng)分解為多個子系統(tǒng),再將子系統(tǒng)分解為多個模塊或部件,并將系統(tǒng)所有的功能,合理地分配到模塊或部件中去?!陡乓O計說明書》文檔主要內容為:軟件系統(tǒng)架構設計、運行環(huán)境設計、模塊劃分、模塊功能分配、數據庫與數據結構設計、接口設計。編制的目的是為詳細設計提供基礎。3.軟件設計概要設計(架構設計)是面向模塊的,其主要目的126詳細設計是面向程序的,它的主要目的,將軟件系統(tǒng)的模塊或部件分解成類,建立類與類之間的關系,并設計類的行為,用以指導程序人員編寫代碼?!对敿氃O計說明書》文檔主要內容為:公用模塊設計、專用模塊設計、存儲過程與觸發(fā)器設計、接口設計、界面設計。對于簡單或熟悉的系統(tǒng),概要設計和詳細設計可以合二而一,形成一份文檔(稱為設計說明書),進行一次評審,實現(xiàn)一個里程碑,確立一條基線。對于復雜或生疏的系統(tǒng),概要設計和詳細設計必須分開,形成兩份文檔,進行兩次評審,實現(xiàn)兩個里程碑,確立兩條基線。詳細設計是面向程序的,它的主要目的,將軟件系統(tǒng)的模塊或部件分127在設計之前,首先要確定系統(tǒng)命名規(guī)范,模塊命名規(guī)范,構件命名規(guī)范,變量命名規(guī)范,以及數據庫中的表名、字段名、索引名、視圖名、存儲過程名、觸發(fā)器的命名規(guī)范等。軟件設計時,一方面要善于將需求分析規(guī)格說明書中的冗余去掉,將公用功能提煉出來,并將它設計為構件,標準化后加入到公司構件庫中,由構件庫管理,作為公共資源。另一方面,還要盡量調用公司構件庫中已有的構件。構件的實現(xiàn)和調用是一個面向對象的編程技術問題。在設計之前,首先要確定系統(tǒng)命名規(guī)范,模塊命名規(guī)范,構件命名規(guī)1284.軟件實現(xiàn)(編程)

微觀上講,軟件實現(xiàn)是指通過編碼、調試、單元測試、集成測試等活動創(chuàng)建軟件產品的過程。軟件實現(xiàn)與軟件設計、軟件測試密不可分。軟件設計為軟件實現(xiàn)提供輸入,軟件實現(xiàn)的輸出是軟件測試的輸入。盡管軟件設計和軟件測試是獨立的過程,但軟件實現(xiàn)本身也涉及到設計和測試工作,它們之間的界限視具體項目而定。軟件實現(xiàn)還會產生大量的軟件配置項,例如,源文件、測試用例等,因此軟件實現(xiàn)過程還涉及配置管理。4.軟件實現(xiàn)(編程)微觀上講,軟件實現(xiàn)是指通過編碼、調試129軟件實現(xiàn)環(huán)境,目前主要是.Net和J2EE。軟件實現(xiàn)原則,通常有如下幾條:(1)盡量簡單。在軟件實現(xiàn)過程中,應創(chuàng)建簡單、易讀的代碼。相同功能的代碼只寫一次。(2)易于驗證。無論是在編碼、測試還是實際操作中,軟件工程師應很容易地發(fā)現(xiàn)其中的錯誤。自動化的單元測試可幫助產生易于驗證的代碼。寫代碼時,要限制使用復雜的難以理解的語言結構。軟件實現(xiàn)環(huán)境,目前主要是.Net和J2EE。130(3)適應變化。外部環(huán)境、軟件需求和軟件設計,在整個開發(fā)過程中可能會隨時變化,因此,要求軟件實現(xiàn)時考慮適應這些變化。(4)遵守編程規(guī)范。(5)選擇最熟悉的工具或語言。軟件實現(xiàn)工具或語言,不是越時髦越好,而是越成熟與越熟練越好,這樣可以避免技術風險和技能風險。(6)在實現(xiàn)過程中完善《用戶操作手冊》。(3)適應變化。外部環(huán)境、軟件需求和軟件設計,在整個開發(fā)過1315.軟件測試

在IT企業(yè),通常以黑盒測試為主,以白盒測試為輔,比較適用的是黑加白的“灰盒測試”。黑盒測試是面向功能的測試,也稱為不透明盒測試,它給我們更多啟示是它的思考方式,即不考慮(主觀上屏蔽)或者不需要(客觀條件限制)知道被測對象的內部實現(xiàn)細節(jié),只關心輸入和輸出。理論講上,只有把所有可能的行為都作為測試用例(TestCase)輸入,就能完成黑盒測試工作。黑盒測試的對象可以是軟件單元、軟件模塊、軟件組件、軟件子系統(tǒng)和軟件系統(tǒng)。

5.軟件測試在IT企業(yè),通常以黑盒測試為主,以白盒測試為132在用黑盒測試方法測試系統(tǒng)的功能模型時,重點是要設計黑盒測試用例,包括輸入條件和預期輸出結果。在實際項目測試中,由于時間和資源的限制,黑盒測試工作要用盡可能少的測試用例,測試出盡可能多的軟件需求。在提煉測試需求后,再采用黑盒測試方法設計測試用例。如何將軟件需求轉換到測試需求,再將測試需求轉換到測試用例?轉換的一般原則是:每一項用戶需求都應該分解為多個測試需求,每個測試需求都應該設計出多個測試用例。這種分解或轉換關系,如圖1-2所示。在用黑盒測試方法測試系統(tǒng)的功能模型時,重點是要設計黑盒測試用133軟件需求(用戶需求)測試需求測試用例軟件需求測試需求測試用例134白盒測試是面向程序執(zhí)行路徑的測試,測定依據是《詳細設計說明書》。理論上講,面向程序執(zhí)行路徑要進行窮舉代碼測試,直至覆蓋所有路徑為止。白盒測試的測試對象,側重于軟件單元、模塊和構件等小規(guī)模對象,不適合大

溫馨提示

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

評論

0/150

提交評論