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

下載本文檔

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

文檔簡介

第3章

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

本章內(nèi)容3.1

UML概述

3.2

UML的構(gòu)成3.3

UML的圖3.4

UML的工具軟件要點(diǎn)回顧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è)通用的可視化建模語言,是用于對軟件進(jìn)行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)的文檔。1994年Rational軟件公司Rumbaugh與Booch合作,開始合并OMT和Booch方法中使用的概念,并于1995年提出了一個(gè)建議。隨后Jacobson也加入了Rational公司,開始與Rumbaugh和Booch一同工作,他們共同致力于設(shè)計(jì)統(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è)計(jì)出一種能被軟件開發(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的主要特點(diǎn)2/5/202363章統(tǒng)一建模語言UML1.UML是一種語言UML定義了一系列的圖形符號來描述軟件系統(tǒng)。它們有嚴(yán)格的語義和清晰的語法。圖形符號及其背后的語義和語法組成了一個(gè)標(biāo)準(zhǔn),使得軟件開發(fā)的所有相關(guān)人員都能用它來對軟件系統(tǒng)的各個(gè)側(cè)面進(jìn)行描述。模型元素代表OO中的類、對象、消息和關(guān)系等概念,是構(gòu)成圖的最基本的常用概念。2/5/202373章統(tǒng)一建模語言UML靜態(tài)結(jié)構(gòu)、動(dòng)態(tài)行為UML可描述系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為,從不同但相互聯(lián)系的角度對系統(tǒng)建立的模型可用于不同的目的。UML將系統(tǒng)描述為一些離散的相互作用的對象,通過靜態(tài)結(jié)構(gòu)定義系統(tǒng)中對象的屬性和操作及這些對象之間的相互關(guān)系。動(dòng)態(tài)行為:定義對象的時(shí)間特性和對象為完成目標(biāo)而相互進(jìn)行通信的機(jī)制。2/5/202383章統(tǒng)一建模語言UML2.UML的主要特點(diǎn)①統(tǒng)一的標(biāo)準(zhǔn):UML是被OMG接受為標(biāo)準(zhǔn)的建模語言,越來越多的開發(fā)人員使用UML進(jìn)行軟件開發(fā),越來越多的廠商支持UML。②面向?qū)ο螅菏侵С諳O軟件開發(fā)的建模語言。③概念明確,建模表示法簡潔,圖形結(jié)構(gòu)清晰,可視化、表示能力強(qiáng)大,容易掌握和使用。④獨(dú)立于過程:UML不依賴于特定的軟件開發(fā)過程。2/5/202393章統(tǒng)一建模語言UML3.1.3UML中的視圖0.UML的視圖1.用例視圖(用戶模型視圖)2.邏輯視圖(結(jié)構(gòu)模型視圖)3.交互視圖(行為模型視圖)4.實(shí)現(xiàn)視圖(實(shí)現(xiàn)模型視圖)5.部署視圖(環(huán)境模型視圖)2/5/2023103章統(tǒng)一建模語言UML0.UML的視圖UML用視圖來表示被建模系統(tǒng)的各個(gè)方面,它是在某一個(gè)抽象層次上對系統(tǒng)的抽象表示。UML把軟件模型劃分為5個(gè)視圖,每一個(gè)視圖代表完整系統(tǒng)描述的投影,顯示系統(tǒng)的一個(gè)特定方面。每一個(gè)視圖又由一種或多種圖構(gòu)成。一個(gè)特定視圖中的圖應(yīng)該足夠簡單,便于交流,而且一定要與其他圖和視圖連貫一致,因而所有視圖結(jié)合在一起(通過各自的圖)就描述了系統(tǒng)的完整畫面。2/5/2023113章統(tǒng)一建模語言UMLUML的視圖邏輯(結(jié)構(gòu))視圖實(shí)現(xiàn)視圖部署(環(huán)境)視圖交互(行為)視圖用例(用戶)視圖性能、穩(wěn)定性、吞吐率系統(tǒng)拓?fù)洹⒎植?、安裝設(shè)計(jì)詞匯、功能描述系統(tǒng)組裝、配置管理2/5/2023123章統(tǒng)一建模語言UML1.用例視圖(用戶模型視圖)由專門描述系統(tǒng)行為的用例組成,是從用戶角度來描述系統(tǒng)所應(yīng)具有的功能。用例視圖所描述的系統(tǒng)功能依靠外部用戶或者另一系統(tǒng)來激活,為用戶或者另一系統(tǒng)提供服務(wù),從而實(shí)現(xiàn)用戶或另一系統(tǒng)與糸統(tǒng)的交互。系統(tǒng)實(shí)現(xiàn)的最終目標(biāo)是用例視圖中描述的功能。組成:用例圖。使用者:客戶、開發(fā)人員、測試人員。2/5/2023133章統(tǒng)一建模語言UML用例視圖是核心它的內(nèi)容驅(qū)動(dòng)其他視圖的開發(fā)。系統(tǒng)的最終目標(biāo),即系統(tǒng)將提供的功能在用例視圖中描述。同時(shí)該視圖還有其他一些非功能特性的描述,因此,用例視圖對所有其他的視圖產(chǎn)生影響。通過測試用例視圖,可檢驗(yàn)和最終校驗(yàn)系統(tǒng)。測試來自:客戶(這是您想要的嗎?)、已完成的系統(tǒng)(系統(tǒng)是按照要求的方式運(yùn)作的嗎?)。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è)計(jì)的。使用者:開發(fā)人員、設(shè)計(jì)人員。它關(guān)注系統(tǒng)的內(nèi)部,既描述系統(tǒng)的靜態(tài)結(jié)構(gòu)(類、對象及它們之間的關(guān)系),也描述系統(tǒng)內(nèi)部的動(dòng)態(tài)協(xié)作關(guān)系。2/5/2023153章統(tǒng)一建模語言UML邏輯視圖的圖形模型對邏輯視圖的描述在原則上與軟件系統(tǒng)的實(shí)現(xiàn)平臺(tái)無關(guān)。圖形模型包括:類圖、對象圖、狀態(tài)圖、順序圖、通信圖及活動(dòng)圖等。2/5/2023163章統(tǒng)一建模語言UML3.交互視圖(行為模型視圖)描述形成系統(tǒng)的并發(fā)與同步機(jī)制的線程和進(jìn)程,關(guān)注重點(diǎn)是系統(tǒng)的性能、易伸縮性和系統(tǒng)的吞吐量等非功能性需求。它利用并發(fā)來描述資源的高效實(shí)用、并行執(zhí)行和處理異步事件。使用者:開發(fā)人員。組成:順序圖、通信圖、狀態(tài)圖、活動(dòng)圖2/5/2023173章統(tǒng)一建模語言UML4.實(shí)現(xiàn)視圖(實(shí)現(xiàn)模型視圖)用來描述系統(tǒng)的實(shí)現(xiàn)模塊、它們之間的依賴關(guān)系以及資源分配情況。主要用于系統(tǒng)配置管理。使用者:開發(fā)人員、系統(tǒng)集成人員。組成:動(dòng)態(tài)圖(狀態(tài)圖、通信圖、活動(dòng)圖)和實(shí)現(xiàn)圖(組件圖、部署圖)。2/5/2023183章統(tǒng)一建模語言UML5.部署視圖(環(huán)境模型視圖)描述軟件系統(tǒng)在計(jì)算機(jī)硬件系統(tǒng)和網(wǎng)絡(luò)上的安裝、分發(fā)和分布情況。描述物理系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。如:計(jì)算機(jī)和設(shè)備(節(jié)點(diǎn))及它們之間是如何連接。使用者:開發(fā)人員、系統(tǒng)集成人員、測試人員組成:部署圖部署視圖也包括一個(gè)顯示組件如何在物理結(jié)構(gòu)中部署的映射,例如一個(gè)程序或?qū)ο笤谀呐_(tái)計(jì)算機(jī)上執(zhí)行。2/5/2023193章統(tǒng)一建模語言UML每種視圖反映系統(tǒng)的一個(gè)特定方面,不同人員可以單獨(dú)使用其中的每一種視圖,從而可以關(guān)注特定的體系結(jié)構(gòu)問題。每一種UML視圖都是由多個(gè)圖組成的,每一種圖都是體系結(jié)構(gòu)某個(gè)側(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的公用機(jī)制2/5/2023213章統(tǒng)一建模語言UML3.2.1UML的體系結(jié)構(gòu)類、接口、協(xié)作、用例、主動(dòng)類、組件和節(jié)點(diǎn)交互機(jī)和狀態(tài)包。整個(gè)模型可看成是一個(gè)根包,它間接包含模型中所有內(nèi)容。子系統(tǒng)是另一種特殊的包。給建模者提供信息,提供關(guān)于任意信息的文本說明,但沒有語義作用。2/5/2023223章統(tǒng)一建模語言UML3.2.2UML的模型元素模型元素:可以在圖中使用的概念(所有包含語義的元素都是模型元素)。模型元素可以有名字。在UML圖中,模型元素用其相應(yīng)的符號來表示。一個(gè)模型元素可以出現(xiàn)在多個(gè)不同類型的圖中,在不同的圖中應(yīng)該以何種方式出現(xiàn)須遵循一定的UML規(guī)則。2/5/2023233章統(tǒng)一建模語言UML模型元素的圖形表示⑴模型元素的符號圖例⑵關(guān)系的圖示符號示例2/5/2023243章統(tǒng)一建模語言UML⑴模型元素的符號圖例用于表示模型中的某個(gè)概念。類、對象、組(構(gòu))件、節(jié)點(diǎn)、用例、接口等模型元素的符號圖例:2/5/2023253章統(tǒng)一建模語言UML類與對象類是對一組具有相同屬性、相同操作、相同關(guān)系和相同語義對象的描述,一個(gè)類實(shí)現(xiàn)了一個(gè)或多個(gè)接口。在圖形上,類用帶有類名、屬性和操作的矩形框來表示。對象是類的實(shí)例,其名字有下劃線。2/5/2023263章統(tǒng)一建模語言UML組(構(gòu))件組(構(gòu))件是系統(tǒng)中物理的、可替代的部件,它通常是一個(gè)描述了一些邏輯元素的物理包。在圖形上,構(gòu)件用一個(gè)帶有小方框的矩形來表示。2/5/2023273章統(tǒng)一建模語言UML節(jié)點(diǎn)是在運(yùn)行時(shí)存在的物理元素。它代表一種可計(jì)算的資源,通常具有一定的記憶能力和處理能力。在圖形上,節(jié)點(diǎn)用立方體來表示。2/5/2023283章統(tǒng)一建模語言UML用例用例(usecase)是一組動(dòng)作序列的描述,系統(tǒng)執(zhí)行這些動(dòng)作后將產(chǎn)生一個(gè)對特定參與者可以觀察且有價(jià)值的結(jié)果。在圖形上,用例使用一個(gè)通常僅包含其名字的實(shí)線橢圓表示。用例描述用戶對系統(tǒng)功能的需求,所有用例合在一起構(gòu)成用例模型,描述系統(tǒng)的功能,回答“系統(tǒng)應(yīng)該為每個(gè)用戶做什么”的問題。2/5/2023293章統(tǒng)一建模語言UML用例是一個(gè)行為上相關(guān)的步驟序列,既可以時(shí)自動(dòng)的也可以是手工的,其目的是完成一個(gè)單一的額業(yè)務(wù)任務(wù)。一個(gè)用例代表了系統(tǒng)的一個(gè)單一的目標(biāo),描述了為實(shí)現(xiàn)此目標(biāo)的活動(dòng)和用戶交互的一個(gè)序列。用例是一種理解和記錄系統(tǒng)需求的出色技術(shù)。一個(gè)用例本身并不是一個(gè)功能需求,但用例所講述的故事(場景)包含了一個(gè)或多個(gè)需求。2/5/2023303章統(tǒng)一建模語言UML接口描述了一個(gè)類或組(構(gòu))件的一個(gè)服務(wù)操作集,亦即定義了元素的外部可見行為。接口定義的是一組操作的描述,而不是操作的實(shí)現(xiàn)。在圖形上,接口用一端帶有小圓圈的直線來表示,它通常依附在實(shí)現(xiàn)接口的類或組(構(gòu))件之上。2/5/2023313章統(tǒng)一建模語言UML⑵關(guān)系的圖示符號示例模型元素之間的連接關(guān)系也是模型元素。關(guān)系用于表示模型元素之間相互連接的關(guān)系。常見關(guān)系:

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

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

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

):對UML的詞匯的擴(kuò)展,用于創(chuàng)建與已有的模型元素相似且針對特定問題的新種類的模型元素。用書名號括起來的名字表示,其位置在其他元素之上。⑵標(biāo)記值:對UML元素的特性的擴(kuò)展,用于在模型元素的規(guī)約中創(chuàng)建新的信息。用花括號括起來的字符串表示,其位置在其他元素之下。⑶約束:對UML元素的語義的擴(kuò)展,用于增加新規(guī)則或修改已有規(guī)則。用花括號括起來的字符串表示,且放在所關(guān)聯(lián)的元素附近或通過依賴關(guān)系連接相應(yīng)元素。2/5/2023473章統(tǒng)一建模語言UML擴(kuò)展機(jī)制示例衍型exception使得Overflow成為一個(gè)模型元素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活動(dòng)圖3.3.8組件圖(構(gòu)件圖)3.3.9部署圖2/5/2023493章統(tǒng)一建模語言UML3.3.1用例圖

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

(2)為系統(tǒng)的功能提供清晰一致的描述,以便為后續(xù)的開發(fā)工作打下良好的交流基礎(chǔ),方便開發(fā)人員傳遞需求的功能。(3)為系統(tǒng)驗(yàn)證工作打下基礎(chǔ)。通過驗(yàn)證最終實(shí)現(xiàn)的系統(tǒng)能夠執(zhí)行的功能是否與最初需求的功能相一致,保證系統(tǒng)的實(shí)用性。(1)確定系統(tǒng)應(yīng)具備哪些功能,這些功能是否滿足系統(tǒng)的需求(開發(fā)者與用戶協(xié)商達(dá)成共識的東西)。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)第一類參與者是真實(shí)的人,即用戶,是最常用的參與者,幾乎存在于每一個(gè)系統(tǒng)中。命名這類參與者時(shí),應(yīng)當(dāng)按照業(yè)務(wù)而不是位置命名,因?yàn)橐粋€(gè)人可能有很多業(yè)務(wù)。2/5/2023543章統(tǒng)一建模語言UML2)第二類參與者是其他的系統(tǒng)。3)第三類參與者是一些可以運(yùn)行的進(jìn)程,如時(shí)間。當(dāng)經(jīng)過一定時(shí)間觸發(fā)系統(tǒng)中的某個(gè)事件時(shí),時(shí)間就成了參與者。2/5/2023553章統(tǒng)一建模語言UML(2)確定參與者(1)誰將使用該系統(tǒng)的主要功能。(2)誰將需要該系統(tǒng)的支持以完成其工作。

(3)誰將需要維護(hù)、管理該系統(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)該注意以下幾點(diǎn):參與者對于系統(tǒng)而言總是外部的,因此它們可以處于人的控制之外。參與者可以直接或間接地同系統(tǒng)交互,或使用系統(tǒng)提供的服務(wù)以完成某件事務(wù)。參與者表示人和事物與系統(tǒng)發(fā)生交互時(shí)所扮演的角色,而不是特定的人或者特定的事物。一個(gè)人或事物在與系統(tǒng)發(fā)生交互時(shí),可以同時(shí)或不同時(shí)扮演多個(gè)角色。每個(gè)參與者需要一個(gè)具有業(yè)務(wù)一樣的名字,在建模中不推薦使用類似于“新參與者”的名字。

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

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

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

用例的粒度

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

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

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

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

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

X用例XX(用例名)的事件流X.1前提條件X.2后置條件X.3擴(kuò)充點(diǎn)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ù)定”有兩個(gè)子用例“電話預(yù)定”“網(wǎng)上預(yù)定”。這兩個(gè)用例都繼承了父用例的行為,并添加了自己的行為。2/5/2023673章統(tǒng)一建模語言UML2)包含關(guān)系

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

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

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

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

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

這種類型的問題在進(jìn)行用例分析時(shí)會(huì)經(jīng)常遇到,也被稱為CRUD(create,retrieve,update,delete)問題。從捕獲用戶需求的角度考慮,建議采用A方法。采用B方法的一個(gè)主要問題是限制了分析人員的思路。雖然從用例圖可以發(fā)現(xiàn),對學(xué)生記錄的操作有增加、修改和刪除,但事實(shí)上,用戶的這些操作都是對學(xué)生記錄的管理。解決CRUD問題的要點(diǎn)是從用戶需求的角度考慮,而不要從數(shù)據(jù)處理的角度考慮,這樣就不會(huì)得到類似方法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)系和語義的對象的描述,其中對類的屬性和操作進(jìn)行描述時(shí)的一個(gè)最重要的細(xì)節(jié)是它的可見性。2/5/2023753章統(tǒng)一建模語言UML1.類

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

時(shí)序圖和通信圖都屬于交互作用圖,都用于描述系統(tǒng)中對象之間的動(dòng)態(tài)關(guān)系。兩者可以相互轉(zhuǎn)換,但兩者強(qiáng)調(diào)的重點(diǎn)不同。時(shí)序圖強(qiáng)調(diào)的是消息的時(shí)間順序,而通信圖強(qiáng)調(diào)的是參與交互的對象的組織。在兩個(gè)圖所使用的建模元素上,兩者也有各自的特點(diǎn)。時(shí)序圖中有對象生命線和控制焦點(diǎn),通信圖中沒有;通信圖中有鏈,并且通信圖中的消息必須要有消息順序號,但時(shí)序圖中沒有這兩個(gè)特征。2/5/20231113章統(tǒng)一建模語言UML3.3.6狀態(tài)圖狀態(tài)視圖是一個(gè)類對象所經(jīng)歷的所有歷程的模型圖。狀態(tài)由對象的各個(gè)狀態(tài)和連接這些狀態(tài)的變遷組成。每個(gè)狀態(tài)對一個(gè)對象在其生命周期中滿足某種條件的一個(gè)時(shí)間段建模。當(dāng)一個(gè)事件發(fā)生時(shí),它會(huì)觸發(fā)狀態(tài)間的變遷,導(dǎo)致對象從一種狀態(tài)轉(zhuǎn)化到另一種新的狀態(tài)。與變遷相關(guān)的活動(dòng)執(zhí)行時(shí),變遷也同時(shí)發(fā)生。狀態(tài)用狀態(tài)圖來表達(dá)。在UML中,狀態(tài)圖可用來對一個(gè)對象按事件排序的行為建模(建模特定對象的動(dòng)態(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)活動(dòng)3部分組成。一般而言,狀態(tài)變量部分是可以省略的,狀態(tài)的活動(dòng)部分由入口動(dòng)作、出口動(dòng)作、內(nèi)部躍遷、延遲事件、內(nèi)部活動(dòng)、子狀態(tài)構(gòu)成。2/5/20231143章統(tǒng)一建模語言UML入口動(dòng)作內(nèi)部活動(dòng)內(nèi)部躍遷出口動(dòng)作延遲事件狀態(tài)的名字是Lighting。當(dāng)進(jìn)入這個(gè)狀態(tài)時(shí),做開燈(turnOn)動(dòng)作,離開這個(gè)狀態(tài)時(shí),做關(guān)燈(turnOff)動(dòng)作,當(dāng)對象處于這個(gè)狀態(tài)時(shí),燈要閃爍5次(blinkFivetimes),當(dāng)電源關(guān)閉(powerOff)事件出現(xiàn)時(shí),使用自供應(yīng)電源(powerSupplySelf)。需要注意的是,對象在Lighting狀態(tài)時(shí),有一個(gè)被延遲處理的事件,即當(dāng)出現(xiàn)自檢(selfTest)事件時(shí),對象將延遲響應(yīng)這個(gè)事件。即不在Lighting這個(gè)狀態(tài)中處理這個(gè)事件,而是延遲到以后在別的狀態(tài)中處理這個(gè)事件。2/5/20231153章統(tǒng)一建模語言UML(1)入口/出口動(dòng)作入口動(dòng)作和出口動(dòng)作表示進(jìn)入或退出某個(gè)狀態(tài)所要執(zhí)行的動(dòng)作。入口動(dòng)作用“entry/要執(zhí)行的動(dòng)作”表達(dá),而出口動(dòng)作用“exit/要執(zhí)行的動(dòng)作”表達(dá)。

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

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

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

一個(gè)狀態(tài)圖只能有一個(gè)初態(tài),但終態(tài)可以有一個(gè)或多個(gè),也可以沒有終態(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ā)進(jìn)行的子狀態(tài)。

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

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

躍遷(Transition)是兩個(gè)狀態(tài)間的一種關(guān)系,它表示對象在第一個(gè)狀態(tài)將執(zhí)行某些動(dòng)作,當(dāng)規(guī)定的事件發(fā)生或滿足規(guī)定的條件時(shí),對象進(jìn)入第二個(gè)狀態(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)圖中,事件表示在某一特定的時(shí)間或空間出現(xiàn)的能夠引發(fā)狀態(tài)改變的運(yùn)動(dòng)變化。事件可以是信號、調(diào)用、時(shí)間的消逝等。

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

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

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

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

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

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

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

在活動(dòng)圖中可以出現(xiàn)對象。對象可以作為活動(dòng)的輸入或輸出?;顒?dòng)圖中的對象流表示活動(dòng)和對象之間的關(guān)系,如一個(gè)活動(dòng)創(chuàng)建對象(作為活動(dòng)的輸出)或使用對象(作為活動(dòng)的輸入)等。對象流屬于控制流,所以如果兩個(gè)活動(dòng)之間有對象流,則控制流就不必重復(fù)畫出了。2/5/20231483章統(tǒng)一建模語言UML活動(dòng)SubmitDefect創(chuàng)建對象Defect,該對象的狀態(tài)是Submitted,活動(dòng)FixDefect使用處于狀態(tài)Submitted的對象Defect,同時(shí)把對象的狀態(tài)改為Fixed狀態(tài)。2/5/20231493章統(tǒng)一建模語言UML(8)活動(dòng)的分解一個(gè)活動(dòng)可以分為若干個(gè)子活動(dòng),這些子活動(dòng)本身又可以組成一個(gè)活動(dòng)圖。不含內(nèi)嵌活動(dòng)的活動(dòng)稱之為簡單活動(dòng);嵌套了若干活動(dòng)的活動(dòng)稱之為組合活動(dòng),組合活動(dòng)有自己的名字和相應(yīng)的子活動(dòng)圖。2/5/20231503章統(tǒng)一建模語言UML2/5/20231513章統(tǒng)一建模語言UML喝飲料的活動(dòng)圖2/5/20231523章統(tǒng)一建模語言UML3.3.8組件圖用于描述一組(構(gòu))件之間的組織和依賴關(guān)系,用于建模系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖(可以顯示程序代碼如何分解成模塊)。組(構(gòu))件用虛線連接,表示組(構(gòu))件間的相關(guān)性。組(構(gòu))件可以是可執(zhí)行程序、庫、表、文件和文檔等,它包含了邏輯類或者邏輯類的實(shí)現(xiàn)信息,因此邏輯視圖和實(shí)現(xiàn)視圖之間存在映射關(guān)系。組(構(gòu))件間也存在依賴關(guān)系,利用它可方便地分析一個(gè)組(構(gòu))件的變化會(huì)給其他組(構(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論