UML方法在軟件工程中的應(yīng)用預(yù)案_第1頁(yè)
UML方法在軟件工程中的應(yīng)用預(yù)案_第2頁(yè)
UML方法在軟件工程中的應(yīng)用預(yù)案_第3頁(yè)
UML方法在軟件工程中的應(yīng)用預(yù)案_第4頁(yè)
UML方法在軟件工程中的應(yīng)用預(yù)案_第5頁(yè)
已閱讀5頁(yè),還剩102頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

UML方法在軟件工程中的應(yīng)用預(yù)案一、UML方法概述

UML(統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)化的圖形建模語(yǔ)言,用于描述、可視化、構(gòu)建和文檔化軟件密集型系統(tǒng)的產(chǎn)物。在軟件工程中,UML被廣泛應(yīng)用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)階段,幫助開(kāi)發(fā)團(tuán)隊(duì)更好地理解和溝通項(xiàng)目需求,提高開(kāi)發(fā)效率和系統(tǒng)質(zhì)量。

(一)UML的基本組成

1.圖形符號(hào):UML使用一系列標(biāo)準(zhǔn)的圖形符號(hào)來(lái)表示不同的系統(tǒng)元素,如類(lèi)、接口、用例、對(duì)象、關(guān)系等。

2.建模規(guī)則:UML提供了一套嚴(yán)格的建模規(guī)則,確保模型的一致性和可擴(kuò)展性。

3.規(guī)范:UML規(guī)范定義了語(yǔ)言的各種元素和表示方法,確保不同工具和開(kāi)發(fā)人員之間的模型一致性。

(二)UML的主要用途

1.系統(tǒng)分析:通過(guò)UML用例圖和活動(dòng)圖,分析系統(tǒng)需求,明確系統(tǒng)功能和用戶(hù)交互。

2.系統(tǒng)設(shè)計(jì):使用UML類(lèi)圖、對(duì)象圖和組件圖等,設(shè)計(jì)系統(tǒng)架構(gòu)和模塊劃分。

3.系統(tǒng)實(shí)現(xiàn):根據(jù)UML設(shè)計(jì)圖,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能,確保代碼與設(shè)計(jì)一致。

4.系統(tǒng)測(cè)試:利用UML序列圖和協(xié)作圖,模擬系統(tǒng)交互過(guò)程,設(shè)計(jì)測(cè)試用例,提高測(cè)試覆蓋率。

二、UML在軟件工程中的應(yīng)用預(yù)案

(一)需求分析階段

1.創(chuàng)建用例圖:根據(jù)項(xiàng)目需求,識(shí)別系統(tǒng)參與者(Actor)和用例(UseCase),繪制用例圖。

(1)確定系統(tǒng)邊界:明確系統(tǒng)與外部環(huán)境的交互點(diǎn)。

(2)識(shí)別用例:列出系統(tǒng)提供的功能。

(3)定義參與者:列出與系統(tǒng)交互的用戶(hù)或系統(tǒng)。

2.編寫(xiě)用例描述:為每個(gè)用例編寫(xiě)詳細(xì)描述,包括用例名稱(chēng)、參與者、前置條件、基本流程、異常流程等。

3.繪制活動(dòng)圖:根據(jù)用例描述,繪制活動(dòng)圖,展示用例的執(zhí)行流程和系統(tǒng)響應(yīng)。

(二)系統(tǒng)設(shè)計(jì)階段

1.創(chuàng)建類(lèi)圖:根據(jù)用例描述和系統(tǒng)功能,識(shí)別系統(tǒng)中的類(lèi)(Class)及其關(guān)系,繪制類(lèi)圖。

(1)識(shí)別類(lèi):列出系統(tǒng)中的實(shí)體和屬性。

(2)定義關(guān)系:確定類(lèi)之間的關(guān)聯(lián)、依賴(lài)、繼承和聚合關(guān)系。

(3)設(shè)計(jì)方法:為每個(gè)類(lèi)定義方法,描述類(lèi)的行為。

2.繪制對(duì)象圖:根據(jù)類(lèi)圖,創(chuàng)建對(duì)象圖,展示系統(tǒng)在某個(gè)時(shí)刻的狀態(tài)和對(duì)象之間的關(guān)系。

3.繪制組件圖:根據(jù)類(lèi)圖和對(duì)象圖,繪制組件圖,展示系統(tǒng)中的組件及其依賴(lài)關(guān)系。

(三)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成:根據(jù)類(lèi)圖和組件圖,生成代碼框架,提高開(kāi)發(fā)效率。

2.代碼實(shí)現(xiàn):根據(jù)類(lèi)圖中的方法定義,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能。

3.代碼調(diào)試:利用UML序列圖和協(xié)作圖,模擬系統(tǒng)交互過(guò)程,調(diào)試代碼,確保功能正確。

(四)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖:根據(jù)用例描述和類(lèi)圖,繪制序列圖,展示對(duì)象之間的交互順序。

(1)確定對(duì)象:列出參與交互的對(duì)象。

(2)定義消息:確定對(duì)象之間的消息傳遞順序。

(3)設(shè)計(jì)分支和循環(huán):處理異常情況和重復(fù)交互。

2.創(chuàng)建協(xié)作圖:根據(jù)序列圖,繪制協(xié)作圖,展示對(duì)象之間的交互關(guān)系。

3.設(shè)計(jì)測(cè)試用例:根據(jù)序列圖和協(xié)作圖,設(shè)計(jì)測(cè)試用例,覆蓋所有交互路徑和異常情況。

三、UML應(yīng)用案例分析

(一)案例背景

某企業(yè)需要開(kāi)發(fā)一套在線(xiàn)訂票系統(tǒng),實(shí)現(xiàn)用戶(hù)在線(xiàn)購(gòu)買(mǎi)火車(chē)票、飛機(jī)票和酒店預(yù)訂功能。

(二)需求分析

1.創(chuàng)建用例圖:識(shí)別參與者(用戶(hù)、管理員)和用例(訂票、改簽、退款、查詢(xún)、管理)。

2.編寫(xiě)用例描述:詳細(xì)描述每個(gè)用例的流程和系統(tǒng)響應(yīng)。

3.繪制活動(dòng)圖:展示訂票、改簽、退款等核心用例的執(zhí)行流程。

(三)系統(tǒng)設(shè)計(jì)

1.創(chuàng)建類(lèi)圖:識(shí)別系統(tǒng)中的類(lèi)(用戶(hù)、訂單、支付、票務(wù)等)及其關(guān)系。

2.繪制對(duì)象圖:展示系統(tǒng)在用戶(hù)訂票時(shí)的狀態(tài)和對(duì)象之間的關(guān)系。

3.繪制組件圖:展示系統(tǒng)中的組件(用戶(hù)界面、業(yè)務(wù)邏輯、數(shù)據(jù)訪(fǎng)問(wèn)等)及其依賴(lài)關(guān)系。

(四)系統(tǒng)實(shí)現(xiàn)

1.代碼生成:根據(jù)類(lèi)圖和組件圖,生成代碼框架。

2.代碼實(shí)現(xiàn):根據(jù)類(lèi)圖中的方法定義,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能。

3.代碼調(diào)試:利用序列圖和協(xié)作圖,調(diào)試代碼,確保功能正確。

(五)系統(tǒng)測(cè)試

1.創(chuàng)建序列圖:展示用戶(hù)訂票、改簽、退款等核心用例的交互順序。

2.創(chuàng)建協(xié)作圖:展示對(duì)象之間的交互關(guān)系。

3.設(shè)計(jì)測(cè)試用例:覆蓋所有交互路徑和異常情況,確保系統(tǒng)功能正確。

一、UML方法概述

UML(統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)化的圖形建模語(yǔ)言,用于描述、可視化、構(gòu)建和文檔化軟件密集型系統(tǒng)的產(chǎn)物。在軟件工程中,UML被廣泛應(yīng)用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)階段,幫助開(kāi)發(fā)團(tuán)隊(duì)更好地理解和溝通項(xiàng)目需求,提高開(kāi)發(fā)效率和系統(tǒng)質(zhì)量。

(一)UML的基本組成

1.圖形符號(hào):UML使用一系列標(biāo)準(zhǔn)的圖形符號(hào)來(lái)表示不同的系統(tǒng)元素,這些符號(hào)具有統(tǒng)一的視覺(jué)風(fēng)格,便于理解和交流。

核心元素符號(hào):

類(lèi)(Class):通常用矩形表示,內(nèi)部可劃分區(qū)域表示名稱(chēng)、屬性(Attribute)和方法(Operation)。

接口(Interface):通常用矩形表示,頂部標(biāo)有“<<interface>>”或直接使用預(yù)定義的接口圖標(biāo)。

用例(UseCase):通常用橢圓形表示。

對(duì)象(Object):類(lèi)圖中的具體實(shí)例,用矩形表示,頂部標(biāo)有對(duì)象名和類(lèi)名。

組件(Component):通常用矩形表示,頂部標(biāo)有“<<component>>”。

節(jié)點(diǎn)(Node):表示運(yùn)行環(huán)境的物理實(shí)體,如服務(wù)器、工作站,通常用立方體表示。

aktor(Actor):與系統(tǒng)交互的外部實(shí)體,通常用小人圖標(biāo)表示。

關(guān)系符號(hào):

關(guān)聯(lián)(Association):用實(shí)線(xiàn)表示,可能帶有箭頭(表示方向)或基數(shù)(表示數(shù)量關(guān)系,如1,表示一對(duì)多)。

依賴(lài)(Dependency):用虛線(xiàn)帶箭頭表示,表示一方依賴(lài)另一方,但依賴(lài)性較弱。

泛化(Generalization):用實(shí)線(xiàn)帶空心箭頭表示,表示繼承或分類(lèi)關(guān)系。

實(shí)現(xiàn)(Realization):用虛線(xiàn)帶空心箭頭表示,表示接口被實(shí)現(xiàn)。

聚合(Aggregation):用實(shí)線(xiàn)帶空心菱形表示,表示整體與部分的關(guān)系,部分可以獨(dú)立于整體存在。

組合(Composition):用實(shí)線(xiàn)帶實(shí)心菱形表示,表示整體與部分的關(guān)系,部分不能獨(dú)立于整體存在。

2.建模規(guī)則:UML提供了一套嚴(yán)格的建模規(guī)則,確保模型的一致性、可追溯性和可擴(kuò)展性。這些規(guī)則涵蓋了命名規(guī)范、圖示約定、關(guān)系約束等方面。例如,類(lèi)名通常使用名詞或名詞短語(yǔ),方法名使用動(dòng)詞或動(dòng)詞短語(yǔ),屬性和方法的可見(jiàn)性(public,protected,private)通常通過(guò)帶下劃線(xiàn)的加號(hào)、星號(hào)或減號(hào)來(lái)表示。

3.規(guī)范:UML規(guī)范定義了語(yǔ)言的各種元素、圖示符號(hào)、關(guān)鍵字、建模規(guī)則以及不同圖之間的聯(lián)系,確保不同工具和開(kāi)發(fā)人員之間可以創(chuàng)建和理解一致的UML模型。UML規(guī)范由ObjectManagementGroup(OMG)維護(hù)和發(fā)布。

(二)UML的主要用途

1.系統(tǒng)分析階段:UML在此階段主要用于捕獲和表達(dá)系統(tǒng)需求,幫助分析師和用戶(hù)理解系統(tǒng)邊界、功能需求和非功能需求。

用例圖(UseCaseDiagram):用于識(shí)別系統(tǒng)的外部參與者(Actors)以及他們與系統(tǒng)交互的用例(UseCases),明確系統(tǒng)的范圍和主要功能。繪制步驟包括:識(shí)別參與者、識(shí)別用例、定義用例之間的關(guān)系(包含、擴(kuò)展、泛化)、繪制系統(tǒng)邊界。

活動(dòng)圖(ActivityDiagram):用于描述系統(tǒng)中的業(yè)務(wù)流程或操作流程,展示活動(dòng)的順序、分支、并發(fā)和匯合。繪制步驟包括:定義起點(diǎn)和終點(diǎn)、識(shí)別主要活動(dòng)、確定活動(dòng)間的控制流(順序流、分支流、并發(fā)流)、添加對(duì)象流。

2.系統(tǒng)設(shè)計(jì)階段:UML在此階段用于設(shè)計(jì)系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為,定義系統(tǒng)的架構(gòu)和組件。

類(lèi)圖(ClassDiagram):用于描述系統(tǒng)的靜態(tài)結(jié)構(gòu),展示系統(tǒng)中的類(lèi)、接口、關(guān)系以及它們的屬性和方法。繪制步驟包括:識(shí)別核心類(lèi)、定義類(lèi)的屬性和方法、確定類(lèi)之間的關(guān)系(關(guān)聯(lián)、依賴(lài)、泛化、實(shí)現(xiàn)、聚合、組合)、添加包(Package)組織元素。

對(duì)象圖(ObjectDiagram):類(lèi)圖的具體實(shí)例化,展示特定時(shí)刻系統(tǒng)中的對(duì)象及其關(guān)系,有助于理解類(lèi)圖中的抽象關(guān)系在實(shí)際場(chǎng)景中的應(yīng)用。

組件圖(ComponentDiagram):用于描述系統(tǒng)的物理結(jié)構(gòu),展示系統(tǒng)由哪些組件構(gòu)成以及組件之間的依賴(lài)關(guān)系。繪制步驟包括:識(shí)別系統(tǒng)組件、定義組件接口、確定組件之間的依賴(lài)關(guān)系。

順序圖(SequenceDiagram):用于描述對(duì)象之間交互的時(shí)間順序,特別適合展示用例或操作中對(duì)象間的消息傳遞流程。繪制步驟包括:確定參與者對(duì)象、排列對(duì)象生命線(xiàn)、按時(shí)間順序添加消息、添加異步消息、控制流說(shuō)明(如自消息、分支)。

3.系統(tǒng)實(shí)現(xiàn)階段:UML在此階段輔助代碼編寫(xiě),確保設(shè)計(jì)意圖在代碼中得到體現(xiàn),并用于生成部分代碼或作為代碼的參考。

類(lèi)圖到代碼:類(lèi)圖中的類(lèi)、屬性和方法直接映射到編程語(yǔ)言中的類(lèi)、字段和函數(shù)。

順序圖到代碼:順序圖中的消息調(diào)用對(duì)應(yīng)代碼中的函數(shù)調(diào)用。

4.系統(tǒng)測(cè)試階段:UML在此階段用于設(shè)計(jì)測(cè)試用例和規(guī)劃測(cè)試過(guò)程,確保系統(tǒng)滿(mǎn)足設(shè)計(jì)要求。

順序圖和協(xié)作圖(CommunicationDiagram):用于詳細(xì)說(shuō)明對(duì)象間的交互細(xì)節(jié),幫助設(shè)計(jì)測(cè)試場(chǎng)景,驗(yàn)證對(duì)象間的消息傳遞和響應(yīng)是否符合預(yù)期。

狀態(tài)機(jī)圖(StateMachineDiagram):用于描述對(duì)象或系統(tǒng)的狀態(tài)變化以及觸發(fā)狀態(tài)轉(zhuǎn)換的事件,可用于設(shè)計(jì)針對(duì)狀態(tài)轉(zhuǎn)換的測(cè)試用例。

活動(dòng)圖:可用于設(shè)計(jì)覆蓋活動(dòng)圖所有路徑的測(cè)試用例,確保業(yè)務(wù)流程的完整性。

二、UML在軟件工程中的應(yīng)用預(yù)案

(一)需求分析階段

1.創(chuàng)建用例圖:根據(jù)項(xiàng)目需求,識(shí)別系統(tǒng)參與者(Actor)和用例(UseCase),繪制用例圖。

(1)確定系統(tǒng)邊界:與項(xiàng)目干系人(Stakeholders)溝通,明確哪些是系統(tǒng)的一部分,哪些是外部環(huán)境。系統(tǒng)邊界通常用矩形框出,框內(nèi)是系統(tǒng),框外是參與者或外部系統(tǒng)。繪制時(shí),先畫(huà)出系統(tǒng)邊界,再識(shí)別參與者。

(2)識(shí)別用例:通過(guò)訪(fǎng)談、需求文檔分析等方式,列出系統(tǒng)需要提供的所有功能。每個(gè)用例描述了系統(tǒng)為參與者提供的一種價(jià)值。用例名稱(chēng)應(yīng)清晰、簡(jiǎn)潔地反映其功能,例如“查詢(xún)航班”、“預(yù)訂酒店房間”。

(3)定義參與者:識(shí)別與系統(tǒng)交互的外部實(shí)體。參與者可以是人類(lèi)用戶(hù)(如管理員、普通客戶(hù)),也可以是其他系統(tǒng)(如支付系統(tǒng)、消息通知系統(tǒng))。為每個(gè)參與者命名,并說(shuō)明其與系統(tǒng)的交互方式(如通過(guò)Web界面、API調(diào)用等)。

(4)繪制用例圖:將參與者放置在系統(tǒng)邊界外,用例放置在邊界內(nèi),用帶箭頭的實(shí)線(xiàn)連接參與者和用例,箭頭指向用例,表示參與者執(zhí)行該用例。如有必要,使用關(guān)聯(lián)(Association)連接用例,表示共同參與或包含關(guān)系;使用依賴(lài)(Dependency)表示用例間的泛化或擴(kuò)展關(guān)系。

2.編寫(xiě)用例描述:為每個(gè)重要的用例編寫(xiě)詳細(xì)的描述文檔,通常包括:

用例名稱(chēng):清晰標(biāo)識(shí)用例。

參與者:執(zhí)行該用例的Actor。

前置條件:執(zhí)行該用例前必須滿(mǎn)足的條件。

基本流程(HappyPath):參與者順利執(zhí)行用例成功完成所需的所有步驟。

異常流程(Alternative/ExceptionPaths):在執(zhí)行過(guò)程中可能遇到的錯(cuò)誤、中斷或特殊情況,以及系統(tǒng)應(yīng)如何響應(yīng)。

后置條件:用例執(zhí)行完成后的系統(tǒng)狀態(tài)。

優(yōu)先級(jí):標(biāo)記用例的重要程度。

3.繪制活動(dòng)圖:根據(jù)用例描述和系統(tǒng)功能,繪制活動(dòng)圖,展示用例的執(zhí)行流程和系統(tǒng)響應(yīng)。

(1)定義起點(diǎn)和終點(diǎn):活動(dòng)圖通常有一個(gè)唯一的起點(diǎn)(一個(gè)空的圓圈)和一個(gè)或多個(gè)終點(diǎn)(一個(gè)圓內(nèi)包含一個(gè)實(shí)心圓)。

(2)識(shí)別主要活動(dòng):將用例描述中的主要步驟或操作轉(zhuǎn)化為活動(dòng)圖中的活動(dòng)節(jié)點(diǎn)(橢圓形)。

(3)確定活動(dòng)間的控制流:使用實(shí)線(xiàn)箭頭表示活動(dòng)之間的順序流。如果有條件判斷,使用菱形表示決策節(jié)點(diǎn),并標(biāo)明條件;使用分支流(分叉和匯合)表示并發(fā)或順序的選擇。

(4)添加對(duì)象流:如果活動(dòng)涉及對(duì)象的創(chuàng)建、修改或刪除,使用虛線(xiàn)箭頭表示對(duì)象流,并在箭頭旁注明對(duì)象名稱(chēng)。

(5)標(biāo)注并發(fā)和同步:使用分叉(fork)和匯合(join)節(jié)點(diǎn)表示活動(dòng)的并發(fā)執(zhí)行與同步。

(二)系統(tǒng)設(shè)計(jì)階段

1.創(chuàng)建類(lèi)圖:根據(jù)用例描述和系統(tǒng)功能,識(shí)別系統(tǒng)中的類(lèi)(Class)及其關(guān)系,繪制類(lèi)圖。

(1)識(shí)別核心類(lèi):分析用例描述,識(shí)別執(zhí)行操作、存儲(chǔ)數(shù)據(jù)或代表關(guān)鍵概念的名詞。例如,在在線(xiàn)訂票系統(tǒng)中,可能有“用戶(hù)”、“航班”、“訂單”、“支付方式”等類(lèi)。

(2)定義類(lèi)的屬性和方法:為每個(gè)類(lèi)定義其具有的屬性(數(shù)據(jù))和方法(行為)。屬性通常包括類(lèi)型和可見(jiàn)性(如`publicname:String`),方法包括名稱(chēng)、參數(shù)列表、返回類(lèi)型和可見(jiàn)性(如`publicbookTicket(flightID:String,seatCount:int):Order`)。

(3)確定類(lèi)之間的關(guān)系:分析類(lèi)之間的相互作用,使用適當(dāng)?shù)年P(guān)系符號(hào)連接。

關(guān)聯(lián):例如,“用戶(hù)”擁有“訂單列表”。通常標(biāo)明基數(shù)(如`用戶(hù)1---訂單`表示一個(gè)用戶(hù)可以有多個(gè)訂單)。

依賴(lài):例如,“訂單”依賴(lài)“支付方式”來(lái)處理付款。用虛線(xiàn)表示。

泛化:例如,“VIP用戶(hù)”是“用戶(hù)”的特化。用實(shí)線(xiàn)空心箭頭表示。

實(shí)現(xiàn):如果類(lèi)實(shí)現(xiàn)了接口,用虛線(xiàn)空心箭頭表示。

聚合/組合:例如,“訂單”包含“座位”。根據(jù)部分是否可以獨(dú)立存在選擇聚合(空心菱形)或組合(實(shí)心菱形)。

(4)設(shè)計(jì)類(lèi)層次結(jié)構(gòu):將相關(guān)的類(lèi)組織成包(Package),使用包圖進(jìn)行組織和管理。在包內(nèi),可以使用接口定義公共的操作契約。

2.繪制對(duì)象圖:根據(jù)類(lèi)圖,創(chuàng)建對(duì)象圖,展示系統(tǒng)在某個(gè)特定時(shí)刻的狀態(tài)和對(duì)象之間的關(guān)系。

(1)選擇場(chǎng)景:選擇類(lèi)圖中的一個(gè)或多個(gè)用例執(zhí)行的關(guān)鍵場(chǎng)景。

(2)創(chuàng)建對(duì)象實(shí)例:從類(lèi)圖中復(fù)制相關(guān)類(lèi)的對(duì)象,并給它們賦予具體的實(shí)例名稱(chēng)和屬性值。例如,“用戶(hù)張三”、“航班CA123”。

(3)連接對(duì)象:使用與類(lèi)圖相同的對(duì)象關(guān)系符號(hào)(關(guān)聯(lián)、依賴(lài)等)連接這些對(duì)象實(shí)例,展示它們?cè)谔囟▓?chǎng)景下的交互狀態(tài)。

注意:對(duì)象圖是類(lèi)圖在特定時(shí)刻的快照,主要用于幫助理解類(lèi)圖中的抽象關(guān)系。

3.繪制組件圖:根據(jù)類(lèi)圖和對(duì)象圖,繪制組件圖,展示系統(tǒng)中的組件及其依賴(lài)關(guān)系。

(1)識(shí)別系統(tǒng)組件:將系統(tǒng)分解為更高級(jí)別的模塊或組件,例如“用戶(hù)界面組件”、“業(yè)務(wù)邏輯組件”、“數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件”、“外部服務(wù)接口組件”。

(2)定義組件接口:為每個(gè)組件定義其對(duì)外提供的接口和依賴(lài)的外部接口。

(3)確定組件之間的依賴(lài)關(guān)系:使用依賴(lài)關(guān)系(虛線(xiàn)箭頭)表示一個(gè)組件使用另一個(gè)組件。例如,“用戶(hù)界面組件”依賴(lài)“業(yè)務(wù)邏輯組件”來(lái)處理用戶(hù)請(qǐng)求。

(4)繪制組件圖:將組件作為矩形表示,標(biāo)注組件名稱(chēng)和接口,并用依賴(lài)關(guān)系連接它們。

(三)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成(輔助):根據(jù)類(lèi)圖和組件圖,使用代碼生成工具(CodeGenerator)可以自動(dòng)生成部分基礎(chǔ)代碼框架(如類(lèi)模板、接口定義),提高開(kāi)發(fā)效率。但通常需要人工進(jìn)行調(diào)整和補(bǔ)充。

2.代碼實(shí)現(xiàn):

(1)遵循類(lèi)圖定義:按照類(lèi)圖中的定義,創(chuàng)建類(lèi)、定義屬性和方法。確保方法的簽名(名稱(chēng)、參數(shù)、返回類(lèi)型)與類(lèi)圖一致。

(2)實(shí)現(xiàn)類(lèi)間關(guān)系:根據(jù)類(lèi)圖中的關(guān)系,實(shí)現(xiàn)對(duì)象間的創(chuàng)建、關(guān)聯(lián)、依賴(lài)調(diào)用等。例如,實(shí)現(xiàn)“用戶(hù)”對(duì)象擁有“訂單列表”屬性,并實(shí)現(xiàn)獲取訂單列表的方法。

(3)遵循接口實(shí)現(xiàn):如果類(lèi)實(shí)現(xiàn)了接口,確保實(shí)現(xiàn)接口中定義的所有方法。

3.代碼調(diào)試:

(1)利用順序圖/協(xié)作圖:在調(diào)試過(guò)程中,參考順序圖或協(xié)作圖,模擬對(duì)象間的交互過(guò)程。當(dāng)交互不符合預(yù)期時(shí),可以回溯到代碼層面,檢查消息發(fā)送、接收和處理邏輯是否正確。

(2)對(duì)象狀態(tài)檢查:對(duì)照對(duì)象圖,檢查對(duì)象實(shí)例的狀態(tài)(屬性值)是否在交互過(guò)程中按預(yù)期變化。

(3)調(diào)試工具輔助:使用IDE提供的調(diào)試工具(斷點(diǎn)、單步執(zhí)行、變量查看等),結(jié)合UML模型進(jìn)行跟蹤和定位問(wèn)題。

(四)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖:根據(jù)用例描述和類(lèi)圖,繪制序列圖,展示對(duì)象之間的交互順序。

(1)選擇測(cè)試場(chǎng)景:選擇要測(cè)試的用例或操作的特定路徑(基本流程或異常流程)。

(2)確定參與對(duì)象:從用例描述或類(lèi)圖中識(shí)別出參與該場(chǎng)景交互的類(lèi)或?qū)ο髮?shí)例。

(3)排列對(duì)象生命線(xiàn):在圖的左側(cè)垂直排列參與對(duì)象的生命線(xiàn)(從上到下)。

(4)按時(shí)間順序添加消息:在對(duì)象生命線(xiàn)之間,按時(shí)間順序繪制發(fā)送和接收的消息(實(shí)線(xiàn)箭頭表示同步消息,虛線(xiàn)箭頭表示異步消息)。消息旁可注明調(diào)用方法名。

(5)設(shè)計(jì)分支和循環(huán):對(duì)于包含條件判斷或循環(huán)交互的情況,使用分支(菱形加條件)和循環(huán)(自消息)結(jié)構(gòu)來(lái)精確表達(dá)。

(6)添加注釋?zhuān)簩?duì)復(fù)雜的交互邏輯添加注釋?zhuān)f(shuō)明原因或預(yù)期行為。

2.創(chuàng)建協(xié)作圖(通信圖):根據(jù)序列圖或用例描述,繪制協(xié)作圖,更側(cè)重于展示對(duì)象間的交互關(guān)系。

(1)選擇參與對(duì)象:同序列圖。

(2)使用消息編號(hào):為每個(gè)消息分配唯一的編號(hào),方便引用和說(shuō)明順序。

(3)使用交互框架(InteractionFrame):可以將一組相關(guān)的消息封裝在交互框架內(nèi),框架內(nèi)顯示對(duì)象和消息,框架外顯示交互的整體上下文。

(4)強(qiáng)調(diào)關(guān)系:通過(guò)連接對(duì)象生命線(xiàn)的線(xiàn)段(重線(xiàn)或虛線(xiàn))強(qiáng)調(diào)對(duì)象間的協(xié)作關(guān)系。

3.設(shè)計(jì)測(cè)試用例:

(1)從交互路徑出發(fā):基于序列圖和協(xié)作圖中的消息流,設(shè)計(jì)測(cè)試步驟,確保覆蓋主要的交互路徑。

(2)考慮異常情況:針對(duì)用例描述中的異常流程和序列圖/協(xié)作圖中的分支條件,設(shè)計(jì)相應(yīng)的異常測(cè)試用例。

(3)定義輸入和預(yù)期輸出:為每個(gè)測(cè)試用例明確輸入數(shù)據(jù)、執(zhí)行的操作以及預(yù)期的系統(tǒng)響應(yīng)或結(jié)果狀態(tài)。

(4)覆蓋對(duì)象狀態(tài):設(shè)計(jì)測(cè)試用例以驗(yàn)證交互后對(duì)象屬性的變化是否符合預(yù)期。

(5)編寫(xiě)測(cè)試描述:為每個(gè)測(cè)試用例編寫(xiě)清晰的描述,說(shuō)明測(cè)試目的、前提條件、測(cè)試步驟、預(yù)期結(jié)果和實(shí)際結(jié)果。

三、UML應(yīng)用案例分析

(一)案例背景

某企業(yè)需要開(kāi)發(fā)一套在線(xiàn)訂票系統(tǒng),實(shí)現(xiàn)用戶(hù)在線(xiàn)購(gòu)買(mǎi)火車(chē)票、飛機(jī)票和酒店預(yù)訂功能。該系統(tǒng)需要支持用戶(hù)注冊(cè)登錄、搜索可用資源(車(chē)次、航班、房間)、查看詳情、下單支付、訂單管理(查看、取消)等功能。

(二)需求分析

1.創(chuàng)建用例圖:

(1)確定系統(tǒng)邊界:系統(tǒng)邊界包括用戶(hù)界面(Web、移動(dòng)App)和后端服務(wù)。

(2)識(shí)別用例:

用戶(hù)用例:注冊(cè)、登錄、搜索資源(火車(chē)票、飛機(jī)票、酒店)、查看資源詳情、下單、支付、查看訂單、取消訂單、修改訂單信息(如座位)。

管理員用例:管理用戶(hù)信息、管理資源(添加/修改/刪除車(chē)次/航班/房間)、查看訂單列表、處理訂單異常。

(3)定義參與者:

用戶(hù)(User)

管理員(Admin)

(4)繪制用例圖:用戶(hù)作為參與者放在系統(tǒng)邊界外,指向內(nèi)部的多個(gè)用例。管理員也作為參與者指向管理相關(guān)的用例??梢蕴砑雨P(guān)聯(lián)表示用戶(hù)用例和管理員用例的共同點(diǎn)(如都涉及登錄)。

2.編寫(xiě)用例描述(以“搜索資源”為例):

用例名稱(chēng):搜索資源

參與者:用戶(hù)

前置條件:用戶(hù)已登錄或未登錄(登錄后可查看歷史搜索條件)。

基本流程(HappyPath):

1.用戶(hù)進(jìn)入搜索頁(yè)面。

2.用戶(hù)選擇資源類(lèi)型(火車(chē)票/飛機(jī)票/酒店)。

3.用戶(hù)輸入出發(fā)地、目的地、日期/時(shí)間范圍。

4.用戶(hù)點(diǎn)擊“搜索”按鈕。

5.系統(tǒng)根據(jù)輸入條件查詢(xún)數(shù)據(jù)庫(kù)。

6.系統(tǒng)展示符合條件的資源列表(如車(chē)次/航班/酒店)。

7.用戶(hù)選擇一個(gè)資源,點(diǎn)擊“查看詳情”。

異常流程:

輸入條件不完整:系統(tǒng)提示補(bǔ)充必要信息。

未找到符合條件的資源:系統(tǒng)提示“未找到相關(guān)資源,請(qǐng)嘗試調(diào)整條件”。

網(wǎng)絡(luò)錯(cuò)誤:系統(tǒng)提示網(wǎng)絡(luò)連接失敗。

后置條件:用戶(hù)看到搜索結(jié)果頁(yè)面或錯(cuò)誤提示頁(yè)面。

優(yōu)先級(jí):高

3.繪制活動(dòng)圖:

(1)定義起點(diǎn)終點(diǎn):起點(diǎn)為用戶(hù)發(fā)起搜索,終點(diǎn)為看到結(jié)果或錯(cuò)誤頁(yè)面。

(2)識(shí)別主要活動(dòng):輸入搜索條件、選擇資源類(lèi)型、點(diǎn)擊搜索、查詢(xún)數(shù)據(jù)庫(kù)、展示結(jié)果。

(3)確定控制流:使用順序流連接主要活動(dòng)。

(4)添加分支:在“查詢(xún)數(shù)據(jù)庫(kù)”后添加分支,處理“找到資源”和“未找到資源”兩種情況。

(5)添加并發(fā):在“展示結(jié)果”前,可能需要并發(fā)進(jìn)行“加載圖片”和“準(zhǔn)備數(shù)據(jù)摘要”。

(三)系統(tǒng)設(shè)計(jì)

1.創(chuàng)建類(lèi)圖:

(1)識(shí)別核心類(lèi):用戶(hù)(User)、管理員(Admin)、資源(Resource)、火車(chē)票(TrainTicket)、飛機(jī)票(AirTicket)、酒店(Hotel)、訂單(Order)、支付方式(PaymentMethod)、座位(Seat)、評(píng)論(Review)等。

(2)定義類(lèi)屬性和方法:

`User`:`UserID`,`Username`,`Password`,`Email`,`PhoneNumber`,`HistorySearches`,`Orders`.方法:`Login()`,`Logout()`,`PlaceOrder()`,`CancelOrder()`.

`Order`:`OrderID`,`UserID`,`ResourceID`,`ResourceType`,`PaymentStatus`,`OrderDate`,`ResourcesBooked`.方法:`ConfirmPayment()`,`Cancel()`.

`TrainTicket`:`TrainID`,`SeatNumber`,`Price`,`DepartureTime`,`ArrivalTime`,`TrainRoute`.(屬性可能還包括一等座、二等座等)

`AirTicket`:`FlightNumber`,`SeatClass`,`Price`,`Airline`,`DepartureAirport`,`ArrivalAirport`,`DepartureTime`,`ArrivalTime`.(屬性可能還包括商務(wù)艙、經(jīng)濟(jì)艙等)

`Hotel`:`HotelID`,`HotelName`,`Address`,`PricePerNight`,`Amenities`,`Rooms`.(`Rooms`可能聚合`Room`類(lèi))

`Room`:`RoomNumber`,`RoomType`,`Price`,`Availability`.(屬性可能還包括大床房、標(biāo)準(zhǔn)間等)

(3)確定類(lèi)間關(guān)系:

`User`1---`Order`(關(guān)聯(lián),一個(gè)用戶(hù)可以有多個(gè)訂單)

`Order`---1`Resource`(關(guān)聯(lián),一個(gè)訂單對(duì)應(yīng)一個(gè)資源,但類(lèi)型不同,可能需要更復(fù)雜的結(jié)構(gòu)或關(guān)聯(lián)到中間類(lèi))

`Order`---`Seat`(對(duì)于火車(chē)票/飛機(jī)票,一個(gè)訂單可能包含多個(gè)座位)

`Order`1---1`PaymentMethod`(關(guān)聯(lián),一個(gè)訂單使用一種支付方式)

`User`1---`Review`(關(guān)聯(lián),一個(gè)用戶(hù)可以寫(xiě)多個(gè)評(píng)論)

`Hotel`1---`Room`(聚合,酒店包含多個(gè)房間)

`User`1---1`Session`(可能存在,表示用戶(hù)登錄狀態(tài))

`Admin`1---`User`(可能存在,表示管理用戶(hù))

`Admin`1---`Resource`(可能存在,表示管理資源)

(4)設(shè)計(jì)類(lèi)層次結(jié)構(gòu):例如,`Resource`可以作為抽象類(lèi),`TrainTicket`,`AirTicket`,`Hotel`作為其具體子類(lèi),實(shí)現(xiàn)共同的接口(如`IResource`)。

2.繪制對(duì)象圖:選擇一個(gè)用戶(hù)成功搜索并預(yù)訂了一個(gè)火車(chē)票的場(chǎng)景。創(chuàng)建`User`、`Order`、`TrainTicket`、`Seat`等對(duì)象實(shí)例,并連接它們,表示用戶(hù)`張三`創(chuàng)建了`訂單123`,該訂單包含`座位A1`和`座位A2`,關(guān)聯(lián)到`車(chē)次G123`。

3.繪制組件圖:

(1)識(shí)別系統(tǒng)組件:`用戶(hù)界面組件`(Web前端、移動(dòng)App客戶(hù)端)、`業(yè)務(wù)邏輯組件`(訂單處理、支付集成、搜索服務(wù))、`數(shù)據(jù)訪(fǎng)問(wèn)組件`(數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)層)、`外部服務(wù)組件`(支付網(wǎng)關(guān)接口、短信通知服務(wù)接口)。

(2)定義組件接口:`用戶(hù)界面組件`提供`用戶(hù)輸入`和`顯示結(jié)果`接口;`業(yè)務(wù)邏輯組件`提供`處理訂單`、`搜索資源`等接口;`數(shù)據(jù)訪(fǎng)問(wèn)組件`提供`CRUD`操作接口;`外部服務(wù)組件`提供`支付`、`發(fā)送短信`等接口。

(3)確定組件依賴(lài)關(guān)系:`用戶(hù)界面組件`依賴(lài)`業(yè)務(wù)邏輯組件`來(lái)處理用戶(hù)請(qǐng)求;`業(yè)務(wù)邏輯組件`依賴(lài)`數(shù)據(jù)訪(fǎng)問(wèn)組件`來(lái)讀寫(xiě)數(shù)據(jù);`業(yè)務(wù)邏輯組件`依賴(lài)`外部服務(wù)組件`來(lái)完成支付和通知。

(四)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成(輔助):如果使用支持UML的IDE或代碼生成工具,可以根據(jù)類(lèi)圖生成基礎(chǔ)的類(lèi)框架。

2.代碼實(shí)現(xiàn):

(1)遵循類(lèi)圖定義:創(chuàng)建`User`,`Order`,`TrainTicket`等類(lèi),實(shí)現(xiàn)其屬性和方法。例如,實(shí)現(xiàn)`User`的`Login(username,password)`方法,調(diào)用后端服務(wù)驗(yàn)證憑證。

(2)實(shí)現(xiàn)類(lèi)間關(guān)系:實(shí)現(xiàn)`Order`對(duì)`Resource`(或通過(guò)`Seat`)的關(guān)聯(lián),例如在`Order`類(lèi)中添加`TrainTicket`或`List<Seat>`類(lèi)型的屬性。

(3)實(shí)現(xiàn)接口:如果定義了`IResource`接口,實(shí)現(xiàn)`TrainTicket`,`AirTicket`,`Hotel`類(lèi)必須提供`GetResourceDetail()`等方法。

3.代碼調(diào)試:使用IDE調(diào)試功能,結(jié)合序列圖,跟蹤用戶(hù)登錄、搜索資源、下單支付的關(guān)鍵步驟。例如,在`PlaceOrder()`方法中設(shè)置斷點(diǎn),檢查`Order`對(duì)象的屬性是否正確設(shè)置,`Seat`對(duì)象是否被正確分配。

(五)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖(以“下單支付”為例):

(1)選擇測(cè)試場(chǎng)景:用戶(hù)選擇火車(chē)票并完成支付。

(2)確定參與對(duì)象:`用戶(hù)界面`,`用戶(hù)`,`訂單服務(wù)`,`支付網(wǎng)關(guān)`,`訂單數(shù)據(jù)庫(kù)`。

(3)排列對(duì)象生命線(xiàn):從左到右排列。

(4)添加消息:`用戶(hù)界面`發(fā)送`提交訂單請(qǐng)求`給`訂單服務(wù)`;`訂單服務(wù)`創(chuàng)建`訂單對(duì)象`并存入`訂單數(shù)據(jù)庫(kù)`;`訂單服務(wù)`調(diào)用`支付網(wǎng)關(guān)`發(fā)送`支付請(qǐng)求`;`支付網(wǎng)關(guān)`返回`支付結(jié)果`給`訂單服務(wù)`;`訂單服務(wù)`更新`訂單對(duì)象`狀態(tài)并通知`用戶(hù)界面`。

(5)設(shè)計(jì)分支:在收到`支付結(jié)果`后,添加分支處理`支付成功`和`支付失敗`兩種情況。

(6)添加注釋?zhuān)簶?biāo)注關(guān)鍵步驟,如“檢查庫(kù)存”、“記錄交易流水”。

2.創(chuàng)建協(xié)作圖(通信圖):與序列圖類(lèi)似,展示`用戶(hù)界面`、`訂單服務(wù)`、`支付網(wǎng)關(guān)`、`訂單數(shù)據(jù)庫(kù)`之間的消息傳遞關(guān)系和順序,但更側(cè)重于它們之間的協(xié)作結(jié)構(gòu)。

3.設(shè)計(jì)測(cè)試用例:

(1)從交互路徑出發(fā):設(shè)計(jì)測(cè)試用例覆蓋“提交訂單請(qǐng)求”、“創(chuàng)建訂單”、“調(diào)用支付”、“返回支付成功”、“返回支付失敗”等關(guān)鍵消息流。

(2)考慮異常情況:設(shè)計(jì)測(cè)試用例模擬支付網(wǎng)關(guān)超時(shí)、支付參數(shù)錯(cuò)誤、用戶(hù)中途取消支付等情況。

(3)定義輸入和預(yù)期輸出:輸入:有效的訂單信息、有效的支付賬號(hào)。預(yù)期輸出:訂單狀態(tài)變?yōu)椤耙阎Ц丁?,收到支付成功通知。異常輸入:無(wú)效支付賬號(hào)。異常預(yù)期輸出:訂單狀態(tài)為“待支付”,收到支付失敗通知。

(4)覆蓋對(duì)象狀態(tài):檢查`訂單數(shù)據(jù)庫(kù)`中的`訂單對(duì)象`狀態(tài)是否正確更新。

(5)編寫(xiě)測(cè)試描述:詳細(xì)說(shuō)明測(cè)試目的、前置條件、測(cè)試步驟、預(yù)期結(jié)果和實(shí)際結(jié)果記錄。

一、UML方法概述

UML(統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)化的圖形建模語(yǔ)言,用于描述、可視化、構(gòu)建和文檔化軟件密集型系統(tǒng)的產(chǎn)物。在軟件工程中,UML被廣泛應(yīng)用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)階段,幫助開(kāi)發(fā)團(tuán)隊(duì)更好地理解和溝通項(xiàng)目需求,提高開(kāi)發(fā)效率和系統(tǒng)質(zhì)量。

(一)UML的基本組成

1.圖形符號(hào):UML使用一系列標(biāo)準(zhǔn)的圖形符號(hào)來(lái)表示不同的系統(tǒng)元素,如類(lèi)、接口、用例、對(duì)象、關(guān)系等。

2.建模規(guī)則:UML提供了一套嚴(yán)格的建模規(guī)則,確保模型的一致性和可擴(kuò)展性。

3.規(guī)范:UML規(guī)范定義了語(yǔ)言的各種元素和表示方法,確保不同工具和開(kāi)發(fā)人員之間的模型一致性。

(二)UML的主要用途

1.系統(tǒng)分析:通過(guò)UML用例圖和活動(dòng)圖,分析系統(tǒng)需求,明確系統(tǒng)功能和用戶(hù)交互。

2.系統(tǒng)設(shè)計(jì):使用UML類(lèi)圖、對(duì)象圖和組件圖等,設(shè)計(jì)系統(tǒng)架構(gòu)和模塊劃分。

3.系統(tǒng)實(shí)現(xiàn):根據(jù)UML設(shè)計(jì)圖,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能,確保代碼與設(shè)計(jì)一致。

4.系統(tǒng)測(cè)試:利用UML序列圖和協(xié)作圖,模擬系統(tǒng)交互過(guò)程,設(shè)計(jì)測(cè)試用例,提高測(cè)試覆蓋率。

二、UML在軟件工程中的應(yīng)用預(yù)案

(一)需求分析階段

1.創(chuàng)建用例圖:根據(jù)項(xiàng)目需求,識(shí)別系統(tǒng)參與者(Actor)和用例(UseCase),繪制用例圖。

(1)確定系統(tǒng)邊界:明確系統(tǒng)與外部環(huán)境的交互點(diǎn)。

(2)識(shí)別用例:列出系統(tǒng)提供的功能。

(3)定義參與者:列出與系統(tǒng)交互的用戶(hù)或系統(tǒng)。

2.編寫(xiě)用例描述:為每個(gè)用例編寫(xiě)詳細(xì)描述,包括用例名稱(chēng)、參與者、前置條件、基本流程、異常流程等。

3.繪制活動(dòng)圖:根據(jù)用例描述,繪制活動(dòng)圖,展示用例的執(zhí)行流程和系統(tǒng)響應(yīng)。

(二)系統(tǒng)設(shè)計(jì)階段

1.創(chuàng)建類(lèi)圖:根據(jù)用例描述和系統(tǒng)功能,識(shí)別系統(tǒng)中的類(lèi)(Class)及其關(guān)系,繪制類(lèi)圖。

(1)識(shí)別類(lèi):列出系統(tǒng)中的實(shí)體和屬性。

(2)定義關(guān)系:確定類(lèi)之間的關(guān)聯(lián)、依賴(lài)、繼承和聚合關(guān)系。

(3)設(shè)計(jì)方法:為每個(gè)類(lèi)定義方法,描述類(lèi)的行為。

2.繪制對(duì)象圖:根據(jù)類(lèi)圖,創(chuàng)建對(duì)象圖,展示系統(tǒng)在某個(gè)時(shí)刻的狀態(tài)和對(duì)象之間的關(guān)系。

3.繪制組件圖:根據(jù)類(lèi)圖和對(duì)象圖,繪制組件圖,展示系統(tǒng)中的組件及其依賴(lài)關(guān)系。

(三)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成:根據(jù)類(lèi)圖和組件圖,生成代碼框架,提高開(kāi)發(fā)效率。

2.代碼實(shí)現(xiàn):根據(jù)類(lèi)圖中的方法定義,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能。

3.代碼調(diào)試:利用UML序列圖和協(xié)作圖,模擬系統(tǒng)交互過(guò)程,調(diào)試代碼,確保功能正確。

(四)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖:根據(jù)用例描述和類(lèi)圖,繪制序列圖,展示對(duì)象之間的交互順序。

(1)確定對(duì)象:列出參與交互的對(duì)象。

(2)定義消息:確定對(duì)象之間的消息傳遞順序。

(3)設(shè)計(jì)分支和循環(huán):處理異常情況和重復(fù)交互。

2.創(chuàng)建協(xié)作圖:根據(jù)序列圖,繪制協(xié)作圖,展示對(duì)象之間的交互關(guān)系。

3.設(shè)計(jì)測(cè)試用例:根據(jù)序列圖和協(xié)作圖,設(shè)計(jì)測(cè)試用例,覆蓋所有交互路徑和異常情況。

三、UML應(yīng)用案例分析

(一)案例背景

某企業(yè)需要開(kāi)發(fā)一套在線(xiàn)訂票系統(tǒng),實(shí)現(xiàn)用戶(hù)在線(xiàn)購(gòu)買(mǎi)火車(chē)票、飛機(jī)票和酒店預(yù)訂功能。

(二)需求分析

1.創(chuàng)建用例圖:識(shí)別參與者(用戶(hù)、管理員)和用例(訂票、改簽、退款、查詢(xún)、管理)。

2.編寫(xiě)用例描述:詳細(xì)描述每個(gè)用例的流程和系統(tǒng)響應(yīng)。

3.繪制活動(dòng)圖:展示訂票、改簽、退款等核心用例的執(zhí)行流程。

(三)系統(tǒng)設(shè)計(jì)

1.創(chuàng)建類(lèi)圖:識(shí)別系統(tǒng)中的類(lèi)(用戶(hù)、訂單、支付、票務(wù)等)及其關(guān)系。

2.繪制對(duì)象圖:展示系統(tǒng)在用戶(hù)訂票時(shí)的狀態(tài)和對(duì)象之間的關(guān)系。

3.繪制組件圖:展示系統(tǒng)中的組件(用戶(hù)界面、業(yè)務(wù)邏輯、數(shù)據(jù)訪(fǎng)問(wèn)等)及其依賴(lài)關(guān)系。

(四)系統(tǒng)實(shí)現(xiàn)

1.代碼生成:根據(jù)類(lèi)圖和組件圖,生成代碼框架。

2.代碼實(shí)現(xiàn):根據(jù)類(lèi)圖中的方法定義,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能。

3.代碼調(diào)試:利用序列圖和協(xié)作圖,調(diào)試代碼,確保功能正確。

(五)系統(tǒng)測(cè)試

1.創(chuàng)建序列圖:展示用戶(hù)訂票、改簽、退款等核心用例的交互順序。

2.創(chuàng)建協(xié)作圖:展示對(duì)象之間的交互關(guān)系。

3.設(shè)計(jì)測(cè)試用例:覆蓋所有交互路徑和異常情況,確保系統(tǒng)功能正確。

一、UML方法概述

UML(統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)化的圖形建模語(yǔ)言,用于描述、可視化、構(gòu)建和文檔化軟件密集型系統(tǒng)的產(chǎn)物。在軟件工程中,UML被廣泛應(yīng)用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)階段,幫助開(kāi)發(fā)團(tuán)隊(duì)更好地理解和溝通項(xiàng)目需求,提高開(kāi)發(fā)效率和系統(tǒng)質(zhì)量。

(一)UML的基本組成

1.圖形符號(hào):UML使用一系列標(biāo)準(zhǔn)的圖形符號(hào)來(lái)表示不同的系統(tǒng)元素,這些符號(hào)具有統(tǒng)一的視覺(jué)風(fēng)格,便于理解和交流。

核心元素符號(hào):

類(lèi)(Class):通常用矩形表示,內(nèi)部可劃分區(qū)域表示名稱(chēng)、屬性(Attribute)和方法(Operation)。

接口(Interface):通常用矩形表示,頂部標(biāo)有“<<interface>>”或直接使用預(yù)定義的接口圖標(biāo)。

用例(UseCase):通常用橢圓形表示。

對(duì)象(Object):類(lèi)圖中的具體實(shí)例,用矩形表示,頂部標(biāo)有對(duì)象名和類(lèi)名。

組件(Component):通常用矩形表示,頂部標(biāo)有“<<component>>”。

節(jié)點(diǎn)(Node):表示運(yùn)行環(huán)境的物理實(shí)體,如服務(wù)器、工作站,通常用立方體表示。

aktor(Actor):與系統(tǒng)交互的外部實(shí)體,通常用小人圖標(biāo)表示。

關(guān)系符號(hào):

關(guān)聯(lián)(Association):用實(shí)線(xiàn)表示,可能帶有箭頭(表示方向)或基數(shù)(表示數(shù)量關(guān)系,如1,表示一對(duì)多)。

依賴(lài)(Dependency):用虛線(xiàn)帶箭頭表示,表示一方依賴(lài)另一方,但依賴(lài)性較弱。

泛化(Generalization):用實(shí)線(xiàn)帶空心箭頭表示,表示繼承或分類(lèi)關(guān)系。

實(shí)現(xiàn)(Realization):用虛線(xiàn)帶空心箭頭表示,表示接口被實(shí)現(xiàn)。

聚合(Aggregation):用實(shí)線(xiàn)帶空心菱形表示,表示整體與部分的關(guān)系,部分可以獨(dú)立于整體存在。

組合(Composition):用實(shí)線(xiàn)帶實(shí)心菱形表示,表示整體與部分的關(guān)系,部分不能獨(dú)立于整體存在。

2.建模規(guī)則:UML提供了一套嚴(yán)格的建模規(guī)則,確保模型的一致性、可追溯性和可擴(kuò)展性。這些規(guī)則涵蓋了命名規(guī)范、圖示約定、關(guān)系約束等方面。例如,類(lèi)名通常使用名詞或名詞短語(yǔ),方法名使用動(dòng)詞或動(dòng)詞短語(yǔ),屬性和方法的可見(jiàn)性(public,protected,private)通常通過(guò)帶下劃線(xiàn)的加號(hào)、星號(hào)或減號(hào)來(lái)表示。

3.規(guī)范:UML規(guī)范定義了語(yǔ)言的各種元素、圖示符號(hào)、關(guān)鍵字、建模規(guī)則以及不同圖之間的聯(lián)系,確保不同工具和開(kāi)發(fā)人員之間可以創(chuàng)建和理解一致的UML模型。UML規(guī)范由ObjectManagementGroup(OMG)維護(hù)和發(fā)布。

(二)UML的主要用途

1.系統(tǒng)分析階段:UML在此階段主要用于捕獲和表達(dá)系統(tǒng)需求,幫助分析師和用戶(hù)理解系統(tǒng)邊界、功能需求和非功能需求。

用例圖(UseCaseDiagram):用于識(shí)別系統(tǒng)的外部參與者(Actors)以及他們與系統(tǒng)交互的用例(UseCases),明確系統(tǒng)的范圍和主要功能。繪制步驟包括:識(shí)別參與者、識(shí)別用例、定義用例之間的關(guān)系(包含、擴(kuò)展、泛化)、繪制系統(tǒng)邊界。

活動(dòng)圖(ActivityDiagram):用于描述系統(tǒng)中的業(yè)務(wù)流程或操作流程,展示活動(dòng)的順序、分支、并發(fā)和匯合。繪制步驟包括:定義起點(diǎn)和終點(diǎn)、識(shí)別主要活動(dòng)、確定活動(dòng)間的控制流(順序流、分支流、并發(fā)流)、添加對(duì)象流。

2.系統(tǒng)設(shè)計(jì)階段:UML在此階段用于設(shè)計(jì)系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為,定義系統(tǒng)的架構(gòu)和組件。

類(lèi)圖(ClassDiagram):用于描述系統(tǒng)的靜態(tài)結(jié)構(gòu),展示系統(tǒng)中的類(lèi)、接口、關(guān)系以及它們的屬性和方法。繪制步驟包括:識(shí)別核心類(lèi)、定義類(lèi)的屬性和方法、確定類(lèi)之間的關(guān)系(關(guān)聯(lián)、依賴(lài)、泛化、實(shí)現(xiàn)、聚合、組合)、添加包(Package)組織元素。

對(duì)象圖(ObjectDiagram):類(lèi)圖的具體實(shí)例化,展示特定時(shí)刻系統(tǒng)中的對(duì)象及其關(guān)系,有助于理解類(lèi)圖中的抽象關(guān)系在實(shí)際場(chǎng)景中的應(yīng)用。

組件圖(ComponentDiagram):用于描述系統(tǒng)的物理結(jié)構(gòu),展示系統(tǒng)由哪些組件構(gòu)成以及組件之間的依賴(lài)關(guān)系。繪制步驟包括:識(shí)別系統(tǒng)組件、定義組件接口、確定組件之間的依賴(lài)關(guān)系。

順序圖(SequenceDiagram):用于描述對(duì)象之間交互的時(shí)間順序,特別適合展示用例或操作中對(duì)象間的消息傳遞流程。繪制步驟包括:確定參與者對(duì)象、排列對(duì)象生命線(xiàn)、按時(shí)間順序添加消息、添加異步消息、控制流說(shuō)明(如自消息、分支)。

3.系統(tǒng)實(shí)現(xiàn)階段:UML在此階段輔助代碼編寫(xiě),確保設(shè)計(jì)意圖在代碼中得到體現(xiàn),并用于生成部分代碼或作為代碼的參考。

類(lèi)圖到代碼:類(lèi)圖中的類(lèi)、屬性和方法直接映射到編程語(yǔ)言中的類(lèi)、字段和函數(shù)。

順序圖到代碼:順序圖中的消息調(diào)用對(duì)應(yīng)代碼中的函數(shù)調(diào)用。

4.系統(tǒng)測(cè)試階段:UML在此階段用于設(shè)計(jì)測(cè)試用例和規(guī)劃測(cè)試過(guò)程,確保系統(tǒng)滿(mǎn)足設(shè)計(jì)要求。

順序圖和協(xié)作圖(CommunicationDiagram):用于詳細(xì)說(shuō)明對(duì)象間的交互細(xì)節(jié),幫助設(shè)計(jì)測(cè)試場(chǎng)景,驗(yàn)證對(duì)象間的消息傳遞和響應(yīng)是否符合預(yù)期。

狀態(tài)機(jī)圖(StateMachineDiagram):用于描述對(duì)象或系統(tǒng)的狀態(tài)變化以及觸發(fā)狀態(tài)轉(zhuǎn)換的事件,可用于設(shè)計(jì)針對(duì)狀態(tài)轉(zhuǎn)換的測(cè)試用例。

活動(dòng)圖:可用于設(shè)計(jì)覆蓋活動(dòng)圖所有路徑的測(cè)試用例,確保業(yè)務(wù)流程的完整性。

二、UML在軟件工程中的應(yīng)用預(yù)案

(一)需求分析階段

1.創(chuàng)建用例圖:根據(jù)項(xiàng)目需求,識(shí)別系統(tǒng)參與者(Actor)和用例(UseCase),繪制用例圖。

(1)確定系統(tǒng)邊界:與項(xiàng)目干系人(Stakeholders)溝通,明確哪些是系統(tǒng)的一部分,哪些是外部環(huán)境。系統(tǒng)邊界通常用矩形框出,框內(nèi)是系統(tǒng),框外是參與者或外部系統(tǒng)。繪制時(shí),先畫(huà)出系統(tǒng)邊界,再識(shí)別參與者。

(2)識(shí)別用例:通過(guò)訪(fǎng)談、需求文檔分析等方式,列出系統(tǒng)需要提供的所有功能。每個(gè)用例描述了系統(tǒng)為參與者提供的一種價(jià)值。用例名稱(chēng)應(yīng)清晰、簡(jiǎn)潔地反映其功能,例如“查詢(xún)航班”、“預(yù)訂酒店房間”。

(3)定義參與者:識(shí)別與系統(tǒng)交互的外部實(shí)體。參與者可以是人類(lèi)用戶(hù)(如管理員、普通客戶(hù)),也可以是其他系統(tǒng)(如支付系統(tǒng)、消息通知系統(tǒng))。為每個(gè)參與者命名,并說(shuō)明其與系統(tǒng)的交互方式(如通過(guò)Web界面、API調(diào)用等)。

(4)繪制用例圖:將參與者放置在系統(tǒng)邊界外,用例放置在邊界內(nèi),用帶箭頭的實(shí)線(xiàn)連接參與者和用例,箭頭指向用例,表示參與者執(zhí)行該用例。如有必要,使用關(guān)聯(lián)(Association)連接用例,表示共同參與或包含關(guān)系;使用依賴(lài)(Dependency)表示用例間的泛化或擴(kuò)展關(guān)系。

2.編寫(xiě)用例描述:為每個(gè)重要的用例編寫(xiě)詳細(xì)的描述文檔,通常包括:

用例名稱(chēng):清晰標(biāo)識(shí)用例。

參與者:執(zhí)行該用例的Actor。

前置條件:執(zhí)行該用例前必須滿(mǎn)足的條件。

基本流程(HappyPath):參與者順利執(zhí)行用例成功完成所需的所有步驟。

異常流程(Alternative/ExceptionPaths):在執(zhí)行過(guò)程中可能遇到的錯(cuò)誤、中斷或特殊情況,以及系統(tǒng)應(yīng)如何響應(yīng)。

后置條件:用例執(zhí)行完成后的系統(tǒng)狀態(tài)。

優(yōu)先級(jí):標(biāo)記用例的重要程度。

3.繪制活動(dòng)圖:根據(jù)用例描述和系統(tǒng)功能,繪制活動(dòng)圖,展示用例的執(zhí)行流程和系統(tǒng)響應(yīng)。

(1)定義起點(diǎn)和終點(diǎn):活動(dòng)圖通常有一個(gè)唯一的起點(diǎn)(一個(gè)空的圓圈)和一個(gè)或多個(gè)終點(diǎn)(一個(gè)圓內(nèi)包含一個(gè)實(shí)心圓)。

(2)識(shí)別主要活動(dòng):將用例描述中的主要步驟或操作轉(zhuǎn)化為活動(dòng)圖中的活動(dòng)節(jié)點(diǎn)(橢圓形)。

(3)確定活動(dòng)間的控制流:使用實(shí)線(xiàn)箭頭表示活動(dòng)之間的順序流。如果有條件判斷,使用菱形表示決策節(jié)點(diǎn),并標(biāo)明條件;使用分支流(分叉和匯合)表示并發(fā)或順序的選擇。

(4)添加對(duì)象流:如果活動(dòng)涉及對(duì)象的創(chuàng)建、修改或刪除,使用虛線(xiàn)箭頭表示對(duì)象流,并在箭頭旁注明對(duì)象名稱(chēng)。

(5)標(biāo)注并發(fā)和同步:使用分叉(fork)和匯合(join)節(jié)點(diǎn)表示活動(dòng)的并發(fā)執(zhí)行與同步。

(二)系統(tǒng)設(shè)計(jì)階段

1.創(chuàng)建類(lèi)圖:根據(jù)用例描述和系統(tǒng)功能,識(shí)別系統(tǒng)中的類(lèi)(Class)及其關(guān)系,繪制類(lèi)圖。

(1)識(shí)別核心類(lèi):分析用例描述,識(shí)別執(zhí)行操作、存儲(chǔ)數(shù)據(jù)或代表關(guān)鍵概念的名詞。例如,在在線(xiàn)訂票系統(tǒng)中,可能有“用戶(hù)”、“航班”、“訂單”、“支付方式”等類(lèi)。

(2)定義類(lèi)的屬性和方法:為每個(gè)類(lèi)定義其具有的屬性(數(shù)據(jù))和方法(行為)。屬性通常包括類(lèi)型和可見(jiàn)性(如`publicname:String`),方法包括名稱(chēng)、參數(shù)列表、返回類(lèi)型和可見(jiàn)性(如`publicbookTicket(flightID:String,seatCount:int):Order`)。

(3)確定類(lèi)之間的關(guān)系:分析類(lèi)之間的相互作用,使用適當(dāng)?shù)年P(guān)系符號(hào)連接。

關(guān)聯(lián):例如,“用戶(hù)”擁有“訂單列表”。通常標(biāo)明基數(shù)(如`用戶(hù)1---訂單`表示一個(gè)用戶(hù)可以有多個(gè)訂單)。

依賴(lài):例如,“訂單”依賴(lài)“支付方式”來(lái)處理付款。用虛線(xiàn)表示。

泛化:例如,“VIP用戶(hù)”是“用戶(hù)”的特化。用實(shí)線(xiàn)空心箭頭表示。

實(shí)現(xiàn):如果類(lèi)實(shí)現(xiàn)了接口,用虛線(xiàn)空心箭頭表示。

聚合/組合:例如,“訂單”包含“座位”。根據(jù)部分是否可以獨(dú)立存在選擇聚合(空心菱形)或組合(實(shí)心菱形)。

(4)設(shè)計(jì)類(lèi)層次結(jié)構(gòu):將相關(guān)的類(lèi)組織成包(Package),使用包圖進(jìn)行組織和管理。在包內(nèi),可以使用接口定義公共的操作契約。

2.繪制對(duì)象圖:根據(jù)類(lèi)圖,創(chuàng)建對(duì)象圖,展示系統(tǒng)在某個(gè)特定時(shí)刻的狀態(tài)和對(duì)象之間的關(guān)系。

(1)選擇場(chǎng)景:選擇類(lèi)圖中的一個(gè)或多個(gè)用例執(zhí)行的關(guān)鍵場(chǎng)景。

(2)創(chuàng)建對(duì)象實(shí)例:從類(lèi)圖中復(fù)制相關(guān)類(lèi)的對(duì)象,并給它們賦予具體的實(shí)例名稱(chēng)和屬性值。例如,“用戶(hù)張三”、“航班CA123”。

(3)連接對(duì)象:使用與類(lèi)圖相同的對(duì)象關(guān)系符號(hào)(關(guān)聯(lián)、依賴(lài)等)連接這些對(duì)象實(shí)例,展示它們?cè)谔囟▓?chǎng)景下的交互狀態(tài)。

注意:對(duì)象圖是類(lèi)圖在特定時(shí)刻的快照,主要用于幫助理解類(lèi)圖中的抽象關(guān)系。

3.繪制組件圖:根據(jù)類(lèi)圖和對(duì)象圖,繪制組件圖,展示系統(tǒng)中的組件及其依賴(lài)關(guān)系。

(1)識(shí)別系統(tǒng)組件:將系統(tǒng)分解為更高級(jí)別的模塊或組件,例如“用戶(hù)界面組件”、“業(yè)務(wù)邏輯組件”、“數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件”、“外部服務(wù)接口組件”。

(2)定義組件接口:為每個(gè)組件定義其對(duì)外提供的接口和依賴(lài)的外部接口。

(3)確定組件之間的依賴(lài)關(guān)系:使用依賴(lài)關(guān)系(虛線(xiàn)箭頭)表示一個(gè)組件使用另一個(gè)組件。例如,“用戶(hù)界面組件”依賴(lài)“業(yè)務(wù)邏輯組件”來(lái)處理用戶(hù)請(qǐng)求。

(4)繪制組件圖:將組件作為矩形表示,標(biāo)注組件名稱(chēng)和接口,并用依賴(lài)關(guān)系連接它們。

(三)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成(輔助):根據(jù)類(lèi)圖和組件圖,使用代碼生成工具(CodeGenerator)可以自動(dòng)生成部分基礎(chǔ)代碼框架(如類(lèi)模板、接口定義),提高開(kāi)發(fā)效率。但通常需要人工進(jìn)行調(diào)整和補(bǔ)充。

2.代碼實(shí)現(xiàn):

(1)遵循類(lèi)圖定義:按照類(lèi)圖中的定義,創(chuàng)建類(lèi)、定義屬性和方法。確保方法的簽名(名稱(chēng)、參數(shù)、返回類(lèi)型)與類(lèi)圖一致。

(2)實(shí)現(xiàn)類(lèi)間關(guān)系:根據(jù)類(lèi)圖中的關(guān)系,實(shí)現(xiàn)對(duì)象間的創(chuàng)建、關(guān)聯(lián)、依賴(lài)調(diào)用等。例如,實(shí)現(xiàn)“用戶(hù)”對(duì)象擁有“訂單列表”屬性,并實(shí)現(xiàn)獲取訂單列表的方法。

(3)遵循接口實(shí)現(xiàn):如果類(lèi)實(shí)現(xiàn)了接口,確保實(shí)現(xiàn)接口中定義的所有方法。

3.代碼調(diào)試:

(1)利用順序圖/協(xié)作圖:在調(diào)試過(guò)程中,參考順序圖或協(xié)作圖,模擬對(duì)象間的交互過(guò)程。當(dāng)交互不符合預(yù)期時(shí),可以回溯到代碼層面,檢查消息發(fā)送、接收和處理邏輯是否正確。

(2)對(duì)象狀態(tài)檢查:對(duì)照對(duì)象圖,檢查對(duì)象實(shí)例的狀態(tài)(屬性值)是否在交互過(guò)程中按預(yù)期變化。

(3)調(diào)試工具輔助:使用IDE提供的調(diào)試工具(斷點(diǎn)、單步執(zhí)行、變量查看等),結(jié)合UML模型進(jìn)行跟蹤和定位問(wèn)題。

(四)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖:根據(jù)用例描述和類(lèi)圖,繪制序列圖,展示對(duì)象之間的交互順序。

(1)選擇測(cè)試場(chǎng)景:選擇要測(cè)試的用例或操作的特定路徑(基本流程或異常流程)。

(2)確定參與對(duì)象:從用例描述或類(lèi)圖中識(shí)別出參與該場(chǎng)景交互的類(lèi)或?qū)ο髮?shí)例。

(3)排列對(duì)象生命線(xiàn):在圖的左側(cè)垂直排列參與對(duì)象的生命線(xiàn)(從上到下)。

(4)按時(shí)間順序添加消息:在對(duì)象生命線(xiàn)之間,按時(shí)間順序繪制發(fā)送和接收的消息(實(shí)線(xiàn)箭頭表示同步消息,虛線(xiàn)箭頭表示異步消息)。消息旁可注明調(diào)用方法名。

(5)設(shè)計(jì)分支和循環(huán):對(duì)于包含條件判斷或循環(huán)交互的情況,使用分支(菱形加條件)和循環(huán)(自消息)結(jié)構(gòu)來(lái)精確表達(dá)。

(6)添加注釋?zhuān)簩?duì)復(fù)雜的交互邏輯添加注釋?zhuān)f(shuō)明原因或預(yù)期行為。

2.創(chuàng)建協(xié)作圖(通信圖):根據(jù)序列圖或用例描述,繪制協(xié)作圖,更側(cè)重于展示對(duì)象間的交互關(guān)系。

(1)選擇參與對(duì)象:同序列圖。

(2)使用消息編號(hào):為每個(gè)消息分配唯一的編號(hào),方便引用和說(shuō)明順序。

(3)使用交互框架(InteractionFrame):可以將一組相關(guān)的消息封裝在交互框架內(nèi),框架內(nèi)顯示對(duì)象和消息,框架外顯示交互的整體上下文。

(4)強(qiáng)調(diào)關(guān)系:通過(guò)連接對(duì)象生命線(xiàn)的線(xiàn)段(重線(xiàn)或虛線(xiàn))強(qiáng)調(diào)對(duì)象間的協(xié)作關(guān)系。

3.設(shè)計(jì)測(cè)試用例:

(1)從交互路徑出發(fā):基于序列圖和協(xié)作圖中的消息流,設(shè)計(jì)測(cè)試步驟,確保覆蓋主要的交互路徑。

(2)考慮異常情況:針對(duì)用例描述中的異常流程和序列圖/協(xié)作圖中的分支條件,設(shè)計(jì)相應(yīng)的異常測(cè)試用例。

(3)定義輸入和預(yù)期輸出:為每個(gè)測(cè)試用例明確輸入數(shù)據(jù)、執(zhí)行的操作以及預(yù)期的系統(tǒng)響應(yīng)或結(jié)果狀態(tài)。

(4)覆蓋對(duì)象狀態(tài):設(shè)計(jì)測(cè)試用例以驗(yàn)證交互后對(duì)象屬性的變化是否符合預(yù)期。

(5)編寫(xiě)測(cè)試描述:為每個(gè)測(cè)試用例編寫(xiě)清晰的描述,說(shuō)明測(cè)試目的、前提條件、測(cè)試步驟、預(yù)期結(jié)果和實(shí)際結(jié)果。

三、UML應(yīng)用案例分析

(一)案例背景

某企業(yè)需要開(kāi)發(fā)一套在線(xiàn)訂票系統(tǒng),實(shí)現(xiàn)用戶(hù)在線(xiàn)購(gòu)買(mǎi)火車(chē)票、飛機(jī)票和酒店預(yù)訂功能。該系統(tǒng)需要支持用戶(hù)注冊(cè)登錄、搜索可用資源(車(chē)次、航班、房間)、查看詳情、下單支付、訂單管理(查看、取消)等功能。

(二)需求分析

1.創(chuàng)建用例圖:

(1)確定系統(tǒng)邊界:系統(tǒng)邊界包括用戶(hù)界面(Web、移動(dòng)App)和后端服務(wù)。

(2)識(shí)別用例:

用戶(hù)用例:注冊(cè)、登錄、搜索資源(火車(chē)票、飛機(jī)票、酒店)、查看資源詳情、下單、支付、查看訂單、取消訂單、修改訂單信息(如座位)。

管理員用例:管理用戶(hù)信息、管理資源(添加/修改/刪除車(chē)次/航班/房間)、查看訂單列表、處理訂單異常。

(3)定義參與者:

用戶(hù)(User)

管理員(Admin)

(4)繪制用例圖:用戶(hù)作為參與者放在系統(tǒng)邊界外,指向內(nèi)部的多個(gè)用例。管理員也作為參與者指向管理相關(guān)的用例??梢蕴砑雨P(guān)聯(lián)表示用戶(hù)用例和管理員用例的共同點(diǎn)(如都涉及登錄)。

2.編寫(xiě)用例描述(以“搜索資源”為例):

用例名稱(chēng):搜索資源

參與者:用戶(hù)

前置條件:用戶(hù)已登錄或未登錄(登錄后可查看歷史搜索條件)。

基本流程(HappyPath):

1.用戶(hù)進(jìn)入搜索頁(yè)面。

2.用戶(hù)選擇資源類(lèi)型(火車(chē)票/飛機(jī)票/酒店)。

3.用戶(hù)輸入出發(fā)地、目的地、日期/時(shí)間范圍。

4.用戶(hù)點(diǎn)擊“搜索”按鈕。

5.系統(tǒng)根據(jù)輸入條件查詢(xún)數(shù)據(jù)庫(kù)。

6.系統(tǒng)展示符合條件的資源列表(如車(chē)次/航班/酒店)。

7.用戶(hù)選擇一個(gè)資源,點(diǎn)擊“查看詳情”。

異常流程:

輸入條件不完整:系統(tǒng)提示補(bǔ)充必要信息。

未找到符合條件的資源:系統(tǒng)提示“未找到相關(guān)資源,請(qǐng)嘗試調(diào)整條件”。

網(wǎng)絡(luò)錯(cuò)誤:系統(tǒng)提示網(wǎng)絡(luò)連接失敗。

后置條件:用戶(hù)看到搜索結(jié)果頁(yè)面或錯(cuò)誤提示頁(yè)面。

優(yōu)先級(jí):高

3.繪制活動(dòng)圖:

(1)定義起點(diǎn)終點(diǎn):起點(diǎn)為用戶(hù)發(fā)起搜索,終點(diǎn)為看到結(jié)果或錯(cuò)誤頁(yè)面。

(2)識(shí)別主要活動(dòng):輸入搜索條件、選擇資源類(lèi)型、點(diǎn)擊搜索、查詢(xún)數(shù)據(jù)庫(kù)、展示結(jié)果。

(3)確定控制流:使用順序流連接主要活動(dòng)。

(4)添加分支:在“查詢(xún)數(shù)據(jù)庫(kù)”后添加分支,處理“找到資源”和“未找到資源”兩種情況。

(5)添加并發(fā):在“展示結(jié)果”前,可能需要并發(fā)進(jìn)行“加載圖片”和“準(zhǔn)備數(shù)據(jù)摘要”。

(三)系統(tǒng)設(shè)計(jì)

1.創(chuàng)建類(lèi)圖:

(1)識(shí)別核心類(lèi):用戶(hù)(User)、管理員(Admin)、資源(Resource)、火車(chē)票(TrainTicket)、飛機(jī)票(AirTicket)、酒店(Hotel)、訂單(Order)、支付方式(PaymentMethod)、座位(Seat)、評(píng)論(Review)等。

(2)定義類(lèi)屬性和方法:

`User`:`UserID`,`Username`,`Password`,`Email`,`PhoneNumber`,`HistorySearches`,`Orders`.方法:`Login()`,`Logout()`,`PlaceOrder()`,`CancelOrder()`.

`Order`:`OrderID`,`UserID`,`ResourceID`,`ResourceType`,`PaymentStatus`,`OrderDate`,`ResourcesBooked`.方法:`ConfirmPayment()`,`Cancel()`.

`TrainTicket`:`TrainID`,`SeatNumber`,`Price`,`DepartureTime`,`ArrivalTime`,`TrainRoute`.(屬性可能還包括一等座、二等座等)

`AirTicket`:`FlightNumber`,`SeatClass`,`Price`,`Airline`,`DepartureAirport`,`ArrivalAirport`,`DepartureTime`,`ArrivalTime`.(屬性可能還包括商務(wù)艙、經(jīng)濟(jì)艙等)

`Hotel`:`HotelID`,`HotelName`,`Address`,`PricePerNight`,`Amenities`,`Rooms`.(`Rooms`可能聚合`Room`類(lèi))

`Room`:`RoomNumber`,`RoomType`,`Price`,`Availability`.(屬性可能還包括大床房、標(biāo)準(zhǔn)間等)

(3)確定類(lèi)間關(guān)系:

`User`1---`Order`(關(guān)聯(lián),一個(gè)用戶(hù)可以有多個(gè)訂單)

`Order`---1`Resource`(關(guān)聯(lián),一個(gè)訂單對(duì)應(yīng)一個(gè)資源,但類(lèi)型不同,可能需要更復(fù)雜的結(jié)構(gòu)或關(guān)聯(lián)到中間類(lèi))

`Order`---`Seat`(對(duì)于火車(chē)票/飛機(jī)票,一個(gè)訂單可能包含多個(gè)座位)

`Order`1---1`PaymentMethod`(關(guān)聯(lián),一個(gè)訂單使用一種支付方式)

`User`1---`Review`(關(guān)聯(lián),一個(gè)用戶(hù)可以寫(xiě)多個(gè)評(píng)論)

`Hotel`1---`Room`(聚合,酒店包含多個(gè)房間)

`User`1---1`Session`(可能存在,表示用戶(hù)登錄狀態(tài))

`Admin`1---`User`(可能存在,表示管理用戶(hù))

`Admin`1---`Resource`(可能存在,表示管理資源)

(4)設(shè)計(jì)類(lèi)層次結(jié)構(gòu):例如,`Resource`可以作為抽象類(lèi),`TrainTicket`,`AirTicket`,`Hotel`作為其具體子類(lèi),實(shí)現(xiàn)共同的接口(如`IResource`)。

2.繪制對(duì)象圖:選擇一個(gè)用戶(hù)成功搜索并預(yù)訂了一個(gè)火車(chē)票的場(chǎng)景。創(chuàng)建`User`、`Order`、`TrainTicket`、`Seat`等對(duì)象實(shí)例,并連接它們,表示用戶(hù)`張三`創(chuàng)建了`訂單123`,該訂單包含`座位A1`和`座位A2`,關(guān)聯(lián)到`車(chē)次G123`。

3.繪制組件圖:

(1)識(shí)別系統(tǒng)組件:`用戶(hù)界面組件`(Web前端、移動(dòng)App客戶(hù)端)、`業(yè)務(wù)邏輯組件`(訂單處理、支付集成、搜索服務(wù))、`數(shù)據(jù)訪(fǎng)問(wèn)組件`(數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)層)、`外部服務(wù)組件`(支付網(wǎng)關(guān)接口、短信通知服務(wù)接口)。

(2)定義組件接口:`用戶(hù)界面組件`提供`用戶(hù)輸入`和`顯示結(jié)果`接口;`業(yè)務(wù)邏輯組件`提供`處理訂單`、`搜索資源`等接口;`數(shù)據(jù)訪(fǎng)問(wèn)組件`提供`CRUD`操作接口;`外部服務(wù)組件`提供`支付`、`發(fā)送短信`等接口。

(3)確定組件依賴(lài)關(guān)系:`用戶(hù)界面組件`依賴(lài)`業(yè)務(wù)邏輯組件`來(lái)處理用戶(hù)請(qǐng)求;`業(yè)務(wù)邏輯組件`依賴(lài)`數(shù)據(jù)訪(fǎng)問(wèn)組件`來(lái)讀寫(xiě)數(shù)據(jù);`業(yè)務(wù)邏輯組件`依賴(lài)`外部服務(wù)組件`來(lái)完成支付和通知。

(四)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成(輔助):如果使用支持UML的IDE或代碼生成工具,可以根據(jù)類(lèi)圖生成基礎(chǔ)的類(lèi)框架。

2.代碼實(shí)現(xiàn):

(1)遵循類(lèi)圖定義:創(chuàng)建`User`,`Order`,`TrainTicket`等類(lèi),實(shí)現(xiàn)其屬性和方法。例如,實(shí)現(xiàn)`User`的`Login(username,password)`方法,調(diào)用后端服務(wù)驗(yàn)證憑證。

(2)實(shí)現(xiàn)類(lèi)間關(guān)系:實(shí)現(xiàn)`Order`對(duì)`Resource`(或通過(guò)`Seat`)的關(guān)聯(lián),例如在`Order`類(lèi)中添加`TrainTicket`或`List<Seat>`類(lèi)型的屬性。

(3)實(shí)現(xiàn)接口:如果定義了`IResource`接口,實(shí)現(xiàn)`TrainTicket`,`AirTicket`,`Hotel`類(lèi)必須提供`GetResourceDetail()`等方法。

3.代碼調(diào)試:使用IDE調(diào)試功能,結(jié)合序列圖,跟蹤用戶(hù)登錄、搜索資源、下單支付的關(guān)鍵步驟。例如,在`PlaceOrder()`方法中設(shè)置斷點(diǎn),檢查`Order`對(duì)象的屬性是否正確設(shè)置,`Seat`對(duì)象是否被正確分配。

(五)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖(以“下單支付”為例):

(1)選擇測(cè)試場(chǎng)景:用戶(hù)選擇火車(chē)票并完成支付。

(2)確定參與對(duì)象:`用戶(hù)界面`,`用戶(hù)`,`訂單服務(wù)`,`支付網(wǎng)關(guān)`,`訂單數(shù)據(jù)庫(kù)`。

(3)排列對(duì)象生命線(xiàn):從左到右排列。

(4)添加消息:`用戶(hù)界面`發(fā)送`提交訂單請(qǐng)求`給`訂單服務(wù)`;`訂單服務(wù)`創(chuàng)建`訂單對(duì)象`并存入`訂單數(shù)據(jù)庫(kù)`;`訂單服務(wù)`調(diào)用`支付網(wǎng)關(guān)`發(fā)送`支付請(qǐng)求`;`支付網(wǎng)關(guān)`返回`支付結(jié)果`給`訂單服務(wù)`;`訂單服務(wù)`更新`訂單對(duì)象`狀態(tài)并通知`用戶(hù)界面`。

(5)設(shè)計(jì)分支:在收到`支付結(jié)果`后,添加分支處理`支付成功`和`支付失敗`兩種情況。

(6)添加注釋?zhuān)簶?biāo)注關(guān)鍵步驟,如“檢查庫(kù)存”、“記錄交易流水”。

2.創(chuàng)建協(xié)作圖(通信圖):與序列圖類(lèi)似,展示`用戶(hù)界面`、`訂單服務(wù)`、`支付網(wǎng)關(guān)`、`訂單數(shù)據(jù)庫(kù)`之間的消息傳遞關(guān)系和順序,但更側(cè)重于它們之間的協(xié)作結(jié)構(gòu)。

3.設(shè)計(jì)測(cè)試用例:

(1)從交互路徑出發(fā):設(shè)計(jì)測(cè)試用例覆蓋“提交訂單請(qǐng)求”、“創(chuàng)建訂單”、“調(diào)用支付”、“返回支付成功”、“返回支付失敗”等關(guān)鍵消息流。

(2)考慮異常情況:設(shè)計(jì)測(cè)試用例模擬支付網(wǎng)關(guān)超時(shí)、支付參數(shù)錯(cuò)誤、用戶(hù)中途取消支付等情況。

(3)定義輸入和預(yù)期輸出:輸入:有效的訂單信息、有效的支付賬號(hào)。預(yù)期輸出:訂單狀態(tài)變?yōu)椤耙阎Ц丁?,收到支付成功通知。異常輸入:無(wú)效支付賬號(hào)。異常預(yù)期輸出:訂單狀態(tài)為“待支付”,收到支付失敗通知。

(4)覆蓋對(duì)象狀態(tài):檢查`訂單數(shù)據(jù)庫(kù)`中的`訂單對(duì)象`狀態(tài)是否正確更新。

(5)編寫(xiě)測(cè)試描述:詳細(xì)說(shuō)明測(cè)試目的、前置條件、測(cè)試步驟、預(yù)期結(jié)果和實(shí)際結(jié)果記錄。

一、UML方法概述

UML(統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)化的圖形建模語(yǔ)言,用于描述、可視化、構(gòu)建和文檔化軟件密集型系統(tǒng)的產(chǎn)物。在軟件工程中,UML被廣泛應(yīng)用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)階段,幫助開(kāi)發(fā)團(tuán)隊(duì)更好地理解和溝通項(xiàng)目需求,提高開(kāi)發(fā)效率和系統(tǒng)質(zhì)量。

(一)UML的基本組成

1.圖形符號(hào):UML使用一系列標(biāo)準(zhǔn)的圖形符號(hào)來(lái)表示不同的系統(tǒng)元素,如類(lèi)、接口、用例、對(duì)象、關(guān)系等。

2.建模規(guī)則:UML提供了一套嚴(yán)格的建模規(guī)則,確保模型的一致性和可擴(kuò)展性。

3.規(guī)范:UML規(guī)范定義了語(yǔ)言的各種元素和表示方法,確保不同工具和開(kāi)發(fā)人員之間的模型一致性。

(二)UML的主要用途

1.系統(tǒng)分析:通過(guò)UML用例圖和活動(dòng)圖,分析系統(tǒng)需求,明確系統(tǒng)功能和用戶(hù)交互。

2.系統(tǒng)設(shè)計(jì):使用UML類(lèi)圖、對(duì)象圖和組件圖等,設(shè)計(jì)系統(tǒng)架構(gòu)和模塊劃分。

3.系統(tǒng)實(shí)現(xiàn):根據(jù)UML設(shè)計(jì)圖,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能,確保代碼與設(shè)計(jì)一致。

4.系統(tǒng)測(cè)試:利用UML序列圖和協(xié)作圖,模擬系統(tǒng)交互過(guò)程,設(shè)計(jì)測(cè)試用例,提高測(cè)試覆蓋率。

二、UML在軟件工程中的應(yīng)用預(yù)案

(一)需求分析階段

1.創(chuàng)建用例圖:根據(jù)項(xiàng)目需求,識(shí)別系統(tǒng)參與者(Actor)和用例(UseCase),繪制用例圖。

(1)確定系統(tǒng)邊界:明確系統(tǒng)與外部環(huán)境的交互點(diǎn)。

(2)識(shí)別用例:列出系統(tǒng)提供的功能。

(3)定義參與者:列出與系統(tǒng)交互的用戶(hù)或系統(tǒng)。

2.編寫(xiě)用例描述:為每個(gè)用例編寫(xiě)詳細(xì)描述,包括用例名稱(chēng)、參與者、前置條件、基本流程、異常流程等。

3.繪制活動(dòng)圖:根據(jù)用例描述,繪制活動(dòng)圖,展示用例的執(zhí)行流程和系統(tǒng)響應(yīng)。

(二)系統(tǒng)設(shè)計(jì)階段

1.創(chuàng)建類(lèi)圖:根據(jù)用例描述和系統(tǒng)功能,識(shí)別系統(tǒng)中的類(lèi)(Class)及其關(guān)系,繪制類(lèi)圖。

(1)識(shí)別類(lèi):列出系統(tǒng)中的實(shí)體和屬性。

(2)定義關(guān)系:確定類(lèi)之間的關(guān)聯(lián)、依賴(lài)、繼承和聚合關(guān)系。

(3)設(shè)計(jì)方法:為每個(gè)類(lèi)定義方法,描述類(lèi)的行為。

2.繪制對(duì)象圖:根據(jù)類(lèi)圖,創(chuàng)建對(duì)象圖,展示系統(tǒng)在某個(gè)時(shí)刻的狀態(tài)和對(duì)象之間的關(guān)系。

3.繪制組件圖:根據(jù)類(lèi)圖和對(duì)象圖,繪制組件圖,展示系統(tǒng)中的組件及其依賴(lài)關(guān)系。

(三)系統(tǒng)實(shí)現(xiàn)階段

1.代碼生成:根據(jù)類(lèi)圖和組件圖,生成代碼框架,提高開(kāi)發(fā)效率。

2.代碼實(shí)現(xiàn):根據(jù)類(lèi)圖中的方法定義,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能。

3.代碼調(diào)試:利用UML序列圖和協(xié)作圖,模擬系統(tǒng)交互過(guò)程,調(diào)試代碼,確保功能正確。

(四)系統(tǒng)測(cè)試階段

1.創(chuàng)建序列圖:根據(jù)用例描述和類(lèi)圖,繪制序列圖,展示對(duì)象之間的交互順序。

(1)確定對(duì)象:列出參與交互的對(duì)象。

(2)定義消息:確定對(duì)象之間的消息傳遞順序。

(3)設(shè)計(jì)分支和循環(huán):處理異常情況和重復(fù)交互。

2.創(chuàng)建協(xié)作圖:根據(jù)序列圖,繪制協(xié)作圖,展示對(duì)象之間的交互關(guān)系。

3.設(shè)計(jì)測(cè)試用例:根據(jù)序列圖和協(xié)作圖,設(shè)計(jì)測(cè)試用例,覆蓋所有交互路徑和異常情況。

三、UML應(yīng)用案例分析

(一)案例背景

某企業(yè)需要開(kāi)發(fā)一套在線(xiàn)訂票系統(tǒng),實(shí)現(xiàn)用戶(hù)在線(xiàn)購(gòu)買(mǎi)火車(chē)票、飛機(jī)票和酒店預(yù)訂功能。

(二)需求分析

1.創(chuàng)建用例圖:識(shí)別參與者(用戶(hù)、管理員)和用例(訂票、改簽、退款、查詢(xún)、管理)。

2.編寫(xiě)用例描述:詳細(xì)描述每個(gè)用例的流程和系統(tǒng)響應(yīng)。

3.繪制活動(dòng)圖:展示訂票、改簽、退款等核心用例的執(zhí)行流程。

(三)系統(tǒng)設(shè)計(jì)

1.創(chuàng)建類(lèi)圖:識(shí)別系統(tǒng)中的類(lèi)(用戶(hù)、訂單、支付、票務(wù)等)及其關(guān)系。

2.繪制對(duì)象圖:展示系統(tǒng)在用戶(hù)訂票時(shí)的狀態(tài)和對(duì)象之間的關(guān)系。

3.繪制組件圖:展示系統(tǒng)中的組件(用戶(hù)界面、業(yè)務(wù)邏輯、數(shù)據(jù)訪(fǎng)問(wèn)等)及其依賴(lài)關(guān)系。

(四)系統(tǒng)實(shí)現(xiàn)

1.代碼生成:根據(jù)類(lèi)圖和組件圖,生成代碼框架。

2.代碼實(shí)現(xiàn):根據(jù)類(lèi)圖中的方法定義,編寫(xiě)代碼實(shí)現(xiàn)系統(tǒng)功能。

3.代碼調(diào)試:利用序列圖和協(xié)作圖,調(diào)試代碼,確保功能正確。

(五)系統(tǒng)測(cè)試

1.創(chuàng)建序列圖:展示用戶(hù)訂票、改簽、退款等核心用例的交互順序。

2.創(chuàng)建協(xié)作圖:展示對(duì)象之間的交互關(guān)系。

3.設(shè)計(jì)測(cè)試用例:覆蓋所有交互路徑和異常情況,確保系統(tǒng)功能正確。

一、UML方法概述

UML(統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)化的圖形建模語(yǔ)言,用于描述、可視化、構(gòu)建和文檔化軟件密集型系統(tǒng)的產(chǎn)物。在軟件工程中,UML被廣泛應(yīng)用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)階段,幫助開(kāi)發(fā)團(tuán)隊(duì)更好地理解和溝通項(xiàng)目需求,提高開(kāi)發(fā)效率和系統(tǒng)質(zhì)量。

(一)UML的基本組成

1.圖形符號(hào):UML使用一系列標(biāo)準(zhǔn)的圖形符號(hào)來(lái)表示不同的系統(tǒng)元素,這些符號(hào)具有統(tǒng)一的視覺(jué)風(fēng)格,便于理解和交流。

核心元素符號(hào):

類(lèi)(Class):通常用矩形表示,內(nèi)部可劃分區(qū)域表示名稱(chēng)、屬性(Attribute)和方法(Operation)。

接口(Interface):通常用矩形表示,頂部標(biāo)有“<<interface>>”或直接使用預(yù)定義的接口圖標(biāo)。

用例(UseCase):通常用橢圓形表示。

對(duì)象(Object):類(lèi)圖中的具體實(shí)例,用矩形表示,頂部標(biāo)有對(duì)象名和類(lèi)名。

組件(Component):通常用矩形表示,頂部標(biāo)有“<<component>>”。

節(jié)點(diǎn)(Node):表示運(yùn)行環(huán)境的物理實(shí)體,如服務(wù)器、工作站,通常用立方體表示。

aktor(Actor):與系統(tǒng)交互的外部實(shí)體,通常用小人圖標(biāo)表示。

關(guān)系符號(hào):

關(guān)聯(lián)(Association):用實(shí)線(xiàn)表示,可能帶有箭頭(表示方向)或基數(shù)(表示數(shù)量關(guān)系,如1,表示一對(duì)多)。

依賴(lài)(Dependency):用虛線(xiàn)帶箭頭表示,表示一方依賴(lài)另一方,但依賴(lài)性較弱。

泛化(Generalization):用實(shí)線(xiàn)帶空心箭頭表示,表示繼承或分類(lèi)關(guān)系。

實(shí)現(xiàn)(Realization):用虛線(xiàn)帶空心箭頭表示,表示接口被實(shí)現(xiàn)。

聚合(Aggregation):用實(shí)線(xiàn)帶空心菱形表示,表示整體與部分的關(guān)系,部分可以獨(dú)立于整體存在。

組合(Composition):用實(shí)線(xiàn)帶實(shí)心菱形表示,表示整體與部分的關(guān)系,部分不能獨(dú)立于整體存在。

2.建模規(guī)則:UML提供了一套嚴(yán)格的建模規(guī)則,確保模型的一致性、可追溯性和可擴(kuò)展性。這些規(guī)則涵蓋了命名規(guī)范、圖示約定、關(guān)系約束等方面。例如,類(lèi)名通常使用名詞或名詞短語(yǔ),方法名使用動(dòng)詞或動(dòng)詞短語(yǔ),屬性和方法的可見(jiàn)性(public,protected,private)通常通過(guò)帶下劃線(xiàn)的加號(hào)、星號(hào)或減號(hào)來(lái)表示。

3.規(guī)范:UML規(guī)范定義了語(yǔ)言的各種元素、圖示符號(hào)、關(guān)鍵字、建模規(guī)則以及不同圖之間的聯(lián)系,確保不同工具和開(kāi)發(fā)人員之間可以創(chuàng)建和理解一致的UML模型。UML規(guī)范由ObjectManagementGroup(OMG)維護(hù)和發(fā)布。

(二)UML的主要用途

1.系統(tǒng)分析階段:UML在此階段主要用于捕獲和表達(dá)系統(tǒng)需求,幫助分析師和用戶(hù)理解系統(tǒng)邊界、功能需求和非功能需求。

用例圖(UseCaseDiagram):用于識(shí)別系統(tǒng)的外部參與者(Actors)以及他們與系統(tǒng)交互的用例(UseCases),明確系統(tǒng)的范圍和主要功能。繪制步驟包括:識(shí)別參與者、識(shí)別用例、定義用例之間的關(guān)系(包含、擴(kuò)展、泛化)、繪制系統(tǒng)邊界。

活動(dòng)圖(ActivityDiagram):用于描述系統(tǒng)中的業(yè)務(wù)流程或操作流程,展示活動(dòng)的順序、分支、并發(fā)和匯合。繪制步驟包括:定義起點(diǎn)和終點(diǎn)、識(shí)別主要活

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論