用例圖畫法舉例_第1頁
用例圖畫法舉例_第2頁
用例圖畫法舉例_第3頁
用例圖畫法舉例_第4頁
用例圖畫法舉例_第5頁
已閱讀5頁,還剩167頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章

統(tǒng)一建模語言UML

本章內(nèi)容3.1

UML概述

3.2

UML的構(gòu)成3.3

UML的圖3.4

UML的工具軟件要點回顧2/5/202323章統(tǒng)一建模語言UML3.1UML概述3.1.1

UML的產(chǎn)生背景3.1.2什么是UML

3.1.3

UML中的視圖2/5/202333章統(tǒng)一建模語言UML3.1.1UML的產(chǎn)生背景UML是一個通用的可視化建模語言,是用于對軟件進行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)的文檔。1994年Rational軟件公司Rumbaugh與Booch合作,開始合并OMT和Booch方法中使用的概念,并于1995年提出了一個建議。隨后Jacobson也加入了Rational公司,開始與Rumbaugh和Booch一同工作,他們共同致力于設(shè)計統(tǒng)一建模語言。1996年,OMG(ObjectManagementGroup)發(fā)布了向外界征集關(guān)于OO建模標(biāo)準(zhǔn)方法的消息。

Rumbaugh,1991年提出OMT(面向?qū)ο竽P图夹g(shù))2/5/202343章統(tǒng)一建模語言UMLUML被OMG采納為標(biāo)準(zhǔn)UML的三位創(chuàng)始人設(shè)計出一種能被軟件開發(fā)工具提供者、軟件開發(fā)方法學(xué)家和開發(fā)人員這些最終用戶所接受的建模語言。1997年9月他們向OMG提交了UML方法。1997年11月,UML被OMG全體成員一致通過,并被采納為標(biāo)準(zhǔn)。2000年推出了UML1.4版本,2003年推出了UML1.5版本,目前最新的版本是UML2.1。2/5/202353章統(tǒng)一建模語言UML3.1.2什么是UML

1.UML是一種語言

2.UML的主要特點2/5/202363章統(tǒng)一建模語言UML1.UML是一種語言UML定義了一系列的圖形符號來描述軟件系統(tǒng)。它們有嚴格的語義和清晰的語法。圖形符號及其背后的語義和語法組成了一個標(biāo)準(zhǔn),使得軟件開發(fā)的所有相關(guān)人員都能用它來對軟件系統(tǒng)的各個側(cè)面進行描述。模型元素代表OO中的類、對象、消息和關(guān)系等概念,是構(gòu)成圖的最基本的常用概念。2/5/202373章統(tǒng)一建模語言UML靜態(tài)結(jié)構(gòu)、動態(tài)行為UML可描述系統(tǒng)的靜態(tài)結(jié)構(gòu)和動態(tài)行為,從不同但相互聯(lián)系的角度對系統(tǒng)建立的模型可用于不同的目的。UML將系統(tǒng)描述為一些離散的相互作用的對象,通過靜態(tài)結(jié)構(gòu)定義系統(tǒng)中對象的屬性和操作及這些對象之間的相互關(guān)系。動態(tài)行為:定義對象的時間特性和對象為完成目標(biāo)而相互進行通信的機制。2/5/202383章統(tǒng)一建模語言UML2.UML的主要特點①統(tǒng)一的標(biāo)準(zhǔn):UML是被OMG接受為標(biāo)準(zhǔn)的建模語言,越來越多的開發(fā)人員使用UML進行軟件開發(fā),越來越多的廠商支持UML。②面向?qū)ο螅菏侵С諳O軟件開發(fā)的建模語言。③概念明確,建模表示法簡潔,圖形結(jié)構(gòu)清晰,可視化、表示能力強大,容易掌握和使用。④獨立于過程:UML不依賴于特定的軟件開發(fā)過程。2/5/202393章統(tǒng)一建模語言UML3.1.3UML中的視圖0.UML的視圖1.用例視圖(用戶模型視圖)2.邏輯視圖(結(jié)構(gòu)模型視圖)3.交互視圖(行為模型視圖)4.實現(xiàn)視圖(實現(xiàn)模型視圖)5.部署視圖(環(huán)境模型視圖)2/5/2023103章統(tǒng)一建模語言UML0.UML的視圖UML用視圖來表示被建模系統(tǒng)的各個方面,它是在某一個抽象層次上對系統(tǒng)的抽象表示。UML把軟件模型劃分為5個視圖,每一個視圖代表完整系統(tǒng)描述的投影,顯示系統(tǒng)的一個特定方面。每一個視圖又由一種或多種圖構(gòu)成。一個特定視圖中的圖應(yīng)該足夠簡單,便于交流,而且一定要與其他圖和視圖連貫一致,因而所有視圖結(jié)合在一起(通過各自的圖)就描述了系統(tǒng)的完整畫面。2/5/2023113章統(tǒng)一建模語言UMLUML的視圖邏輯(結(jié)構(gòu))視圖實現(xiàn)視圖部署(環(huán)境)視圖交互(行為)視圖用例(用戶)視圖性能、穩(wěn)定性、吞吐率系統(tǒng)拓撲、分布、安裝設(shè)計詞匯、功能描述系統(tǒng)組裝、配置管理2/5/2023123章統(tǒng)一建模語言UML1.用例視圖(用戶模型視圖)由專門描述系統(tǒng)行為的用例組成,是從用戶角度來描述系統(tǒng)所應(yīng)具有的功能。用例視圖所描述的系統(tǒng)功能依靠外部用戶或者另一系統(tǒng)來激活,為用戶或者另一系統(tǒng)提供服務(wù),從而實現(xiàn)用戶或另一系統(tǒng)與糸統(tǒng)的交互。系統(tǒng)實現(xiàn)的最終目標(biāo)是用例視圖中描述的功能。組成:用例圖。使用者:客戶、開發(fā)人員、測試人員。2/5/2023133章統(tǒng)一建模語言UML用例視圖是核心它的內(nèi)容驅(qū)動其他視圖的開發(fā)。系統(tǒng)的最終目標(biāo),即系統(tǒng)將提供的功能在用例視圖中描述。同時該視圖還有其他一些非功能特性的描述,因此,用例視圖對所有其他的視圖產(chǎn)生影響。通過測試用例視圖,可檢驗和最終校驗系統(tǒng)。測試來自:客戶(這是您想要的嗎?)、已完成的系統(tǒng)(系統(tǒng)是按照要求的方式運作的嗎?)。2/5/2023143章統(tǒng)一建模語言UML2.邏輯視圖(結(jié)構(gòu)模型視圖)描述組成系統(tǒng)的類、對象以及它們之間的關(guān)系等靜態(tài)結(jié)構(gòu),用來支持系統(tǒng)的功能需求,即描述系統(tǒng)內(nèi)部的功能是如何設(shè)計的。使用者:開發(fā)人員、設(shè)計人員。它關(guān)注系統(tǒng)的內(nèi)部,既描述系統(tǒng)的靜態(tài)結(jié)構(gòu)(類、對象及它們之間的關(guān)系),也描述系統(tǒng)內(nèi)部的動態(tài)協(xié)作關(guān)系。2/5/2023153章統(tǒng)一建模語言UML邏輯視圖的圖形模型對邏輯視圖的描述在原則上與軟件系統(tǒng)的實現(xiàn)平臺無關(guān)。圖形模型包括:類圖、對象圖、狀態(tài)圖、順序圖、通信圖及活動圖等。2/5/2023163章統(tǒng)一建模語言UML3.交互視圖(行為模型視圖)描述形成系統(tǒng)的并發(fā)與同步機制的線程和進程,關(guān)注重點是系統(tǒng)的性能、易伸縮性和系統(tǒng)的吞吐量等非功能性需求。它利用并發(fā)來描述資源的高效實用、并行執(zhí)行和處理異步事件。使用者:開發(fā)人員。組成:順序圖、通信圖、狀態(tài)圖、活動圖2/5/2023173章統(tǒng)一建模語言UML4.實現(xiàn)視圖(實現(xiàn)模型視圖)用來描述系統(tǒng)的實現(xiàn)模塊、它們之間的依賴關(guān)系以及資源分配情況。主要用于系統(tǒng)配置管理。使用者:開發(fā)人員、系統(tǒng)集成人員。組成:動態(tài)圖(狀態(tài)圖、通信圖、活動圖)和實現(xiàn)圖(組件圖、部署圖)。2/5/2023183章統(tǒng)一建模語言UML5.部署視圖(環(huán)境模型視圖)描述軟件系統(tǒng)在計算機硬件系統(tǒng)和網(wǎng)絡(luò)上的安裝、分發(fā)和分布情況。描述物理系統(tǒng)的拓撲結(jié)構(gòu)。如:計算機和設(shè)備(節(jié)點)及它們之間是如何連接。使用者:開發(fā)人員、系統(tǒng)集成人員、測試人員組成:部署圖部署視圖也包括一個顯示組件如何在物理結(jié)構(gòu)中部署的映射,例如一個程序或?qū)ο笤谀呐_計算機上執(zhí)行。2/5/2023193章統(tǒng)一建模語言UML每種視圖反映系統(tǒng)的一個特定方面,不同人員可以單獨使用其中的每一種視圖,從而可以關(guān)注特定的體系結(jié)構(gòu)問題。每一種UML視圖都是由多個圖組成的,每一種圖都是體系結(jié)構(gòu)某個側(cè)面的表示。2/5/2023203章統(tǒng)一建模語言UML3.2UML的構(gòu)成3.2.1

UML的體系結(jié)構(gòu)3.2.2

UML的模型元素3.2.3

UML的模型圖3.2.4

UML的公用機制2/5/2023213章統(tǒng)一建模語言UML3.2.1UML的體系結(jié)構(gòu)類、接口、協(xié)作、用例、主動類、組件和節(jié)點交互機和狀態(tài)包。整個模型可看成是一個根包,它間接包含模型中所有內(nèi)容。子系統(tǒng)是另一種特殊的包。給建模者提供信息,提供關(guān)于任意信息的文本說明,但沒有語義作用。2/5/2023223章統(tǒng)一建模語言UML3.2.2UML的模型元素模型元素:可以在圖中使用的概念(所有包含語義的元素都是模型元素)。模型元素可以有名字。在UML圖中,模型元素用其相應(yīng)的符號來表示。一個模型元素可以出現(xiàn)在多個不同類型的圖中,在不同的圖中應(yīng)該以何種方式出現(xiàn)須遵循一定的UML規(guī)則。2/5/2023233章統(tǒng)一建模語言UML模型元素的圖形表示⑴模型元素的符號圖例⑵關(guān)系的圖示符號示例2/5/2023243章統(tǒng)一建模語言UML⑴模型元素的符號圖例用于表示模型中的某個概念。類、對象、組(構(gòu))件、節(jié)點、用例、接口等模型元素的符號圖例:2/5/2023253章統(tǒng)一建模語言UML類與對象類是對一組具有相同屬性、相同操作、相同關(guān)系和相同語義對象的描述,一個類實現(xiàn)了一個或多個接口。在圖形上,類用帶有類名、屬性和操作的矩形框來表示。對象是類的實例,其名字有下劃線。2/5/2023263章統(tǒng)一建模語言UML組(構(gòu))件組(構(gòu))件是系統(tǒng)中物理的、可替代的部件,它通常是一個描述了一些邏輯元素的物理包。在圖形上,構(gòu)件用一個帶有小方框的矩形來表示。2/5/2023273章統(tǒng)一建模語言UML節(jié)點是在運行時存在的物理元素。它代表一種可計算的資源,通常具有一定的記憶能力和處理能力。在圖形上,節(jié)點用立方體來表示。2/5/2023283章統(tǒng)一建模語言UML用例用例(usecase)是一組動作序列的描述,系統(tǒng)執(zhí)行這些動作后將產(chǎn)生一個對特定參與者可以觀察且有價值的結(jié)果。在圖形上,用例使用一個通常僅包含其名字的實線橢圓表示。用例描述用戶對系統(tǒng)功能的需求,所有用例合在一起構(gòu)成用例模型,描述系統(tǒng)的功能,回答“系統(tǒng)應(yīng)該為每個用戶做什么”的問題。2/5/2023293章統(tǒng)一建模語言UML用例是一個行為上相關(guān)的步驟序列,既可以時自動的也可以是手工的,其目的是完成一個單一的額業(yè)務(wù)任務(wù)。一個用例代表了系統(tǒng)的一個單一的目標(biāo),描述了為實現(xiàn)此目標(biāo)的活動和用戶交互的一個序列。用例是一種理解和記錄系統(tǒng)需求的出色技術(shù)。一個用例本身并不是一個功能需求,但用例所講述的故事(場景)包含了一個或多個需求。2/5/2023303章統(tǒng)一建模語言UML接口描述了一個類或組(構(gòu))件的一個服務(wù)操作集,亦即定義了元素的外部可見行為。接口定義的是一組操作的描述,而不是操作的實現(xiàn)。在圖形上,接口用一端帶有小圓圈的直線來表示,它通常依附在實現(xiàn)接口的類或組(構(gòu))件之上。2/5/2023313章統(tǒng)一建模語言UML⑵關(guān)系的圖示符號示例模型元素之間的連接關(guān)系也是模型元素。關(guān)系用于表示模型元素之間相互連接的關(guān)系。常見關(guān)系:

關(guān)聯(lián)、聚合、組合、繼承(泛化)、依賴、實現(xiàn)。繼承(泛化)2/5/2023323章統(tǒng)一建模語言UML關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了一組鏈,鏈?zhǔn)怯糜阪溄訉ο蟮摹jP(guān)聯(lián)除可以具有方向外,也可以帶有多重性標(biāo)注和角色名這類修飾符。ProfessorStudent0..*1ProjectEmployee0..*0..1學(xué)生計算機

*1使用2/5/2023333章統(tǒng)一建模語言UML多重性標(biāo)注每個關(guān)聯(lián)的復(fù)雜度或維度,稱其為重數(shù)。重數(shù):定義一個對象/類對應(yīng)相關(guān)對象/類的一個實例關(guān)聯(lián)可能的最小出現(xiàn)次數(shù)和最大出現(xiàn)次數(shù)。1、0..1、0..*、1..*、7..92/5/2023343章統(tǒng)一建模語言UML聚合整體-部分(“ispartof”)聚合是一種特殊的關(guān)聯(lián),它描述了整體和部分之間的結(jié)構(gòu)關(guān)系。指明一種類型的對象是另一種類型的對象的一部分。艦隊、船只;項目組、成員CarWheel0..14ProgramCourse0..*3..*一門課程可與任意數(shù)目(包括0)的課程表相關(guān),但任何一個課程表至少包括3門課程2/5/2023353章統(tǒng)一建模語言UML組合一種強關(guān)聯(lián)關(guān)系,它所描述的“部分”對象是依賴于“整體”對象的。組合可以被看作為一個特殊的聚合。BuildingRoom1*2/5/2023363章統(tǒng)一建模語言UML繼承(泛化)一種特殊(或一般)關(guān)系,特殊元素(子元素)的對象可以替代一般元素(父元素)的對象。子元素可以共享父元素的結(jié)構(gòu)和行為。泛化表示類之間的分類關(guān)系,具有層次。兩棲動物哺乳動物爬行動物馬牛羊動物2/5/2023373章統(tǒng)一建模語言UML依賴是兩個設(shè)施之間的語義關(guān)系,其中一個設(shè)施的變化會影響到另一個設(shè)施的語義,它用一條可帶方向的虛線來表示。課程計劃增加(課程X)刪除(課程X)課程2/5/2023383章統(tǒng)一建模語言UML實現(xiàn)通常在接口和實現(xiàn)它們的類或組(構(gòu))件之間用到這種關(guān)系。2/5/2023393章統(tǒng)一建模語言UML3.2.3UML的模型圖模型通常作為一組圖呈現(xiàn)出來,常用的UML模型圖有9種;靜態(tài)結(jié)構(gòu):類圖、對象圖、組件圖、部署圖;(包圖、組合結(jié)構(gòu)圖)動態(tài)結(jié)構(gòu):用例圖、順序圖、通信圖(協(xié)作圖)、狀態(tài)圖、活動圖;(時間圖、交互概覽圖)2/5/2023403章統(tǒng)一建模語言UMLUML中的靜態(tài)圖和動態(tài)圖用例圖順序圖2/5/2023413章統(tǒng)一建模語言UML3.2.4UML的公用機制1.規(guī)約2.修飾符3.公共劃分4.擴展機制2/5/2023423章統(tǒng)一建模語言UML1.規(guī)約在UML中,每個模型元素的圖形表示法之后都存在一個規(guī)約(規(guī)范說明

),它以文字的形式描述基本模型元素的語法和語義。如,在類的圖符之后就有一個全面描述該類所擁有的屬性、操作和行為的規(guī)約;在視圖上,類的圖符可能僅展示了部分規(guī)約。UML的圖形表示法可視化地描述系統(tǒng),而UML的規(guī)約則用來描述系統(tǒng)的細節(jié)。2/5/2023433章統(tǒng)一建模語言UML2.修飾在圖的模型元素上添加修飾,可為模型元素附加一定的語義。如,類的圖形符號展示了類名、操作和屬性這些最重要的信息。但也可以給類增添修飾符以給出類規(guī)約的細節(jié)。如,用斜體類名表示它是抽象類,用+和#表示屬性和操作的可見性。在UML眾多的修飾符中,注釋是一種最重要的并且能單獨存在的修飾符,它是附加在模型元素或元素集上用來表示約束或注解信息的圖形符號。2/5/2023443章統(tǒng)一建模語言UML修飾符示例斜體類名表明這個類是一個抽象類。它有兩個公共操作、一個保護操作、一個私有操作。指出priority()的算法細節(jié)在文檔exe.doc中。2/5/2023453章統(tǒng)一建模語言UML3.公共劃分UML提供了事物的抽象的描繪和具體的實例兩種兩分法表達,被稱為公共劃分。對象和類使用同樣的圖形符號。類用長方形表示,并用名字加以標(biāo)識,當(dāng)類的名字帶有下劃線時,則它代表該類的一個對象。2/5/2023463章統(tǒng)一建模語言UML4.擴展機制⑴衍型(構(gòu)造型

):對UML的詞匯的擴展,用于創(chuàng)建與已有的模型元素相似且針對特定問題的新種類的模型元素。用書名號括起來的名字表示,其位置在其他元素之上。⑵標(biāo)記值:對UML元素的特性的擴展,用于在模型元素的規(guī)約中創(chuàng)建新的信息。用花括號括起來的字符串表示,其位置在其他元素之下。⑶約束:對UML元素的語義的擴展,用于增加新規(guī)則或修改已有規(guī)則。用花括號括起來的字符串表示,且放在所關(guān)聯(lián)的元素附近或通過依賴關(guān)系連接相應(yīng)元素。2/5/2023473章統(tǒng)一建模語言UML擴展機制示例衍型exception使得Overflow成為一個模型元素EventQueue中版本和作者是標(biāo)記值add上的約束{ordered}使得EvenrQueue中的事件按序排列2/5/2023483章統(tǒng)一建模語言UML3.3模型圖3.3.1用例圖3.3.2類圖3.3.3對象圖3.3.4順序圖(序列圖)3.3.5協(xié)作圖(通信圖)3.3.6狀態(tài)圖3.3.7活動圖3.3.8組件圖(構(gòu)件圖)3.3.9部署圖2/5/2023493章統(tǒng)一建模語言UML3.3.1用例圖

用例圖是把應(yīng)滿足用戶需求的基本功能聚合起來表示的強大工具。構(gòu)建用例圖是通過開發(fā)者與客戶(或最終使用者)共同協(xié)商完成的,他們要反復(fù)討論需求的規(guī)格說明,達成共識,明確系統(tǒng)的基本功能,為以后階段的工作打下基礎(chǔ)。2/5/2023503章統(tǒng)一建模語言UML引入用例的主要目的是:

(2)為系統(tǒng)的功能提供清晰一致的描述,以便為后續(xù)的開發(fā)工作打下良好的交流基礎(chǔ),方便開發(fā)人員傳遞需求的功能。(3)為系統(tǒng)驗證工作打下基礎(chǔ)。通過驗證最終實現(xiàn)的系統(tǒng)能夠執(zhí)行的功能是否與最初需求的功能相一致,保證系統(tǒng)的實用性。(1)確定系統(tǒng)應(yīng)具備哪些功能,這些功能是否滿足系統(tǒng)的需求(開發(fā)者與用戶協(xié)商達成共識的東西)。2/5/2023513章統(tǒng)一建模語言UML用例圖中顯示參與者、用例和用例之間的關(guān)系。用例圖可以包含注釋和約束,還可以包含包,用于將模型中的元素組成更大的模塊。用例圖如上圖所示,參與者用人形圖標(biāo)表示,用例用橢圓符號表示,連線表示它們之間的關(guān)系。2/5/2023523章統(tǒng)一建模語言UML2.參與者(1)參與者的概念

參與者代表與系統(tǒng)交互的任何事物或人,它是指代表某一種特定功能的角色,因此參與者是虛擬的概念,它可以是人,也可以是外部系統(tǒng)或設(shè)備。2/5/2023533章統(tǒng)一建模語言UML1)第一類參與者是真實的人,即用戶,是最常用的參與者,幾乎存在于每一個系統(tǒng)中。命名這類參與者時,應(yīng)當(dāng)按照業(yè)務(wù)而不是位置命名,因為一個人可能有很多業(yè)務(wù)。2/5/2023543章統(tǒng)一建模語言UML2)第二類參與者是其他的系統(tǒng)。3)第三類參與者是一些可以運行的進程,如時間。當(dāng)經(jīng)過一定時間觸發(fā)系統(tǒng)中的某個事件時,時間就成了參與者。2/5/2023553章統(tǒng)一建模語言UML(2)確定參與者(1)誰將使用該系統(tǒng)的主要功能。(2)誰將需要該系統(tǒng)的支持以完成其工作。

(3)誰將需要維護、管理該系統(tǒng),以及保持該系統(tǒng)處于工作狀態(tài)。

(4)與該系統(tǒng)交互的是什么系統(tǒng)。

(5)誰或什么系統(tǒng)對本系統(tǒng)產(chǎn)生的結(jié)果感興趣。

2/5/2023563章統(tǒng)一建模語言UML在對參與者建模的過程中,應(yīng)該注意以下幾點:參與者對于系統(tǒng)而言總是外部的,因此它們可以處于人的控制之外。參與者可以直接或間接地同系統(tǒng)交互,或使用系統(tǒng)提供的服務(wù)以完成某件事務(wù)。參與者表示人和事物與系統(tǒng)發(fā)生交互時所扮演的角色,而不是特定的人或者特定的事物。一個人或事物在與系統(tǒng)發(fā)生交互時,可以同時或不同時扮演多個角色。每個參與者需要一個具有業(yè)務(wù)一樣的名字,在建模中不推薦使用類似于“新參與者”的名字。

2/5/2023573章統(tǒng)一建模語言UML(3)參與者間的關(guān)系

因為參與者是類,所以多個參與者之間可以具有與類之間相同的關(guān)系。在用例圖中,使用繼承關(guān)系來描述多個參與者之間的公共行為。2/5/2023583章統(tǒng)一建模語言UML假設(shè)一個汽車租賃公司,接受客戶的電話預(yù)定和網(wǎng)上預(yù)定。參與者“客戶”描述了參與者“電話客戶”和“網(wǎng)上客戶”所扮演的一般角色。2/5/2023593章統(tǒng)一建模語言UML3.用例(1)用例的概念用例是外部可見的系統(tǒng)功能單元,是對系統(tǒng)行為的動態(tài)描述,它可以促進設(shè)計人員、開發(fā)人員與用戶的溝通,理解正確的需求;還可以劃分系統(tǒng)與外部實體的界限,是系統(tǒng)設(shè)計的起點,是類、對象、操作的來源。2/5/2023603章統(tǒng)一建模語言UML(2)識別用例識別用例最好的方法就是從分析系統(tǒng)的參與者開始,考慮每個參與者是如何使用系統(tǒng)的。2/5/2023613章統(tǒng)一建模語言UML通過回答以下的幾個問題識別用例:特定參與者希望系統(tǒng)提供什么功能。系統(tǒng)是否存儲和檢索信息,如果是,由哪個參與者觸發(fā)。當(dāng)系統(tǒng)發(fā)生改變時,是否通知參與者。是否存在影響系統(tǒng)的外部事件。哪個參與者通知系統(tǒng)這些事件。

2/5/2023623章統(tǒng)一建模語言UML

用例的粒度

不同的設(shè)計者設(shè)計的用例的粒度不同。在建立模型時,要注意選取適中的用例粒度,以避免用例數(shù)目過多或過少。確定用例的過程是對獲取的用例進行提煉和歸納的過程。

選取用例的原則:一個用例應(yīng)該描述一個從頭至尾的完整的功能,用例要與參與者交互。2/5/2023633章統(tǒng)一建模語言UML(3)用例的描述

一個用例是用一個命名的橢圓來表示,但如果沒有對這個用例的具體說明,那么還是不清楚該用例到底會完成什么功能。對于每個用例,都可以用事件流來規(guī)定用例的行為。用例的事件流是對完成用例規(guī)定行為所需要的事件的描述。2/5/2023643章統(tǒng)一建模語言UML

事件流文檔的建立通常是在迭代過程的細化階段進行,事件流的目的是為用例的邏輯流程建立文檔,這個文檔詳細描述系統(tǒng)用戶的工作和系統(tǒng)本身的工作。雖然事件流很詳細,但其仍然是獨立于實現(xiàn)方法的。也就是說,事件流描述的是一個系統(tǒng)“做什么”,而不是“怎么做”。

2/5/2023653章統(tǒng)一建模語言UML每個項目都需要一個創(chuàng)建事件流文檔的標(biāo)準(zhǔn)模版:

X用例XX(用例名)的事件流X.1前提條件X.2后置條件X.3擴充點X.4事件流X.4.1基流X.4.2分支流(可選)X.4.3替代流2/5/2023663章統(tǒng)一建模語言UML(4)用例間的關(guān)系

1)繼承關(guān)系用例間的繼承關(guān)系如同類間的繼承關(guān)系。用例“汽車預(yù)定”有兩個子用例“電話預(yù)定”“網(wǎng)上預(yù)定”。這兩個用例都繼承了父用例的行為,并添加了自己的行為。2/5/2023673章統(tǒng)一建模語言UML2)包含關(guān)系

一個用例可以簡單地包含其他用例具有的行為,并把它所包含的用例行為作為自身行為的一部分,這被稱作包含關(guān)系。

在UML中,包含關(guān)系為虛線箭頭加《include》字樣,箭頭指向被包含的用例。

2/5/2023683章統(tǒng)一建模語言UML本例中,“填寫電子表格”的功能在“網(wǎng)上預(yù)定”過程中使用,不管如何處理“網(wǎng)上預(yù)定”用例,總是要運行“填寫電子表格”用例,因此具有包含關(guān)系。2/5/2023693章統(tǒng)一建模語言UML3)擴充關(guān)系

一個用例可以被定義為基礎(chǔ)用例的增量擴充,這稱作擴充關(guān)系,擴充關(guān)系是把新的行為插入到已有用例中的方法。同一個基礎(chǔ)用例的幾個擴充用例可以在一起應(yīng)用。基礎(chǔ)用例提供了一組擴充點,在這些新的擴充點中可以添加新的行為,而擴充用例提供了一組插入片斷,這些片斷能夠被插入到基礎(chǔ)用例的擴充點上。2/5/2023703章統(tǒng)一建模語言UML基礎(chǔ)用例不必知道擴充用例的任何細節(jié),它僅為其提供擴充點。事實上,基礎(chǔ)用例即使沒有擴充用例也是完整的,這點與包含關(guān)系有所不同。一個用例可能有多個擴充點,每個擴充點也可以出現(xiàn)多次。但是一般情況下,基礎(chǔ)用例的執(zhí)行不會涉及到擴充用例,只有特定的條件發(fā)生,擴充用例才被執(zhí)行。擴充關(guān)系為處理異?;驑?gòu)建靈活的系統(tǒng)框架提供了一種十分有效的方法。2/5/2023713章統(tǒng)一建模語言UML

在UML中,擴充關(guān)系表示為虛線箭頭加《extend》字樣,箭頭指向被擴展的用例(基礎(chǔ)用例)。本例中,基礎(chǔ)用例是“還車”,擴充用例是“交納罰金”。如果一切順利汽車可以被歸還,那么執(zhí)行“還車”用例即可。但是如果超過了還車的時間或汽車受損,按規(guī)定客戶要交納一定的罰金,這就不能執(zhí)行用例提供的常規(guī)動作。2/5/2023723章統(tǒng)一建模語言UML思考:假設(shè)有這樣的需求,在學(xué)生檔案管理中,管理員經(jīng)常需要做3件事:增加一條學(xué)生記錄、修改一條學(xué)生記錄、刪除一條學(xué)生記錄。如果要畫出用例圖,下面哪種方法更合適?AB2/5/2023733章統(tǒng)一建模語言UML

這種類型的問題在進行用例分析時會經(jīng)常遇到,也被稱為CRUD(create,retrieve,update,delete)問題。從捕獲用戶需求的角度考慮,建議采用A方法。采用B方法的一個主要問題是限制了分析人員的思路。雖然從用例圖可以發(fā)現(xiàn),對學(xué)生記錄的操作有增加、修改和刪除,但事實上,用戶的這些操作都是對學(xué)生記錄的管理。解決CRUD問題的要點是從用戶需求的角度考慮,而不要從數(shù)據(jù)處理的角度考慮,這樣就不會得到類似方法B中的用例圖了。2/5/2023743章統(tǒng)一建模語言UML3.3.2類圖用于描述一組類、接口、協(xié)作及它們間的靜態(tài)關(guān)系(即系統(tǒng)的對象結(jié)構(gòu),顯示構(gòu)成系統(tǒng)的對象類,以及那些對象類間的關(guān)系)。在OO系統(tǒng)的建模中,類圖最為常用,它用來闡明系統(tǒng)的靜態(tài)結(jié)構(gòu)。類是對一組具有相同屬性、操作、關(guān)系和語義的對象的描述,其中對類的屬性和操作進行描述時的一個最重要的細節(jié)是它的可見性。2/5/2023753章統(tǒng)一建模語言UML1.類

類是面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。類是對一組具有相同屬性、操作、關(guān)系和語義的對象的描述。這些對象包括了現(xiàn)實世界中的物理實體、商業(yè)事物、邏輯事務(wù)、應(yīng)用事物和行為事物等,甚至也包括了純粹概念性的事物,它們都是類的實例。2/5/2023763章統(tǒng)一建模語言UML類的UML符號表示如下圖所示,即類用矩形表示,并且該矩形被劃分為3個部分:名稱部分、屬性部分、操作部分。頂端的部分存放類的名稱,中間的部分放類的屬性、屬性的類型及其值,底部的部分存放類的操作、操作的參數(shù)表和返回類型。2/5/2023773章統(tǒng)一建模語言UML(1)名稱

類的名稱應(yīng)該來自系統(tǒng)的問題域,并且類的名稱應(yīng)該是一個名詞。類的名稱可以分為簡單名稱和路徑名稱。單獨的名稱即不包含冒號的字符串叫做簡單名;用類所在的包的名稱作為前綴的類名叫做路徑名。2/5/2023783章統(tǒng)一建模語言UML(2)屬性

一個類可以有一個或多個屬性或者根本沒有屬性。屬性描述了為類的所有對象所共有的特性。屬性的選取應(yīng)考慮下列因素:原則上,類的屬性應(yīng)能描述并區(qū)分每個特定的對象。只有與系統(tǒng)有關(guān)的特性才包含在類的屬性中。2/5/2023793章統(tǒng)一建模語言UML類屬性的語法為:

可見性:屬性可以具有不同的可見性。類中屬性的可見性主要包括公有(Public)、私有(Private)和受保護(Protected)3種。在UML中分別表示為“+”“-”“#”。2/5/2023803章統(tǒng)一建模語言UML(3)操作

一個類可以有任何數(shù)量的操作或根本沒有操作。操作是類的所有對象所共有的行為的抽象。操作用于修改、檢索類的屬性或執(zhí)行某些動作。操作通常也被稱為功能或方法,但是它們被約束在類的內(nèi)部,只能作用到該類的對象上。2/5/2023813章統(tǒng)一建模語言UMLUML規(guī)定操作的語法為:

可見性:類的操作的可見性主要包括公有(Public)“+”;私有(Private)“-”;受保護(Protected)“?!薄?/5/2023823章統(tǒng)一建模語言UML2.類之間的關(guān)系類之間的關(guān)系最常用的有4種,分別是表示類之間使用關(guān)系的依賴關(guān)系;表示類之間一般和特殊關(guān)系的類屬關(guān)系;表示對象之間結(jié)構(gòu)關(guān)系的關(guān)聯(lián)關(guān)系;表示類中規(guī)格說明和實現(xiàn)之間關(guān)系的實現(xiàn)關(guān)系。2/5/2023833章統(tǒng)一建模語言UML2/5/2023843章統(tǒng)一建模語言UMLUML中有3種主要的類原型,分別是邊界類、控制類和實體類。在進行面向?qū)ο蠓治龊驮O(shè)計時,如何確定系統(tǒng)中的類是一個比較困難的工作,引入邊界類、控制類和實體類的概念有助于分析和設(shè)計人員確定系統(tǒng)中的類。3.邊界類、控制類、實體類2/5/2023853章統(tǒng)一建模語言UML(1)邊界類(boundaryclass)邊界類位于系統(tǒng)與外界的交界處,用于處理系統(tǒng)與外界的通信。窗體、對話框、報表以及表示通訊協(xié)議的類、直接與外部設(shè)備交互的類、直接與外部系統(tǒng)交互的類等都是邊界類的例子。2/5/2023863章統(tǒng)一建模語言UML(2)控制類(controlclass)控制類是負責(zé)其他類工作的類。每個用例通常有一個控制類,控制用例中的事件順序,控制類也可在多個用例間共用。其他類并不向控制類發(fā)送很多消息,而是由控制類發(fā)出很多消息。2/5/2023873章統(tǒng)一建模語言UML(3)實體類(entityclass)實體類保存要放進持久存儲體的信息。持久存儲體就是數(shù)據(jù)庫、文件等可以永久存儲數(shù)據(jù)的介質(zhì)。通常每個實體類在數(shù)據(jù)庫中有相應(yīng)的表,實體類中的屬性對應(yīng)數(shù)據(jù)庫中表的字段。但這并不意味著實體類和數(shù)據(jù)庫中的表是一一對應(yīng)的。2/5/2023883章統(tǒng)一建模語言UML4.類圖的劃分

雖然在軟件開發(fā)的不同階段都使用類圖,但這些類圖描述了不同層次的抽象。類圖分為3個層次:概念層、說明層和實現(xiàn)層。2/5/2023893章統(tǒng)一建模語言UML概念層類圖描述應(yīng)用領(lǐng)域中的概念,一般這些概念和類有很自然的聯(lián)系,但兩者并沒有直接的映射關(guān)系。說明層類圖描述軟件的接口部分,而不是軟件的實現(xiàn)部分。這個接口可能因為實現(xiàn)環(huán)境、運行特性或者開發(fā)商的不同而有多種不同的實現(xiàn)。實現(xiàn)層類圖真正考慮類的實現(xiàn)問題,提供類的實現(xiàn)細節(jié)。2/5/2023903章統(tǒng)一建模語言UML下圖所示是一個類Circle的3個不同層次的情況:

從圖中可以看出,概念層類圖只有一個類名,說明層類圖有類名、屬性名和方法名,但對屬性沒有類型的說明,對方法的參數(shù)和返回類型也沒有指明,實現(xiàn)層類圖則對類的屬性和方法都有詳細的說明。2/5/2023913章統(tǒng)一建模語言UML5.類圖的構(gòu)造根據(jù)用例描述中的名詞確定類的候選者。根據(jù)邊界類、控制類和實體類的劃分來幫助發(fā)現(xiàn)系統(tǒng)中的類。對領(lǐng)域進行分析,或利用已有的領(lǐng)域分析結(jié)果得到類。參考設(shè)計模式來確定類。根據(jù)某些軟件開發(fā)過程提供的指導(dǎo)原則進行尋找類的工作。2/5/2023923章統(tǒng)一建模語言UML3.3.3對象圖對象圖是類圖的實例,用來描述特定運行時刻一組對象間的關(guān)系。對象圖用于描述交互的靜態(tài)部分,它由參與協(xié)作的有關(guān)對象組成,但不包括在對象之間傳遞的任何消息。對象圖為開發(fā)人員提供對象在某個時間點上的“快照”,不像類圖經(jīng)常使用,但能幫助開發(fā)人員更好的理解系統(tǒng)結(jié)構(gòu)在創(chuàng)建對象圖時,建模人員可以選取所感興趣的對象及其之間的關(guān)系來描述。2/5/2023933章統(tǒng)一建模語言UML對象圖中的建模元素有對象和鏈(link)。對象是類的實例,對象之間的鏈?zhǔn)穷愔g的關(guān)聯(lián)關(guān)系的實例。對象圖可以看作是類圖的一個實例。對象圖的建模元素2/5/2023943章統(tǒng)一建模語言UML類圖和對象圖的區(qū)別

類圖對象圖類具有三個分欄:名稱、屬性和操作對象只有兩個分欄:名稱和屬性在類的名稱分欄中只有類名對象的名稱形式為“對象名:類名”,匿名對象的名稱形式為“:類名”類中列出了操作對象圖中不包含操作,因為對于屬于同一個類的對象而言,其操作是相同的類使用關(guān)聯(lián)連接,關(guān)聯(lián)使用名稱、角色、階元等特征定義。類代表的是對對象的分類,所以必須說明可以參與關(guān)聯(lián)的對象的數(shù)目對象使用鏈連接,鏈擁有名稱、角色,但是沒有階元。對象代表的是單獨的實體,所有的鏈都是一對一的,因此不涉及到階元類的屬性分欄定義了所有屬性的特征對象則只定義了屬性的當(dāng)前值,以用于測試用例或例子中2/5/2023953章統(tǒng)一建模語言UML3.3.4順序圖(時序圖)順序圖表示對象間傳送消息的時間順序。順序圖用來描述對象之間消息發(fā)送的先后次序,闡明對象之間的交互過程以及在系統(tǒng)執(zhí)行過程中的某一具體時刻將會發(fā)生什么事件。是一種強調(diào)時間順序的交互圖,可用來進行一個場景說明,即一個事務(wù)的歷史過程。2/5/2023963章統(tǒng)一建模語言UML在時序圖中的水平方向為對象維,沿水平方向排列的是參與交互的對象。時序圖的垂直方向為時間維,沿垂直向下方向按時間遞增順序列出各對象所發(fā)出和接收的消息。

在UML中,時序圖將交互關(guān)系表示為一個二維圖。2/5/2023973章統(tǒng)一建模語言UML時序圖中包括的建模元素有:對象(參與者實例也是對象)、生命線(lifeline)、控制焦點(focusofcontrol,FOC)、消息(message)等。2/5/2023983章統(tǒng)一建模語言UML

其中垂直虛線是對象的生命線,用于表示在某段時間內(nèi)對象是存在的。

時序圖中的對象用一個帶有垂直虛線的矩形框表示。下圖表示了三種不同的命名方式。

(1)對象2/5/2023993章統(tǒng)一建模語言UML

控制焦點是時序圖中表示時間段的符號,在這個時間段內(nèi),對象將執(zhí)行相應(yīng)的操作。控制焦點表示為生命線上的小矩形。(2)控制焦點2/5/20231003章統(tǒng)一建模語言UML消息用從一個對象的生命線到另一個對象生命線的直線箭頭表示。箭頭實線以時間順序在圖中從上到下排列。消息在生命線上所處的位置并不是消息發(fā)生的準(zhǔn)確時間,只是一個相對的位置。如果一個消息位于另一個消息的上方,只說明它先于另一個消息被發(fā)送。(3)消息消息是從一個對象(發(fā)送者)向另一個或幾個對象(接收者)發(fā)送信號,或由一個對象(發(fā)送者或調(diào)用者)調(diào)用另一個對象(接收者)的操作。2/5/20231013章統(tǒng)一建模語言UML對象的創(chuàng)建和撤銷

時序圖中對象的默認位置是在圖的頂部,如果對象在這個位置上,說明對象在交互開始之前已經(jīng)存在了。如果對象是在交互過程中創(chuàng)建的,那么應(yīng)當(dāng)位于圖的中間部分。2/5/20231023章統(tǒng)一建模語言UML

如果要撤銷一個對象,只要在其生命線終止點放置一個“×”符號即可,該點通常是對刪除或取消消息的回應(yīng)。

2/5/20231033章統(tǒng)一建模語言UML2/5/20231043章統(tǒng)一建模語言UML3.3.5通信圖(協(xié)作圖)通信圖也是一種交互圖,它強調(diào)收發(fā)消息的對象的組織結(jié)構(gòu)。通信圖描述對象間的協(xié)作關(guān)系(與順序圖相似),顯示對象間的動態(tài)合作關(guān)系。通信圖包含3個建模元素:對象(object)、鏈(link)、消息(message)。2/5/20231053章統(tǒng)一建模語言UML(1)對象

通信圖與時序圖中對象的概念是一樣的,只不過在通信圖中,無法像時序圖一樣表示對象的創(chuàng)建和撤銷,所以對象在圖中的位置沒有限制。如下圖所示,圖中的矩形代表的就是對象:2/5/20231063章統(tǒng)一建模語言UML

多對象:由多個對象組成的對象集合,一般這些對象是屬于同一個類的。當(dāng)需要把消息同時發(fā)給多個對象時,使用這個概念。在通信圖中,多對象用多個方框的重疊表示。2/5/20231073章統(tǒng)一建模語言UML(2)鏈通信圖中用鏈(link)來連接對象,而消息顯示在鏈的旁邊,一個鏈上可以有多個消息。2/5/20231083章統(tǒng)一建模語言UML(3)消息通信圖中的消息類型與時序圖中的相同,只不過為了說明交互過程中消息的時間順序,需要給消息添加順序號。順序號是消息的一個數(shù)字前綴,是一個整數(shù),由1開始遞增,每個消息都必須有唯一的順序號。2/5/20231093章統(tǒng)一建模語言UML2/5/20231103章統(tǒng)一建模語言UML時序圖與通信圖的比較

時序圖和通信圖都屬于交互作用圖,都用于描述系統(tǒng)中對象之間的動態(tài)關(guān)系。兩者可以相互轉(zhuǎn)換,但兩者強調(diào)的重點不同。時序圖強調(diào)的是消息的時間順序,而通信圖強調(diào)的是參與交互的對象的組織。在兩個圖所使用的建模元素上,兩者也有各自的特點。時序圖中有對象生命線和控制焦點,通信圖中沒有;通信圖中有鏈,并且通信圖中的消息必須要有消息順序號,但時序圖中沒有這兩個特征。2/5/20231113章統(tǒng)一建模語言UML3.3.6狀態(tài)圖狀態(tài)視圖是一個類對象所經(jīng)歷的所有歷程的模型圖。狀態(tài)由對象的各個狀態(tài)和連接這些狀態(tài)的變遷組成。每個狀態(tài)對一個對象在其生命周期中滿足某種條件的一個時間段建模。當(dāng)一個事件發(fā)生時,它會觸發(fā)狀態(tài)間的變遷,導(dǎo)致對象從一種狀態(tài)轉(zhuǎn)化到另一種新的狀態(tài)。與變遷相關(guān)的活動執(zhí)行時,變遷也同時發(fā)生。狀態(tài)用狀態(tài)圖來表達。在UML中,狀態(tài)圖可用來對一個對象按事件排序的行為建模(建模特定對象的動態(tài)行為,說明對象的生命周期)。2/5/20231123章統(tǒng)一建模語言UML2/5/20231133章統(tǒng)一建模語言UML狀態(tài)

狀態(tài)圖中的狀態(tài)用圓角矩形表示,它由狀態(tài)名、狀態(tài)變量和狀態(tài)活動3部分組成。一般而言,狀態(tài)變量部分是可以省略的,狀態(tài)的活動部分由入口動作、出口動作、內(nèi)部躍遷、延遲事件、內(nèi)部活動、子狀態(tài)構(gòu)成。2/5/20231143章統(tǒng)一建模語言UML入口動作內(nèi)部活動內(nèi)部躍遷出口動作延遲事件狀態(tài)的名字是Lighting。當(dāng)進入這個狀態(tài)時,做開燈(turnOn)動作,離開這個狀態(tài)時,做關(guān)燈(turnOff)動作,當(dāng)對象處于這個狀態(tài)時,燈要閃爍5次(blinkFivetimes),當(dāng)電源關(guān)閉(powerOff)事件出現(xiàn)時,使用自供應(yīng)電源(powerSupplySelf)。需要注意的是,對象在Lighting狀態(tài)時,有一個被延遲處理的事件,即當(dāng)出現(xiàn)自檢(selfTest)事件時,對象將延遲響應(yīng)這個事件。即不在Lighting這個狀態(tài)中處理這個事件,而是延遲到以后在別的狀態(tài)中處理這個事件。2/5/20231153章統(tǒng)一建模語言UML(1)入口/出口動作入口動作和出口動作表示進入或退出某個狀態(tài)所要執(zhí)行的動作。入口動作用“entry/要執(zhí)行的動作”表達,而出口動作用“exit/要執(zhí)行的動作”表達。

2/5/20231163章統(tǒng)一建模語言UML(2)內(nèi)部躍遷內(nèi)部躍遷是沒有引起狀態(tài)變化的躍遷。也就是建模人員有時候需要在不離開一個狀態(tài)的情況下處理一些事情,內(nèi)部躍遷和自躍遷不同。在自躍遷中,躍遷首先離開狀態(tài),然后再重新進入同一個狀態(tài);而內(nèi)部躍遷根本沒有離開狀態(tài)。自躍遷在離開狀態(tài)時會執(zhí)行狀態(tài)的出口動作,在躍遷時會執(zhí)行自躍遷動作,在重新進入狀態(tài)時執(zhí)行狀態(tài)入口動作;而內(nèi)部躍遷由于沒有離開狀態(tài),不需要執(zhí)行出口和入口動作,只需要執(zhí)行內(nèi)部躍遷動作。

2/5/20231173章統(tǒng)一建模語言UML(3)延遲事件延遲事件是在當(dāng)前狀態(tài)的發(fā)生不處理,推遲到事件不再被推遲的另外一個狀態(tài)中才處理,這時延遲事件發(fā)生并可能觸發(fā)躍遷,就好像這些事件剛發(fā)生一樣。通過將事件與特殊動作defer列在一起來表示延遲事件。

2/5/20231183章統(tǒng)一建模語言UML(4)內(nèi)部活動當(dāng)對象處于一個狀態(tài)時,它一般是空閑的,并等待一個事件的發(fā)生。但有時建模人員需要對象在處于某一狀態(tài)時一直做著某些工作,直到被一個事件中斷為止。這時可以使用內(nèi)部活動。內(nèi)部活動在狀態(tài)的入口動作執(zhí)行完畢之后執(zhí)行。如果當(dāng)內(nèi)部活動正在執(zhí)行時有一個躍遷被觸發(fā),那么內(nèi)部活動將被中止,然后執(zhí)行狀態(tài)的出口動作。內(nèi)部活動語法為:do/活動表達式2/5/20231193章統(tǒng)一建模語言UML(5)初始狀態(tài)和最終狀態(tài)初始狀態(tài)和最終狀態(tài)是兩種特殊的狀態(tài)。初始狀態(tài)表示狀態(tài)機的開始,最終狀態(tài)表示狀態(tài)機的執(zhí)行結(jié)束。初始狀態(tài)用實心圓表示,最終狀態(tài)用內(nèi)套實心圓的圓圈表示。

一個狀態(tài)圖只能有一個初態(tài),但終態(tài)可以有一個或多個,也可以沒有終態(tài)。2/5/20231203章統(tǒng)一建模語言UML(6)子狀態(tài)

子狀態(tài)是被嵌套的狀態(tài)。子狀態(tài)包括不相交子狀態(tài)和并發(fā)子狀態(tài)。不含有子狀態(tài)的狀態(tài)被稱為簡單狀態(tài)。含有子狀態(tài)的狀態(tài)被稱為組合狀態(tài)。組合狀態(tài)中也可以有初態(tài)和終態(tài)。

不相交子狀態(tài)也被稱為順序子狀態(tài)。并發(fā)子狀態(tài)是指并發(fā)進行的子狀態(tài)。

2/5/20231213章統(tǒng)一建模語言UML順序子狀態(tài)示例-IC卡電話的使用IC卡電話包括3個基本狀態(tài):使用、未使用和維護。其中使用狀態(tài)是一個組合狀態(tài)。因為IC卡電話不能同時處于兩個不同的子狀態(tài),所以這些子狀態(tài)是順序子狀態(tài)。2/5/20231223章統(tǒng)一建模語言UML并發(fā)子狀態(tài)示例-“運行”的電動車電動車的“運行”狀態(tài)包含了前進和后退兩個不同的子狀態(tài),這兩個子狀態(tài)就是順序子狀態(tài);另一方面,車的運行狀態(tài)又包括高度行駛狀態(tài)與低速行駛狀態(tài)。前進狀態(tài)可以同時為高速行駛或低速行駛,后退狀態(tài)也可以是高速行駛或低速行駛,每兩個狀態(tài)都可以同時存在。這些可以同時出現(xiàn)的狀態(tài)構(gòu)成了運行狀態(tài)的并發(fā)子狀態(tài)。2/5/20231233章統(tǒng)一建模語言UML(7)歷史狀態(tài)當(dāng)離開一個組合狀態(tài)后,又重新進入該組合狀態(tài),并不希望從該組合狀態(tài)的子初始狀態(tài)開始運行,而是直接進入上次離開該組合狀態(tài)時的最后一個活動子狀態(tài),要描述這種情況就需要用到歷史狀態(tài)。歷史狀態(tài)使得含有順序子狀態(tài)的組合狀態(tài)能記住離開該組合狀態(tài)前的最后一個活動子狀態(tài)。歷史狀態(tài)用帶圈的“H”表示。

H如果一個組合狀態(tài)到達了其終態(tài),則會丟失歷史狀態(tài)中的信息,就好像還沒有進入過這個組合狀態(tài)一樣。2/5/20231243章統(tǒng)一建模語言UML這是一個對數(shù)據(jù)進行備份時的狀態(tài)圖,備份時要經(jīng)過Collecting、Copying、CleaningUp等幾個狀態(tài)。如果在進行數(shù)據(jù)備份過程中,有數(shù)據(jù)查詢請求,則可以中斷當(dāng)前的備份工作,然后回到Command狀態(tài)進行查詢操作。查詢結(jié)束后,可以從Command狀態(tài)直接到剛才中斷時退出的狀態(tài)接著進行備份操作。如果剛才是從Copying狀態(tài)被中斷退出的,則現(xiàn)在可以直接從Command狀態(tài)到Copying狀態(tài)。如果希望躍遷激活上次離開組合狀態(tài)時的最后一個活動子狀態(tài),組合狀態(tài)外的這個躍遷應(yīng)該直接躍遷到歷史狀態(tài)中。這個躍遷規(guī)定了躍遷第一次進入時的子狀態(tài)機的初始狀態(tài)。2/5/20231253章統(tǒng)一建模語言UML躍遷

躍遷(Transition)是兩個狀態(tài)間的一種關(guān)系,它表示對象在第一個狀態(tài)將執(zhí)行某些動作,當(dāng)規(guī)定的事件發(fā)生或滿足規(guī)定的條件時,對象進入第二個狀態(tài)。躍遷用從源狀態(tài)到目標(biāo)狀態(tài)的有向?qū)嵕€表示。

躍遷2/5/20231263章統(tǒng)一建模語言UML躍遷由以下部分組成:(1)源狀態(tài)與目標(biāo)狀態(tài)

源狀態(tài)目標(biāo)狀態(tài)2/5/20231273章統(tǒng)一建模語言UML(2)觸發(fā)事件在狀態(tài)圖中,事件表示在某一特定的時間或空間出現(xiàn)的能夠引發(fā)狀態(tài)改變的運動變化。事件可以是信號、調(diào)用、時間的消逝等。

觸發(fā)事件2/5/20231283章統(tǒng)一建模語言UML躍遷也可以是非觸發(fā)的,非觸發(fā)的躍遷也被稱為完成躍遷,當(dāng)源狀態(tài)完成活動時,躍遷被隱式地觸發(fā),也就是說,這種躍遷是由動作完成自動觸發(fā)的,不是由事件觸發(fā)的。源狀態(tài)和目標(biāo)狀態(tài)相同的躍遷是自躍遷。2/5/20231293章統(tǒng)一建模語言UML(3)護衛(wèi)條件護衛(wèi)條件是一個布爾表達式,布爾表達式由方括弧“[]”括起,放在觸發(fā)事件后面。當(dāng)觸發(fā)事件發(fā)生后,求護衛(wèi)表達式的值,如果值為真,躍遷可以觸發(fā);如果值為假,躍遷就不能被觸發(fā)。護衛(wèi)條件2/5/20231303章統(tǒng)一建模語言UML(4)動作動作是一個可執(zhí)行的原子計算。動作可以包括發(fā)送消息給另一個對象、操作調(diào)用、創(chuàng)建或銷毀對象等。動作是原子的,不可中斷的,它的執(zhí)行時間非常短。在躍遷過程中可能會發(fā)生一些動作。動作2/5/20231313章統(tǒng)一建模語言UML當(dāng)一個顧客提交申請信用卡并通過時,帳戶處于“空”狀態(tài)。一旦該客戶收到信用卡并激活時,帳戶處于“激活-無余額”狀態(tài)。當(dāng)顧客用該信用卡交付時,帳戶處于“激活-結(jié)欠余額”狀態(tài)。如果剛好支付了所有的余額,帳戶就處于“激活-無余額”狀態(tài)。如果顧客在1個月后還沒有向銀行支付消費的額度,帳戶就處于“拖欠帳務(wù)”狀態(tài),但在信用卡允許的信用額度里仍可使用。一旦顧客支付了過去所欠的金額,帳戶就處于“激活-無余額”或者“激活-結(jié)欠余額”狀態(tài)。只有余額為0時,顧客才可以注銷帳戶。

2/5/20231323章統(tǒng)一建模語言UML2/5/20231333章統(tǒng)一建模語言UML3.3.7活動圖活動圖是狀態(tài)圖的一種特殊情況,其中幾乎所有或大多數(shù)狀態(tài)都處于活動狀態(tài),而且?guī)缀跛谢虼蠖鄶?shù)變遷都是由源狀態(tài)中活動的完成而觸發(fā)的?;顒訄D本質(zhì)上是一種流程圖,它描述從活動到活動的控制流。2/5/20231343章統(tǒng)一建模語言UML左圖是一個典型的活動圖,圖中含有狀態(tài)、分支、分叉和聯(lián)結(jié)。當(dāng)一個狀態(tài)中的活動完成后,控制自動進入下一個狀態(tài)。整個活動圖起始于起始狀態(tài),終止于結(jié)束狀態(tài)。2/5/20231353章統(tǒng)一建模語言UML組成元素

(1)活動活動是活動圖中最重要的一個元素。一般來說所謂的活動是指人或系統(tǒng)的一連串的執(zhí)行細節(jié)?;顒拥谋硎緢D標(biāo)也是平滑的圓角矩形,并可以在圖標(biāo)中給出入口動作和出口動作等信息。2/5/20231363章統(tǒng)一建模語言UML(2)躍遷當(dāng)活動完成時,控制流立即傳遞給下個活動。躍遷被用來表示從一個活動傳遞到下一個活動的路徑。躍遷同樣也是用簡單的有向線表示。

躍遷2/5/20231373章統(tǒng)一建模語言UML(3)分支

在活動圖中可以含有分支,分支規(guī)定了基于布爾表達式的替換路徑,分支起始于判定。2/5/20231383章統(tǒng)一建模語言UML2/5/20231393章統(tǒng)一建模語言UML可以用活動圖的分支表示循環(huán)結(jié)構(gòu)for(i=1;i<10;i++){ Action(i);}用一個活動來設(shè)置循環(huán)變量的初始值,另一個活動來增加循環(huán)變量的值,用一個分支來判斷循環(huán)是否結(jié)束。2/5/20231403章統(tǒng)一建模語言UML(5)分叉和聯(lián)結(jié)

在UML中,使用同步條來規(guī)定并行控制流的分叉與聯(lián)結(jié)。同步條是一條粗的水平線或垂直線。2/5/20231413章統(tǒng)一建模語言UML分叉表示將單一的控制流分成兩個或多個并發(fā)的控制流。分叉有一個輸入躍遷和多個輸出躍遷,每個輸出代表一個獨立的控制流。在分叉下面,與每個輸出路徑相關(guān)的活動是并行進行的。2/5/20231423章統(tǒng)一建模語言UML聯(lián)結(jié)代表了兩個或多個并發(fā)控制流的同步,聯(lián)結(jié)有多個輸入躍遷和一個輸出躍遷。在聯(lián)結(jié)處,并發(fā)的流同步,也就是說每個流都要等到所有的輸入流到達同步條,然后同步條將多個輸入控制流合并,輸出一個控制流,進而執(zhí)行后面的活動。2/5/20231433章統(tǒng)一建模語言UML分叉和聯(lián)結(jié)應(yīng)該是平衡的,也就是說離開分叉的控制流的數(shù)目應(yīng)該與進入相應(yīng)聯(lián)結(jié)的控制流數(shù)目相等。2/5/20231443章統(tǒng)一建模語言UML2/5/20231453章統(tǒng)一建模語言UML(6)泳道

泳道用于說明某項活動由誰來完成。泳道用矩形框來表示,屬于某個泳道的活動放在該矩形框內(nèi),將對象名放在矩形框的頂部,表示泳道中的活動由該對象負責(zé)。2/5/20231463章統(tǒng)一建模語言UML2/5/20231473章統(tǒng)一建模語言UML(7)對象流

在活動圖中可以出現(xiàn)對象。對象可以作為活動的輸入或輸出?;顒訄D中的對象流表示活動和對象之間的關(guān)系,如一個活動創(chuàng)建對象(作為活動的輸出)或使用對象(作為活動的輸入)等。對象流屬于控制流,所以如果兩個活動之間有對象流,則控制流就不必重復(fù)畫出了。2/5/20231483章統(tǒng)一建模語言UML活動SubmitDefect創(chuàng)建對象Defect,該對象的狀態(tài)是Submitted,活動FixDefect使用處于狀態(tài)Submitted的對象Defect,同時把對象的狀態(tài)改為Fixed狀態(tài)。2/5/20231493章統(tǒng)一建模語言UML(8)活動的分解一個活動可以分為若干個子活動,這些子活動本身又可以組成一個活動圖。不含內(nèi)嵌活動的活動稱之為簡單活動;嵌套了若干活動的活動稱之為組合活動,組合活動有自己的名字和相應(yīng)的子活動圖。2/5/20231503章統(tǒng)一建模語言UML2/5/20231513章統(tǒng)一建模語言UML喝飲料的活動圖2/5/20231523章統(tǒng)一建模語言UML3.3.8組件圖用于描述一組(構(gòu))件之間的組織和依賴關(guān)系,用于建模系統(tǒng)的靜態(tài)實現(xiàn)視圖(可以顯示程序代碼如何分解成模塊)。組(構(gòu))件用虛線連接,表示組(構(gòu))件間的相關(guān)性。組(構(gòu))件可以是可執(zhí)行程序、庫、表、文件和文檔等,它包含了邏輯類或者邏輯類的實現(xiàn)信息,因此邏輯視圖和實現(xiàn)視圖之間存在映射關(guān)系。組(構(gòu))件間也存在依賴關(guān)系,利用它可方便地分析一個組(構(gòu))件的變化會給其他組(構(gòu))件帶來怎樣的影響。組(構(gòu))件圖中也可包括包或子系統(tǒng),它們都用于將模型元素組織成較大的組塊。2/5/20231

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論