版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章軟件建模技術(shù)和軟件工程
1.1軟件建模技術(shù)概述1.1.1建模
模型的概念 模型是對(duì)現(xiàn)實(shí)的簡(jiǎn)化。它可以是一個(gè)對(duì)象的微縮表示、是一種用于生產(chǎn)某事物的模式,也可以是一種設(shè)計(jì)或一個(gè)類(lèi)型,還可以是一個(gè)待模仿或仿真的樣例。1.1.1建模建模目的①模型幫助我們按照實(shí)際情況對(duì)系統(tǒng)進(jìn)行可視化。②模型允許我們?cè)敿?xì)說(shuō)明系統(tǒng)。③模型給出了一個(gè)指導(dǎo)我們構(gòu)造系統(tǒng)的模板。④模型對(duì)我們做出的決策進(jìn)行模板化。
1.1.1建模建模原則①要仔細(xì)的選擇模型②每一種模型可以在不同的精度級(jí)別上表示所要開(kāi)發(fā)的系統(tǒng)③模型要與現(xiàn)實(shí)相聯(lián)系④對(duì)一個(gè)重要的系統(tǒng)用一組幾乎獨(dú)立的模型去處理
1.1.1建模使用UML建模
UML的中文意思是統(tǒng)一建模語(yǔ)言(UnifiedModelingLanguage),它是一種通用的可視化建模語(yǔ)言,可用于工程領(lǐng)域特別是軟件工程領(lǐng)域的建模。有了UML,就方便我們對(duì)各種工程進(jìn)行描述和交流。1.1.2UML簡(jiǎn)介
UML發(fā)展歷史
OMT(Rumbaughetal.)BoochOOSE(Jacobsonetal.)UML0.91996UML1.1Nov.1997UML1.4Mar.19991.1.2UML簡(jiǎn)介統(tǒng)一建模語(yǔ)言UML(UnifiedModelingLanguage)是一種通用的可視化建模語(yǔ)言,用于對(duì)軟件進(jìn)行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)的工作文檔。
UML體系包括三個(gè)部分:
①UML基本構(gòu)造塊
②UML規(guī)則
③UML公共機(jī)制。
1.1.2UML簡(jiǎn)介UML的應(yīng)用領(lǐng)域
軟件工程領(lǐng)域
UML同樣也可以用來(lái)描述非軟件領(lǐng)域的系統(tǒng),如機(jī)械系統(tǒng)、企業(yè)機(jī)構(gòu)或業(yè)務(wù)過(guò)程,以及處理復(fù)雜數(shù)據(jù)的信息系統(tǒng)、具有實(shí)時(shí)要求的工業(yè)系統(tǒng)或工業(yè)過(guò)程等。
UML適用于系統(tǒng)開(kāi)發(fā)過(guò)程中從需求規(guī)格描述到系統(tǒng)完成測(cè)試后的不同階段。
1.1.3建模工具rationalrose
啟動(dòng)Rose
創(chuàng)建模型
發(fā)布模型
設(shè)置全局屬性
1.2.1軟件
軟件的概念
軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。 程序是按照事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列; 數(shù)據(jù)是使得程序能夠適當(dāng)?shù)夭僮餍畔⒌臄?shù)據(jù)結(jié)構(gòu); 文檔是描述程序的開(kāi)發(fā)、操作和維護(hù)的文字或圖形資料。
1.2.1軟件軟件的特征:
1.軟件是被開(kāi)發(fā)或設(shè)計(jì)的,而不是被制造的。
2.軟件不會(huì)“磨損”,但會(huì)“退化”。
3.軟件的開(kāi)發(fā)至今尚未擺脫手工藝的開(kāi)發(fā)方式。
4.軟件是復(fù)雜的。1.2.1軟件軟件的分類(lèi):
1.系統(tǒng)軟件
2.支撐軟件
3.應(yīng)用軟件
1.2.2軟件危機(jī)
軟件開(kāi)發(fā)中出現(xiàn)的問(wèn)題歸結(jié)如下:①軟件開(kāi)發(fā)無(wú)計(jì)劃性,進(jìn)度的執(zhí)行和實(shí)際情況有很大差距。②軟件需求分析階段工作做得不充分,前期問(wèn)題不及時(shí)解決,造成后期矛盾的集中暴露。③軟件開(kāi)發(fā)過(guò)程中沒(méi)有統(tǒng)一的規(guī)范指導(dǎo),參與軟件開(kāi)發(fā)的人員各行其事。④軟件產(chǎn)品無(wú)評(píng)測(cè)手段。
1.2.3軟件工程
軟件工程的概念
將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開(kāi)發(fā)、運(yùn)行和維護(hù),即將工程化應(yīng)用于軟件開(kāi)發(fā)。
與軟件工程相關(guān)的工作一般可分為三個(gè)階段:
①定義階段
②開(kāi)發(fā)階段
③支持階段
1.2.3軟件工程軟件生存期的六個(gè)步驟:
①計(jì)劃
②需求分析和定義
③軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))
④編碼
⑤軟件測(cè)試
⑥運(yùn)行和維護(hù)
1.2.3軟件工程軟件生存期模型:
軟件生存期模型是從軟件項(xiàng)目需求定義直至軟件廢棄為止,跨越整個(gè)生存期的系統(tǒng)開(kāi)發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框圖。常見(jiàn)軟件生存期模型:
①瀑布模型
②原型實(shí)現(xiàn)模型
瀑布模型原型實(shí)現(xiàn)模型1.2.4面向?qū)ο筌浖こ谭椒?/p>
面向?qū)ο蟮母拍睢懊嫦驅(qū)ο?對(duì)象+類(lèi)+繼承+通信”。如果一個(gè)軟件系統(tǒng)是使用這樣的概念設(shè)計(jì)和實(shí)現(xiàn)的,就可以認(rèn)為這個(gè)軟件系統(tǒng)是面向?qū)ο蟮?。?duì)象 對(duì)象是一種看問(wèn)題的觀點(diǎn),是對(duì)現(xiàn)實(shí)世界各種真實(shí)事物的一種抽象。一個(gè)對(duì)象是一組屬性和一組操作的集合。類(lèi)
類(lèi)是具有相同屬性、相同操作的一組對(duì)象的集合的抽象描述。每個(gè)對(duì)象都是類(lèi)的實(shí)例。繼承
繼承是使用已存在的定義作為基礎(chǔ)建立新定義的技術(shù)。通信 一個(gè)對(duì)象和另一個(gè)對(duì)象之間,通過(guò)消息來(lái)進(jìn)行通信。消息的傳遞大致等價(jià)于面向過(guò)程方法中的函數(shù)調(diào)用。
1.2.4面向?qū)ο筌浖こ谭椒嫦驅(qū)ο蟮膽?yīng)用開(kāi)發(fā)過(guò)程:
①分析階段
②高層設(shè)計(jì)
③類(lèi)的開(kāi)發(fā)
④實(shí)例化
⑤組裝測(cè)試
⑥應(yīng)用的維護(hù)
1.2.5Rational統(tǒng)一過(guò)程
Rational統(tǒng)一過(guò)程(RationalUnifiedProcessRUP)是一種軟件工程過(guò)程。RUP吸收了許多開(kāi)發(fā)模型的優(yōu)點(diǎn),具有很好的可操作性和實(shí)用性。RUP的構(gòu)架水平軸代表時(shí)間,顯示了過(guò)程的生命周期,包括初始、細(xì)化、構(gòu)造、移交四個(gè)階段。豎直軸代表核心過(guò)程工作流,包括業(yè)務(wù)模型、需求、分析和設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、實(shí)施、配置和變更管理、項(xiàng)目管理、環(huán)境。1.2.5Rational統(tǒng)一過(guò)程RUP體現(xiàn)的現(xiàn)代軟件開(kāi)發(fā)方法(實(shí)踐):
①迭代的開(kāi)發(fā)軟件
②需求管理
③應(yīng)用基于構(gòu)件的構(gòu)架
④建立可視化模型
⑤不斷的驗(yàn)證軟件質(zhì)量
⑥配置管理和變更管理1.2.5Rational統(tǒng)一過(guò)程RUP的模型元素
①工作人員
②活動(dòng)
③制品
④工作流
1.3.1UML事物
事物是對(duì)模型中最有代表性的成分的抽象。UML中有四種事物:1.結(jié)構(gòu)事物(structuralthing)2.行為事物(behavioralthing)3.分組事物(groupingthing)4.注釋事物(annotationalthing)結(jié)構(gòu)事物(structuralthing)
①類(lèi)(class)
類(lèi)是具有相同屬性、相同操作的一組對(duì)象的集合的抽象描述。在圖形上,類(lèi)用一個(gè)矩形來(lái)表示,通常矩形中寫(xiě)有類(lèi)的名稱(chēng)、類(lèi)的屬性和類(lèi)的操作。結(jié)構(gòu)事物(structuralthing)②組件(component)
組件是系統(tǒng)中物理的、可替代的部件,是一個(gè)描述了一些邏輯元素(如類(lèi)、接口)的物理包。在圖形上,組件由一個(gè)帶有小方框的矩形表示。通常在矩形中只寫(xiě)該組件的名字。結(jié)構(gòu)事物(structuralthing)③接口(interface)
接口是描述了一個(gè)類(lèi)或組件的一個(gè)服務(wù)的操作集,或者說(shuō),接口描述了類(lèi)或組件對(duì)外的、可見(jiàn)的動(dòng)作。一個(gè)類(lèi)可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。在圖形上,接口用一個(gè)帶有名稱(chēng)的圓表示。接口很少單獨(dú)存在,而是依附于實(shí)現(xiàn)接口的類(lèi)或組件
結(jié)構(gòu)事物(structuralthing)④協(xié)作(collaboration)
協(xié)作是一組類(lèi)、接口和其它元素的群體,它們共同工作,提供比各組成部分的功能總和更強(qiáng)的合作行為。與組件不同,協(xié)作不能擁有自己的結(jié)構(gòu)事物,而只能引用其它地方定義的類(lèi)、接口、組件、節(jié)點(diǎn)等結(jié)構(gòu)事物,即協(xié)作是系統(tǒng)體系結(jié)構(gòu)中的概念組塊而不是物理組塊。在圖形上,協(xié)作用一個(gè)包含名稱(chēng)的虛線橢圓表示。
結(jié)構(gòu)事物(structuralthing)⑤用例(usecase)
用例是對(duì)一組序列動(dòng)作的描述,系統(tǒng)執(zhí)行這些動(dòng)作將對(duì)用例的參與者(actor,有些書(shū)翻譯成“角色”)產(chǎn)生可以觀察的結(jié)果。在圖形上,用例用實(shí)線的橢圓表示,參與者用一個(gè)人形的圖案表示。
結(jié)構(gòu)事物(structuralthing)⑥節(jié)點(diǎn)(node)
節(jié)點(diǎn)是一個(gè)物理元素,它在運(yùn)行時(shí)存在,代表一個(gè)可計(jì)算的資源,比如說(shuō)一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器。在圖形上,節(jié)點(diǎn)用一個(gè)立方體來(lái)表示。結(jié)構(gòu)事物(structuralthing)⑦主動(dòng)類(lèi)(activeclass)
主動(dòng)類(lèi)能夠啟動(dòng)控制活動(dòng),因?yàn)樗膶?duì)象至少擁有一個(gè)進(jìn)程或線程。在圖形上,主動(dòng)類(lèi)的表示方法和普通類(lèi)相似,也是使用一個(gè)矩形,只是最外面的邊框使用粗線。
行為事物(behavioralthing)
結(jié)構(gòu)事物描述的是模型的靜態(tài)部分,而行為事物描述的是模型的動(dòng)態(tài)部分。一共有兩類(lèi)主要的行為事物。①交互(interaction)
對(duì)象都不是孤立存在的,它們之間通過(guò)傳遞消息進(jìn)行交互。在圖形上,交互的消息通常用帶箭頭的直線表示。
行為事物(behavioralthing)
②狀態(tài)機(jī)(statemachine)
一個(gè)狀態(tài)機(jī)是一個(gè)行為,它說(shuō)明對(duì)象在它的生命周期中響應(yīng)時(shí)間所經(jīng)歷的狀態(tài)序列以及它們對(duì)那些事件的響應(yīng)。狀態(tài)是指在對(duì)象的生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況。一個(gè)事件的到來(lái),能夠觸發(fā)一個(gè)狀態(tài)的轉(zhuǎn)換。
分組事物(groupingthing)分組事物是UML模型中負(fù)責(zé)分組的部分,可以把它看作一個(gè)一個(gè)的盒子,每個(gè)盒子里面的對(duì)象關(guān)系相對(duì)復(fù)雜,而盒子與盒子之間的關(guān)系相對(duì)簡(jiǎn)單。最主要的分組事物是包。
包(package)是把元素組織成組的機(jī)制。結(jié)構(gòu)事物、行為事物甚至其他的分組事物都可以放進(jìn)包內(nèi)。在圖形上,包用一個(gè)在左上角帶有一個(gè)小矩形的大矩形表示。
注釋事物(annotationalthing)
注釋事物是UML模型的解釋部分。這些注釋事物用來(lái)描述、說(shuō)明和標(biāo)注模型的任何元素。有一種主要的注釋事物,稱(chēng)為注解(note)。在圖形上,注解用一個(gè)右上角是折角的矩形表示。1.3.2UML關(guān)系
UML中關(guān)系(relationship)包括四種: 依賴(lài)(dependency)
關(guān)聯(lián)(association)
泛化(generalization)
實(shí)現(xiàn)(realization)。
依賴(lài)關(guān)系
依賴(lài)是兩個(gè)事物間的語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化,會(huì)影響到另一個(gè)事物(依賴(lài)事物)的語(yǔ)義。在圖形上,把一個(gè)依賴(lài)關(guān)系畫(huà)成一條可能有方向的虛線,偶爾在其上還有一個(gè)標(biāo)記。
關(guān)聯(lián)關(guān)系
關(guān)聯(lián)指明了一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間的關(guān)系。在圖形上,關(guān)聯(lián)用一條實(shí)線表示,它可能有方向,偶爾在其上還有一個(gè)標(biāo)記。
泛化關(guān)系
泛化是一種特殊\一般關(guān)系,是一般事物(父類(lèi))和該事物較為特殊的種類(lèi)(子類(lèi))之間的關(guān)系,子類(lèi)繼承父類(lèi)的屬性和操作,除此之外,子類(lèi)通常還添加新的屬性和操作。實(shí)現(xiàn)關(guān)系
實(shí)現(xiàn)關(guān)系將一種模型元素(如類(lèi))與另一種模型元素(如接口)連接起來(lái),其中接口只是行為的定義而不是結(jié)構(gòu)或?qū)崿F(xiàn),也就是說(shuō),關(guān)系中的一個(gè)模型元素只具有行為的定義,而行為的具體實(shí)現(xiàn),則是由另一個(gè)模型元素來(lái)給出。在兩個(gè)地方要遇到實(shí)現(xiàn)關(guān)系:一種是在接口和實(shí)現(xiàn)它們的類(lèi)或組件之間,另一種是在用例和實(shí)現(xiàn)它們的協(xié)作之間。1.3.3UML圖
圖是一組元素的圖形表示。為了對(duì)系統(tǒng)進(jìn)行可視化,可以從不同的角度畫(huà)圖。在理論上,圖可以包含任何事物及其關(guān)系的組合。在UML中包含9類(lèi)圖:
1.類(lèi)圖(classdiagram)2.對(duì)象圖(objectdiagram)3.用例圖(usecasediagram)4.順序圖(sequencediagram)5.協(xié)作圖(collaborationdiagram)6.狀態(tài)圖(statechartdiagram)7.活動(dòng)圖(activitydiagram)8.組件圖(componentdiagram)9.部署圖(deploymentdiagram)1.3.3UML圖1.類(lèi)圖(classdiagram)
類(lèi)圖展現(xiàn)了一組對(duì)象、接口、協(xié)作和它們之間的關(guān)系。類(lèi)圖給出了系統(tǒng)的靜態(tài)設(shè)計(jì)視圖。在面向?qū)ο笙到y(tǒng)的建模中,建立的最常見(jiàn)的圖就是類(lèi)圖。
1.3.3UML圖2.對(duì)象圖(objectdiagram)
對(duì)象圖展現(xiàn)了一組對(duì)象以及它們之間的關(guān)系。和類(lèi)圖類(lèi)似,對(duì)象圖也給出了系統(tǒng)的靜態(tài)設(shè)計(jì)視圖。
1.3.3UML圖3.用例圖(usecasediagram)
用例圖展示了一組用例、參與者以及它們之間的關(guān)系。用例圖給出了系統(tǒng)的靜態(tài)用例視圖。
1.3.3UML圖4.順序圖(sequencediagram)
順序圖是一種強(qiáng)調(diào)消息的時(shí)間順序的交互圖。交互圖(interactiondiagram)是指:它展現(xiàn)了一種交互,由一組對(duì)象和它們之間的關(guān)系組成,包括它們之間可能發(fā)送的消息。交互圖是描述系統(tǒng)的動(dòng)態(tài)視圖。
1.3.3UML圖5.協(xié)作圖(collaborationdiagram)
協(xié)作圖也是一種交互圖,它強(qiáng)調(diào)收發(fā)消息的對(duì)象的組織結(jié)構(gòu)。因?yàn)閰f(xié)作圖和順序圖在結(jié)構(gòu)上是相同的,所以它們是可以互相轉(zhuǎn)換的。
1.3.3UML圖6.狀態(tài)圖(statechartdiagram)
狀態(tài)圖展現(xiàn)了一個(gè)狀態(tài)機(jī),它由狀態(tài)、轉(zhuǎn)換、事件和活動(dòng)組成。狀態(tài)圖是描述系統(tǒng)的動(dòng)態(tài)視圖。狀態(tài)圖對(duì)于接口、類(lèi)或協(xié)作的行為建模非常重要。
1.3.3UML圖7.活動(dòng)圖(activitydiagram)
活動(dòng)圖是一種特殊的狀態(tài)圖,它展現(xiàn)了在系統(tǒng)內(nèi)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程?;顒?dòng)圖是描述系統(tǒng)的動(dòng)態(tài)視圖。它強(qiáng)調(diào)了對(duì)象間的控制流程,因此對(duì)系統(tǒng)的功能建模非常重要。
1.3.3UML圖8.組件圖(componentdiagram)
組件圖展現(xiàn)了一組組件之間的組織和依賴(lài)。組件圖專(zhuān)注于系統(tǒng)的靜態(tài)實(shí)現(xiàn)圖。它與類(lèi)圖是息息相關(guān)的,通常情況下,組件被映射成一個(gè)或多個(gè)類(lèi)、接口或協(xié)作。
1.3.3UML圖9.部署圖(deploymentdiagram)
部署圖展現(xiàn)了在系統(tǒng)運(yùn)行時(shí),進(jìn)行處理的節(jié)點(diǎn)和在節(jié)點(diǎn)上活動(dòng)的組件的配置。部署圖給出了體系結(jié)構(gòu)的靜態(tài)部署視圖。
本節(jié)目標(biāo)理解需求分析與用例圖之間的關(guān)系。掌握參與者、用例、關(guān)系的概念。學(xué)會(huì)通過(guò)分析需求畫(huà)出用例圖。任務(wù)分析本章的項(xiàng)目引入中的系統(tǒng)的需求,確定系統(tǒng)中的參與者和主要用例,并畫(huà)出用例視圖。案例描述
HNS是一所以培養(yǎng)軟件開(kāi)發(fā)人才為目標(biāo)的高等院校,為適應(yīng)IT產(chǎn)業(yè)發(fā)展對(duì)技術(shù)人才的需求,近年來(lái)擴(kuò)大了招生規(guī)模,隨著在校學(xué)生的增加,學(xué)院計(jì)劃改善包括圖書(shū)館在內(nèi)的各項(xiàng)教學(xué)設(shè)施,擬開(kāi)發(fā)《圖書(shū)管理系統(tǒng)》使其可以滿足學(xué)生的要求。
現(xiàn)實(shí)案例
建筑效果圖建筑規(guī)劃圖建筑平面圖需求需求是指系統(tǒng)必須符合的條件或具備的功能。需求問(wèn)題是引起軟件項(xiàng)目的高風(fēng)險(xiǎn)率的最主要原因缺乏需求對(duì)需求的不正確理解需求的不完整需求的變化需求建模如何描述需求?《圖書(shū)管理系統(tǒng)》的需求描述如下:1.新書(shū)入庫(kù):當(dāng)圖書(shū)館新進(jìn)一批新書(shū)時(shí),圖書(shū)管理員需要登記入庫(kù)信息,并為每一本新書(shū)制作一個(gè)圖書(shū)卡(書(shū)目條)。2.借閱者信息維護(hù):包括兩個(gè)方面的工作:一是新讀者的辦證操作,二是讀者基本信息的維護(hù)工作。3.預(yù)約借書(shū):當(dāng)讀者想借閱書(shū)不在時(shí),可以通過(guò)預(yù)約的方式預(yù)定不在庫(kù)的書(shū)籍。4.借書(shū):根據(jù)借閱者提供的書(shū)目編號(hào),辦理借書(shū)手續(xù)。5.還書(shū):根據(jù)借閱者歸還書(shū)籍的書(shū)目編號(hào),辦理歸還手續(xù)。6.圖書(shū)查詢:讀者在借書(shū)前,通過(guò)書(shū)目目錄去查詢所需書(shū)籍的書(shū)目編號(hào)。需求建模如何使用UML對(duì)需求建模呢?如圖:需求建模使用UML對(duì)需求建模的優(yōu)勢(shì)?1、幫助項(xiàng)目人員按照實(shí)際情況對(duì)系統(tǒng)可視化。2、對(duì)系統(tǒng)的描述一目了然,方便與用戶的交流和溝通。3、不易產(chǎn)生二義性,利于系統(tǒng)的分析和設(shè)計(jì)。用例圖用例圖是顯示一組用例、參與者以及它們之間關(guān)系的圖。
用例圖從用戶的角度而不是開(kāi)發(fā)者的角度來(lái)描述對(duì)軟件產(chǎn)品的需求,分析產(chǎn)品所需的功能和動(dòng)態(tài)行為用例圖常用來(lái)對(duì)需求建模,用例圖是至關(guān)重要的,它的正確與否直接影響到客戶對(duì)最終產(chǎn)品的滿意度用例圖的內(nèi)容:參與者用例泛化、擴(kuò)展和包含關(guān)系參與者(Actor)參與者(Actor)是系統(tǒng)外部的一個(gè)人或物,它以某種方式參與了系統(tǒng)的執(zhí)行過(guò)程。參與者對(duì)系統(tǒng)而言總是外部的參與者在系統(tǒng)的不同組成部分可能扮演不同的角色參與者用一個(gè)人形的圖案表示識(shí)別參與者
客戶給銷(xiāo)售員發(fā)來(lái)傳真訂貨,銷(xiāo)售員下班前將當(dāng)日訂貨單匯總輸入系統(tǒng)。誰(shuí)是系統(tǒng)的Actor?答案:銷(xiāo)售員識(shí)別參與者
尋呼臺(tái)系統(tǒng)。用戶如果預(yù)定了天氣預(yù)報(bào),系統(tǒng)每天定時(shí)給他發(fā)天氣消息;如果當(dāng)天氣溫高于35度,還要提醒用戶注意防暑。這個(gè)敘述里,誰(shuí)是尋呼臺(tái)系統(tǒng)的Actor?
用戶?氣溫?時(shí)間?答案:用戶,氣溫,時(shí)間都是Actor識(shí)別參與者
商品銷(xiāo)售系統(tǒng)。顧客通過(guò)網(wǎng)絡(luò)下單之后,系統(tǒng)計(jì)算出總計(jì)金額,稅金,運(yùn)費(fèi),并將數(shù)目傳遞給一個(gè)外掛的會(huì)計(jì)系統(tǒng),該系統(tǒng)是另外購(gòu)買(mǎi)的。有幾個(gè)Actor?答案:顧客(商品銷(xiāo)售系統(tǒng)),商品銷(xiāo)售系統(tǒng)(會(huì)計(jì)系統(tǒng))參與者使用以下問(wèn)題有助于發(fā)現(xiàn)系統(tǒng)的參與者①誰(shuí)使用系統(tǒng)?②誰(shuí)安裝系統(tǒng)、維護(hù)系統(tǒng)?③誰(shuí)啟動(dòng)系統(tǒng)、關(guān)閉系統(tǒng)?④誰(shuí)從系統(tǒng)中獲取信息,誰(shuí)提供信息給系統(tǒng)?⑤在系統(tǒng)交互中,誰(shuí)扮演了什么角色?⑥系統(tǒng)會(huì)與哪些其他系統(tǒng)相關(guān)聯(lián)?用例(UseCase)用例是對(duì)一組序列動(dòng)作的描述,系統(tǒng)執(zhí)行這些動(dòng)作將對(duì)用例的參與者產(chǎn)生可以觀察的結(jié)果。參與者和用例分別描述了“誰(shuí)來(lái)做?”和“做什么?”這兩個(gè)問(wèn)題。用例用實(shí)線的橢圓表示用例識(shí)別用例的最好辦法就是從分析系統(tǒng)的參與者開(kāi)始,考慮每個(gè)參與者是怎樣使用系統(tǒng)。根據(jù)下面的一些問(wèn)題來(lái)識(shí)別用例:①參與者希望系統(tǒng)提供什么功能;②系統(tǒng)是否存儲(chǔ)和檢索信息;③當(dāng)系統(tǒng)改變狀態(tài)時(shí),是否通知參與者;④是否存在影響系統(tǒng)的外部事件,是哪個(gè)參與者通知系統(tǒng)這些外部事件。識(shí)別用例Email客戶端(如:outlookexpress),A在北京發(fā)郵件給深圳的B,系統(tǒng)提醒B”你有新郵件”,B收郵件。識(shí)別用例
一個(gè)論壇類(lèi)的應(yīng)用,用戶可以提問(wèn),別人來(lái)回答,如果有自己?jiǎn)栴}被解答的話,就給發(fā)問(wèn)者發(fā)一份郵件通知。注意:發(fā)郵件這個(gè)用例可以是單獨(dú)的用例,也可以是由回答用例擴(kuò)展出來(lái)的用例用例如何判斷一個(gè)用例是否是一個(gè)優(yōu)秀的用例呢?①用例是否描述了應(yīng)該做什么,而不是如何做?②用例的描述是否采取了參與者的視點(diǎn)?③用例是否對(duì)參與者有價(jià)值?④用例描述的時(shí)間流是否是一個(gè)完整場(chǎng)景?⑤是否所有的參與者、用例都有相應(yīng)的關(guān)聯(lián)用例或關(guān)聯(lián)參與者?用例與事件流用例描述的是參與者與系統(tǒng)之間的對(duì)話,但是這個(gè)對(duì)話的細(xì)節(jié)并沒(méi)有在用例圖中表述出來(lái),針對(duì)每一個(gè)用例我們可以用事件流來(lái)描述這一對(duì)話的細(xì)節(jié)內(nèi)容。事件流可分為:基本事件流、備選事件流用例與事件流銀行自動(dòng)取款機(jī)(ATM)系統(tǒng)中的“提款”用例可以用事件流表述如下提款─基本事件流 基本流步驟1:用戶插入信用卡 基本流步驟2:輸入密碼 基本流步驟3:輸入提款金額 基本流步驟4:提取現(xiàn)金 基本流步驟5:退出系統(tǒng),取回信用卡用例與事件流提款─備選事件流備選流一:用戶可以在基本流中的任何一步選擇退出,轉(zhuǎn)至基本流步驟5。備選流二:在基本流步驟1中,用戶插入無(wú)效信用卡,系統(tǒng)顯示錯(cuò)誤并退出信用卡,用例結(jié)束。備選流三:在基本流步驟2中,用戶輸入錯(cuò)誤密碼,系統(tǒng)顯示錯(cuò)誤并提示用戶重新輸入密碼,重新回到基本流步驟2;三次輸入密碼錯(cuò)誤后,信用卡被系統(tǒng)沒(méi)收,用例結(jié)束。用例之間的關(guān)系
泛化關(guān)系包含關(guān)系擴(kuò)展關(guān)系用例之間的關(guān)系泛化:同一業(yè)務(wù)目的的不同技術(shù)實(shí)現(xiàn)包含:提取公共交互,提高復(fù)用擴(kuò)展:“凍結(jié)”基用例以保持穩(wěn)定
*通過(guò)關(guān)系提高用例復(fù)用泛化(generalization)
當(dāng)多個(gè)用例共同擁有一種類(lèi)似的結(jié)構(gòu)和行為的時(shí)候我們可以將它們的共性抽象成為父用例,其他的用例作為泛化關(guān)系中的子用例。泛化(generalization)泛化舉例(一):
泛化(generalization)泛化舉例(二):包含(include)包含是指基本用例(baseusecase)會(huì)用到包含用例(inclusion),具體地講,就是將包含用例的事件流插入到基礎(chǔ)用例的事件流中。包含用例是可重用的用例──多個(gè)用例的公共用例。
包含(include)包含(include)包含舉例(一):包含(include)包含舉例(二):擴(kuò)展(extend)將擴(kuò)展用例的事件流在一定的條件下按照相應(yīng)的擴(kuò)展點(diǎn)插入到基礎(chǔ)用例中。基礎(chǔ)用例不必知道擴(kuò)展用例的任何細(xì)節(jié),它僅為其提供擴(kuò)展點(diǎn)。擴(kuò)展用例的行為是否被執(zhí)行要取決于主事件流中的判定點(diǎn)。擴(kuò)展(extend)擴(kuò)展(extend)擴(kuò)展舉例(一):擴(kuò)展(extend)擴(kuò)展舉例(二):用例之間的關(guān)系包含用例與擴(kuò)展用例的區(qū)別①相對(duì)于基礎(chǔ)用例,擴(kuò)展用例是可選的,而包含用例則不是。②如果缺少擴(kuò)展用例,基礎(chǔ)用例還是完整的,而缺少包含用例,則基礎(chǔ)用例就不完整了。③擴(kuò)展用例的執(zhí)行需要滿足某種條件,而包含用例不需要。④擴(kuò)展用例的執(zhí)行會(huì)改變基礎(chǔ)用例的行為,而包含用例不會(huì)。任務(wù)解決系統(tǒng)中的主要活動(dòng),如下:①讀者需要借書(shū)籍,需要還書(shū)籍。②讀者可以預(yù)約書(shū)籍,也可以撤消預(yù)約。③管理員根據(jù)讀者要求提供服務(wù)。④管理員可以添加、修改、刪除讀者。⑤管理員可以添加、修改、刪除書(shū)籍。任務(wù)解決1.確定系統(tǒng)參與者 管理員和讀者2.確定系統(tǒng)用例。3.使用RationalRose繪制用例圖。①讀者信息管理用例圖的繪制任務(wù)解決任務(wù)解決②書(shū)籍信息管理用例圖的繪制任務(wù)解決③圖書(shū)館業(yè)務(wù)用例圖的繪制任務(wù)解決④信息查詢用例圖的繪制任務(wù)
根據(jù)HNS的圖書(shū)管理系統(tǒng)開(kāi)發(fā)進(jìn)度,在完成對(duì)系統(tǒng)的需求建模,得到用例模型后,應(yīng)針對(duì)每個(gè)用例進(jìn)行業(yè)務(wù)分析,說(shuō)明其具體的業(yè)務(wù)流程,現(xiàn)系統(tǒng)分析部指派您完成該項(xiàng)任務(wù),要求:用活動(dòng)圖描述系統(tǒng)中已知用例的業(yè)務(wù)過(guò)程:1.描述新增讀者用例2.描述刪除讀者用例活動(dòng)圖的基本概念為什么需要活動(dòng)圖?用于描述活動(dòng)流程的圖形稱(chēng)為活動(dòng)圖活動(dòng)指一個(gè)狀態(tài)機(jī)中進(jìn)行的非原子的執(zhí)行單元,它由一系列的可執(zhí)行的原子計(jì)算組成,這些原子計(jì)算會(huì)導(dǎo)致系統(tǒng)狀態(tài)的改變或返回一個(gè)值。活動(dòng)圖可以算作是狀態(tài)圖一種特殊形式,活動(dòng)圖除了描述對(duì)象狀態(tài)之外,更加突出它的活動(dòng)
活動(dòng)圖的基本概念活動(dòng)圖可以用作以下目的:描述一個(gè)操作執(zhí)行過(guò)程中所完成的工作(動(dòng)作),這是活動(dòng)圖最常見(jiàn)的用途。描述對(duì)象內(nèi)部的工作。顯示如何執(zhí)行一組相關(guān)的動(dòng)作,以及這些動(dòng)作如何影響它們周?chē)膶?duì)象。顯示用例的實(shí)例如何執(zhí)行動(dòng)作以及如何改變對(duì)象狀態(tài)。說(shuō)明一次業(yè)務(wù)流程中的人(參與者)和對(duì)象是如何工作的。
活動(dòng)圖的基本概念活動(dòng)圖中的基本要素包括狀態(tài)、轉(zhuǎn)移、分支、分叉和匯合、泳道、對(duì)象流等狀態(tài)(State)狀態(tài)是指在對(duì)象的生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況?;顒?dòng)圖中的狀態(tài)包括動(dòng)作狀態(tài)和活動(dòng)狀態(tài)?;顒?dòng)圖的基本概念動(dòng)作狀態(tài)對(duì)象的動(dòng)作狀態(tài)是活動(dòng)圖中最小單位的構(gòu)造塊,表示原子動(dòng)作。動(dòng)作狀態(tài)有三個(gè)特性:原子性;不可中斷性:瞬時(shí)性:動(dòng)作狀態(tài)使用帶圓端的方框表示活動(dòng)圖的基本概念活動(dòng)狀態(tài)表示的是可以分割的動(dòng)作特點(diǎn)是:它可以被分解成其他子活動(dòng)或動(dòng)作狀態(tài),它能夠被中斷,占有有限的時(shí)間?;顒?dòng)狀態(tài)可以理解為一個(gè)組合,它的控制流由其他活動(dòng)狀態(tài)或動(dòng)作狀態(tài)組成。圖形表示同動(dòng)作狀態(tài)活動(dòng)圖的基本概念活動(dòng)圖中還有一類(lèi)特殊的狀態(tài),用于表示活動(dòng)的開(kāi)始和結(jié)束,分別稱(chēng)為起始狀態(tài)(startstate)和終止?fàn)顟B(tài)(endstate)。起始狀態(tài)表示一個(gè)工作流程的開(kāi)始,用實(shí)心圓點(diǎn)來(lái)表示終止?fàn)顟B(tài)表示了一個(gè)活動(dòng)圖的最后和終結(jié)狀態(tài),用實(shí)心圓點(diǎn)外加一個(gè)小圓圈來(lái)表示活動(dòng)圖的基本概念轉(zhuǎn)移(transition)
轉(zhuǎn)移是兩個(gè)狀態(tài)間的一種關(guān)系,表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生或某個(gè)特定的條件滿足時(shí)進(jìn)入后繼狀態(tài)。在UML中用一條簡(jiǎn)單的直線表示一個(gè)轉(zhuǎn)移活動(dòng)圖的基本概念示例:打電話活動(dòng)圖的基本概念分支(Branch)分支用于描述基于某個(gè)條件的可選擇路徑。一個(gè)分支可以有一個(gè)進(jìn)入轉(zhuǎn)移和兩個(gè)或多個(gè)輸出轉(zhuǎn)移。在每條輸出轉(zhuǎn)移上都有監(jiān)護(hù)條件表達(dá)式保護(hù),當(dāng)且僅當(dāng)監(jiān)護(hù)條件表達(dá)式為真時(shí),該輸出路徑才有效。在所有輸出轉(zhuǎn)移中,其監(jiān)護(hù)條件不能重疊,而且它們應(yīng)該覆蓋所有的可能性。分支在圖形表示上用菱形表示活動(dòng)圖的基本概念示例2.2.1HNS圖書(shū)館管理系統(tǒng)中需要提供對(duì)用戶信息的修改功能,請(qǐng)使用活動(dòng)圖描述該用例?;顒?dòng)圖的基本概念分叉(fork)和匯合(join)
在UML中使用分叉和匯合表示并行發(fā)生的事件流分叉表示把一個(gè)單獨(dú)的控制流分成兩個(gè)或多個(gè)并發(fā)的控制流。一個(gè)分叉可以有一個(gè)進(jìn)入轉(zhuǎn)移和兩個(gè)或多個(gè)輸出轉(zhuǎn)移,每一個(gè)轉(zhuǎn)移表示一個(gè)獨(dú)立的控制流。匯合表示兩個(gè)或多個(gè)并發(fā)控制流的同步發(fā)生,一個(gè)匯合可以有兩個(gè)或多個(gè)進(jìn)入轉(zhuǎn)移和一個(gè)輸出轉(zhuǎn)移。分叉和匯合應(yīng)該是平衡的分叉和匯合在圖形上都使用同步條來(lái)表示,同步條通常用一條粗的水平線表示活動(dòng)圖的基本概念示例:描述打電話活動(dòng)中的并發(fā)事件活動(dòng)圖的基本概念泳道(swimlane)“泳道”技術(shù),是將一個(gè)活動(dòng)圖中的活動(dòng)狀態(tài)進(jìn)行分組,每一組表示一個(gè)特定的類(lèi)、人或部門(mén),他們負(fù)責(zé)完成組內(nèi)的活動(dòng)?!坝镜馈奔夹g(shù)來(lái)描述每個(gè)活動(dòng)是由哪個(gè)對(duì)象負(fù)責(zé)完成UML中,每個(gè)組被稱(chēng)為一個(gè)泳道,用一條垂直的實(shí)線與鄰居分開(kāi)每個(gè)活動(dòng)都明確屬于一個(gè)泳道,不可以跨越泳道,而轉(zhuǎn)移則可以跨越泳道活動(dòng)圖的基本概念示例2.2.2用活動(dòng)圖描述客戶在商店中購(gòu)買(mǎi)物品的過(guò)程?;顒?dòng)圖的基本概念對(duì)象流(objectstream)包括依賴(lài)關(guān)系和對(duì)象的應(yīng)用被稱(chēng)為對(duì)象流。對(duì)象流是動(dòng)作和對(duì)象間的關(guān)聯(lián)。對(duì)象流可用于對(duì)下列關(guān)系建模:動(dòng)作狀態(tài)對(duì)對(duì)象的使用動(dòng)作狀態(tài)對(duì)對(duì)象的影響。在UML中,使用矩形表示對(duì)象,對(duì)象和動(dòng)作之間使用帶箭頭的虛線連接,帶箭頭的虛線表示對(duì)象流。活動(dòng)圖的基本概念示例2.2.2用活動(dòng)圖描述客戶在商店中購(gòu)買(mǎi)物品的過(guò)程。(使用對(duì)象流技術(shù)描述購(gòu)物這個(gè)動(dòng)態(tài)過(guò)程中系統(tǒng)內(nèi)對(duì)象的狀態(tài)變化)活動(dòng)圖的基本概念活動(dòng)圖的建模技術(shù)活動(dòng)圖用于對(duì)系統(tǒng)的動(dòng)態(tài)行為建模,在對(duì)一個(gè)系統(tǒng)建模時(shí),通常有兩種使用活動(dòng)圖的方式:為工作流建模為對(duì)象的操作建?;顒?dòng)圖的基本概念使用活動(dòng)圖對(duì)系統(tǒng)建模的步驟①確定活動(dòng)圖所關(guān)注的業(yè)務(wù)流程。②確定該業(yè)務(wù)流程中的業(yè)務(wù)對(duì)象。③確定該工作流的起始狀態(tài)和終止?fàn)顟B(tài)。④從該工作流的起始狀態(tài)開(kāi)始,說(shuō)明隨著時(shí)間發(fā)生的動(dòng)作和活動(dòng),并在活動(dòng)圖中把它們表示成活動(dòng)狀態(tài)或動(dòng)作狀態(tài)。⑤將復(fù)雜的動(dòng)作,或多次出現(xiàn)的動(dòng)作集合歸并到一個(gè)活動(dòng)狀態(tài),并對(duì)每個(gè)這樣的活動(dòng)狀態(tài)提供一個(gè)可展開(kāi)的單獨(dú)的活動(dòng)圖。⑥找出連接這些活動(dòng)和動(dòng)作狀態(tài)的轉(zhuǎn)移。⑦如果工作流中涉及重要的對(duì)象,則也把它們加入到活動(dòng)圖中。任務(wù)解決"新增讀者"用例屬于讀者信息管理中的一個(gè)功能,主要用于在系統(tǒng)中增加新的讀者信息,其具體的辦理流程是:
(1)"讀者"填寫(xiě)申請(qǐng)表,并交給"圖書(shū)管理員"; (2)"圖書(shū)管理員"將申請(qǐng)表中的信息通過(guò)錄入界面,輸入到圖書(shū)管理系統(tǒng); (3)系統(tǒng)中的"業(yè)務(wù)邏輯"組件將判斷輸入的信息是否合法; (4)如果不合法則轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(6); (5)顯示"添加錯(cuò)誤信息",轉(zhuǎn)到(8); (6)在數(shù)據(jù)庫(kù)添加相信的用戶信息; (7)顯示"添加成功信息"; (8)結(jié)束。任務(wù)解決精練請(qǐng)您根據(jù)本節(jié)所學(xué)的知識(shí)解決“任務(wù)”中的要求2,繪制“刪除讀者信息”用例的活動(dòng)圖。刪除讀者信息一般按照以下步驟進(jìn)行:(1)管理員在錄入界面,輸入待刪除的讀者名;(2)“業(yè)務(wù)邏輯”組件在數(shù)據(jù)庫(kù)中,查找待刪除的讀者名;(3)如果不存在,則顯示出錯(cuò)信息,返回步驟(1),如果存在則繼續(xù);(4)“業(yè)務(wù)邏輯”組件判斷“待刪除的讀者”是否可以刪除;(5)如果不可以,則顯示出錯(cuò)信息,返回步驟(8),如果可以則繼續(xù);(6)在數(shù)據(jù)庫(kù)中,刪除相關(guān)信息;(7)顯示刪除成功信息;(8)結(jié)束。小結(jié)活動(dòng)圖是UML中用于對(duì)系統(tǒng)的動(dòng)態(tài)方面建模的五種圖中的一種,一張活動(dòng)圖從本質(zhì)上說(shuō)是一個(gè)流程圖,顯示從活動(dòng)到活動(dòng)的控制流多數(shù)情況下,活動(dòng)圖用于對(duì)業(yè)務(wù)過(guò)程中順序和并發(fā)的工作流程進(jìn)行建模?;顒?dòng)圖中的基本要素包括狀態(tài)、轉(zhuǎn)移、分支、分叉和匯合、泳道、對(duì)象流。狀態(tài)是指在對(duì)象的生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況?;顒?dòng)圖中的狀態(tài)包括動(dòng)作狀態(tài)和活動(dòng)狀態(tài)。對(duì)象的動(dòng)作狀態(tài)是活動(dòng)圖中最小單位的構(gòu)造塊,表示原子動(dòng)作。具有原子性、不可中斷性和瞬時(shí)性。小結(jié)(續(xù))活動(dòng)狀態(tài)表示的是可以分割的動(dòng)作。活動(dòng)圖中還有一類(lèi)特殊的狀態(tài),用于表示活動(dòng)的開(kāi)始和結(jié)束,分別稱(chēng)為起始狀態(tài)(startstate)和終止?fàn)顟B(tài)(endstate)。轉(zhuǎn)移表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生或某個(gè)特定的條件滿足時(shí)進(jìn)入后繼狀態(tài)。分支用于描述基于某個(gè)條件的可選擇路徑。分叉表示把一個(gè)單獨(dú)的控制流分成兩個(gè)或多個(gè)并發(fā)的控制流。項(xiàng)目引入HNS軟件學(xué)院開(kāi)發(fā)部在對(duì)圖書(shū)館管理系統(tǒng)需求建模后,進(jìn)入到系統(tǒng)分析和概要設(shè)計(jì)階段。在該階段中,將在需求模型的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行靜態(tài)建模以及動(dòng)態(tài)建模,最后構(gòu)建出圖書(shū)館管理系統(tǒng)的軟件架構(gòu)。這主要體現(xiàn)在對(duì)系統(tǒng)中對(duì)象進(jìn)行抽象成類(lèi),進(jìn)而對(duì)類(lèi)間的相互關(guān)系進(jìn)行建模,而系統(tǒng)內(nèi)部行為建模則是由交互圖進(jìn)行描述。因此,指派您在學(xué)習(xí)完本章內(nèi)容的前提下對(duì)系統(tǒng)進(jìn)行概要設(shè)計(jì)建模。3.1.1事件(Event)事件:它表示對(duì)一個(gè)在時(shí)間和空間上占據(jù)一定位置的有意義的事情的規(guī)格說(shuō)明。事件:也就是指發(fā)生的且引起某些動(dòng)作執(zhí)行的事情。例如,當(dāng)你按下電視機(jī)上的Power按鈕時(shí),電視開(kāi)始播放。其中“按下Power按鈕”就是事件,而事件引起的動(dòng)作就是“開(kāi)始播放”。3.1.1事件(Event)事件可以是內(nèi)部的事件或外部的事件外部事件是在系統(tǒng)和參與者之間傳送的事件。內(nèi)部事件是在系統(tǒng)內(nèi)部的對(duì)象之間傳送的事件。
事件可以分成多種類(lèi)型:信號(hào)調(diào)用事件變化事件時(shí)間事件……信號(hào)信號(hào)(Signal):是作為兩個(gè)對(duì)象之間通信媒介的命名的實(shí)體,信號(hào)的接收是信號(hào)接收對(duì)象的一個(gè)事件。
信號(hào)和簡(jiǎn)單的類(lèi)有許多共同之處,同樣信號(hào)也可以有實(shí)例。 信號(hào)還可以包含在泛化關(guān)系中。同樣信號(hào)可以像類(lèi)一樣,有屬性和操作。 例如計(jì)算機(jī)設(shè)備的中斷信號(hào)就是一般的信號(hào),而鍵盤(pán)中斷信號(hào)就是特殊的信號(hào)。
信號(hào)信號(hào)可以在類(lèi)圖中被聲明為類(lèi),并用關(guān)鍵字《signal》表示,信號(hào)的參數(shù)被聲明為屬性。在UML中,可以將信號(hào)建模為構(gòu)造型化的類(lèi)。用構(gòu)造型為Send的依賴(lài)關(guān)系來(lái)表示一個(gè)操作發(fā)送了一個(gè)特定的信號(hào)。信號(hào)信號(hào)間可以有泛化,信號(hào)可以是其他信號(hào)的子信號(hào),它們繼承父信號(hào)的屬性,并可以觸發(fā)包含信號(hào)類(lèi)型的轉(zhuǎn)換。示例:調(diào)用事件調(diào)用事件(CallEvent)是指一個(gè)對(duì)象對(duì)操作調(diào)用的接收。接收的類(lèi)可以選擇將操作實(shí)現(xiàn)為一個(gè)方法或?qū)崿F(xiàn)為狀態(tài)機(jī)里的一個(gè)調(diào)用事件觸發(fā)器。信號(hào)是一個(gè)異步事件,而調(diào)用事件一般來(lái)說(shuō)是同步的。也就是說(shuō),當(dāng)對(duì)象調(diào)用另一對(duì)象的操作時(shí),控制就從發(fā)送者傳送到接收者,該事件觸發(fā)轉(zhuǎn)換,完成操后,接收者轉(zhuǎn)換到一個(gè)新的狀態(tài),控制返還給發(fā)送者。調(diào)用事件示例3.1.1
如圖變化事件變化事件(changeevent)是指依賴(lài)于指定屬性值的布爾表達(dá)式得到滿足。這是一種一直等待直到特定條件被滿足的聲明方式。在UML中,用關(guān)鍵字When,后面跟隨布爾表達(dá)式來(lái)對(duì)一個(gè)變化事件建模。你可以用表達(dá)式來(lái)標(biāo)記一個(gè)絕對(duì)時(shí)間(如:Whentime=10:00),或?qū)Ρ磉_(dá)式作不間斷地測(cè)試(如whenaltitude<1000)。變化事件示例3.1.2
如圖時(shí)間事件時(shí)間事件(Timeevent)是表示一段時(shí)間推移的事件。在UML中,用關(guān)鍵字after,后面跟著計(jì)算一段時(shí)間的表達(dá)式來(lái)對(duì)時(shí)間事件建模。表達(dá)式計(jì)時(shí)的基準(zhǔn),默認(rèn)為進(jìn)入當(dāng)前狀態(tài)的時(shí)間為基準(zhǔn)。時(shí)間事件示例3.1.3
如圖3.1.2狀態(tài)狀態(tài)(State)是指在對(duì)象的生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況。 例如,打印機(jī)printer在工作時(shí)可能有6種狀態(tài):“就緒”(Ready),“打印”(Print),“缺紙”(Lackpaper),“忙”(Busy),“暫?!保≒ause)和“停止”(Stop)。這里具體的打印機(jī)在UML中就表示為對(duì)象,而它工作時(shí)可能出現(xiàn)的狀態(tài)則是狀態(tài)圖中的狀態(tài)。狀態(tài)的組成部分1.名稱(chēng)(name)是可以把該狀態(tài)和其他狀態(tài)區(qū)分開(kāi)的字符串;狀態(tài)也可能是匿名的,即沒(méi)有名稱(chēng)。2.進(jìn)入/退出動(dòng)作(entry/exitaction)分別指進(jìn)入和退出這個(gè)狀態(tài)時(shí)所執(zhí)行的動(dòng)作。3.內(nèi)部轉(zhuǎn)換(internaltransition)不會(huì)導(dǎo)致?tīng)顟B(tài)改變的轉(zhuǎn)換。4.子狀態(tài)
(substate)主要是在狀態(tài)的嵌套結(jié)構(gòu)中,包括不相交(順序活動(dòng))或并發(fā)(并發(fā)活動(dòng))子狀態(tài)。5.延遲事件
(deferredevent)是指在該狀態(tài)下暫不處理,但將推遲到該對(duì)象的另一個(gè)狀態(tài)下排隊(duì)處理的事件列表。狀態(tài)示例示例3.1.4
如圖3.1.3轉(zhuǎn)換轉(zhuǎn)換是兩個(gè)狀態(tài)間的一種關(guān)系,表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生或某個(gè)特定的條件滿足時(shí)進(jìn)入后繼狀態(tài)。在轉(zhuǎn)換激活之前,稱(chēng)對(duì)象處于源狀態(tài);激活后,就稱(chēng)對(duì)象處于目標(biāo)狀態(tài)。 例如,當(dāng)像“獲取時(shí)間片”這樣的事件發(fā)生時(shí),程序可能從“就緒”狀態(tài)轉(zhuǎn)換到“運(yùn)行”狀態(tài)。轉(zhuǎn)換的組成部分1.源狀態(tài)(sourcestate)即受轉(zhuǎn)換影響的狀態(tài);如果對(duì)象處于源狀態(tài),當(dāng)該對(duì)象接收到轉(zhuǎn)換的觸發(fā)事件或滿足監(jiān)護(hù)條件(如果有)時(shí),就會(huì)激活一個(gè)轉(zhuǎn)換。2.事件觸發(fā)(Eventtrigger)是一個(gè)事件,源狀態(tài)中的對(duì)象接收這個(gè)事件使轉(zhuǎn)換合法地激活,并使監(jiān)護(hù)條件滿足。 例如,將Mouse(鼠標(biāo))作為觸發(fā)器,那么接收到RightMouseButton也可以觸發(fā)這個(gè)轉(zhuǎn)換(如圖3.1.2)。轉(zhuǎn)換的組成部分3.監(jiān)護(hù)條件(guardcondition)是一個(gè)布爾表達(dá)式,當(dāng)觸發(fā)器事件被觸發(fā)時(shí)才對(duì)這個(gè)布爾表達(dá)式求值;如果表達(dá)式取值為真,則激活轉(zhuǎn)換;為假,則不能激活轉(zhuǎn)換,而且如果沒(méi)有其他的轉(zhuǎn)換被此事件所觸發(fā),則該事件丟失。事件能夠觸發(fā)多個(gè)轉(zhuǎn)換離開(kāi)當(dāng)前狀態(tài)。每個(gè)轉(zhuǎn)換必須具有不同的監(jiān)護(hù)條件。4.動(dòng)作(Action)動(dòng)作是可執(zhí)行的一個(gè)原子計(jì)算,它可以直接的作用于擁有狀態(tài)機(jī)的對(duì)象,也可以間接作用于那些可見(jiàn)的其他對(duì)象。當(dāng)轉(zhuǎn)換被引發(fā)時(shí),它對(duì)應(yīng)的動(dòng)作被執(zhí)行。它一般是一個(gè)簡(jiǎn)短的計(jì)算處理過(guò)程,通常是賦值操作或算術(shù)計(jì)算。轉(zhuǎn)換的組成部分5.目標(biāo)狀態(tài)(targetstate)轉(zhuǎn)換完成后的活動(dòng)狀態(tài)。示例3.1.5
3.1.4狀態(tài)圖狀態(tài)圖(StatechartDiagram)是UML中對(duì)系統(tǒng)的動(dòng)態(tài)方面進(jìn)行建模的五種圖之一。狀態(tài)圖顯示了狀態(tài)機(jī)?;顒?dòng)圖是狀態(tài)圖的一個(gè)特例,狀態(tài)圖中的多數(shù)狀態(tài)是活動(dòng)狀態(tài),而且所有或多數(shù)轉(zhuǎn)換是由源狀態(tài)中的活動(dòng)完成所觸發(fā)的。活動(dòng)圖顯示的是從活動(dòng)到活動(dòng)的控制流,狀態(tài)圖則顯示的是從狀態(tài)到狀態(tài)的控制流。狀態(tài)圖的用途狀態(tài)圖用于對(duì)系統(tǒng)的動(dòng)態(tài)方面建模。動(dòng)態(tài)方面是指出系統(tǒng)體系結(jié)構(gòu)中任一對(duì)象按事件排序的行為,這些對(duì)象可以是類(lèi)、接口、構(gòu)件和節(jié)點(diǎn)。狀態(tài)圖的建模技術(shù)的策略2-1(1)選擇狀態(tài)機(jī)的語(yǔ)境(即建模對(duì)象),不管它是類(lèi)、用例或是整個(gè)系統(tǒng);(2)選擇這個(gè)對(duì)象的初態(tài)和終態(tài)。為了指導(dǎo)模型的剩余部分,可能要分別地說(shuō)明初態(tài)和終態(tài)的前置條件和后置條件;(3)考慮對(duì)象可能在其中存在一段時(shí)間的條件,以決定該對(duì)象所在的穩(wěn)定狀態(tài)。從這個(gè)對(duì)象的高層狀態(tài)開(kāi)始,然后考慮它的可能的子狀態(tài);(4)在對(duì)象的整個(gè)生命周期中,決定穩(wěn)定狀態(tài)的有意義的順序;狀態(tài)圖的建模技術(shù)的策略2-2(5)決定可能觸發(fā)從狀態(tài)到狀態(tài)的轉(zhuǎn)換的事件。將這些事件建模為觸發(fā)者,它觸發(fā)從一個(gè)合法狀態(tài)序列到另一個(gè)合法狀態(tài)序列的轉(zhuǎn)換;(6)把動(dòng)作附加到這些轉(zhuǎn)換上,并且附加到這些狀態(tài)上;(7)考慮通過(guò)使用子狀態(tài)、分支、匯合和歷史狀態(tài),來(lái)簡(jiǎn)化狀態(tài)圖;(8)核實(shí)所有的狀態(tài)都是在事件的某種組合下可達(dá)的;(9)核實(shí)不存在死角狀態(tài),即不存在那種不能轉(zhuǎn)換出來(lái)的狀態(tài);(10)通過(guò)手工或通過(guò)使用工具跟蹤狀態(tài)機(jī),核對(duì)所期望的事件序列以及它們的響應(yīng)。狀態(tài)圖示例示例3.1.6對(duì)電話工作的行為建模。任務(wù)解決-分析借書(shū)業(yè)務(wù)在系統(tǒng)的業(yè)務(wù)建模中是一個(gè)用例,而這種用例是一個(gè)應(yīng)對(duì)型對(duì)象。為便于理解該業(yè)務(wù)的控制流程和確保業(yè)務(wù)處理的正確性。從前面章節(jié)對(duì)該業(yè)務(wù)描述可知,借書(shū)業(yè)務(wù)是由借書(shū)空閑(idle)書(shū)目查詢(finding)借書(shū)(Lending)預(yù)約(reservation)取消預(yù)約(removereservation)借書(shū)成功(Success)失?。‵ailure)7種狀態(tài)組成。任務(wù)解決-主要事件從空閑狀態(tài)到書(shū)目查詢狀態(tài)是由書(shū)目編號(hào)錄入引發(fā)的;同樣查詢失敗也會(huì)引發(fā)查詢狀態(tài)轉(zhuǎn)換到借書(shū)業(yè)務(wù)的空閑狀態(tài);查詢成功的事件會(huì)激發(fā)從查詢狀態(tài)到借書(shū)狀態(tài);當(dāng)所查到的書(shū)在庫(kù)時(shí)則借閱成功轉(zhuǎn)發(fā)成功顯示狀態(tài);當(dāng)所查到的書(shū)已預(yù)約時(shí)則激發(fā)取消預(yù)約事件;當(dāng)所查到的書(shū)已借出則激發(fā)預(yù)約事件轉(zhuǎn)入預(yù)約狀態(tài);在取消預(yù)約時(shí)如預(yù)約取消成功則轉(zhuǎn)入借書(shū)狀態(tài);如預(yù)約成功則轉(zhuǎn)入信息顯示狀態(tài)任務(wù)解決-繪制狀態(tài)圖步驟1.打開(kāi)前面初步構(gòu)建的UML模型文件。步驟2.打開(kāi)Rose中的用例視圖(UseCaseView),選擇用例(usecase)目錄下的圖書(shū)館業(yè)務(wù)功能包,并選擇借書(shū)用例。如圖3.1.8所示。任務(wù)解決-繪制狀態(tài)圖步驟3.用鼠標(biāo)右擊借書(shū)用例在彈出來(lái)的菜單中選擇“New→statechartdiagram”項(xiàng),創(chuàng)建狀態(tài)圖。如圖所示。任務(wù)解決-繪制狀態(tài)圖步驟4.雙擊新建的狀態(tài)圖,并點(diǎn)右邊控件集中選中開(kāi)始狀態(tài)并用鼠標(biāo)在圖中拖出。任務(wù)解決-繪制狀態(tài)圖步驟5.如上圖所示操作方法分別將狀態(tài)圖中的所有狀態(tài)創(chuàng)建出來(lái)。如圖所示。任務(wù)解決-繪制狀態(tài)圖步驟6.將狀態(tài)圖中的事件加上就完成借書(shū)的狀態(tài)圖。如圖所示。精練請(qǐng)您根據(jù)本節(jié)所學(xué)的知識(shí)解決項(xiàng)目中的任務(wù)2。分析:由前面章節(jié)對(duì)圖書(shū)館管理系統(tǒng)中的還書(shū)業(yè)務(wù)的描述和分析可知,還書(shū)業(yè)務(wù)的動(dòng)態(tài)行為是由:空閑(idle)、圖書(shū)查找(finding)、還書(shū)(reversion)、失敗(Failure)、歸還成功(Success)5種狀態(tài)及激活相互轉(zhuǎn)換的事件。繪制狀態(tài)圖:請(qǐng)您根據(jù)分析運(yùn)用UML繪制還書(shū)用例的狀態(tài)圖。小結(jié)事件(Event),是指對(duì)一個(gè)在時(shí)間和空間上占據(jù)一定位置的有意義的事情的規(guī)格說(shuō)明。事件包括信號(hào)、調(diào)用、時(shí)間推移或狀態(tài)改變。狀態(tài)(State)是指在對(duì)象的生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況。轉(zhuǎn)換是兩個(gè)狀態(tài)間的一種關(guān)系,表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生而某個(gè)特定的條件滿足時(shí)進(jìn)入后繼狀態(tài)。3.2.1類(lèi)類(lèi)(class)是對(duì)一組具有相同屬性、操作、關(guān)系和語(yǔ)義的對(duì)象的描述。類(lèi)是對(duì)事物的抽象,它不是個(gè)體對(duì)象,而描述一些對(duì)象完整集合。例如,你可以把CPU看作是對(duì)象類(lèi),它具有CPU的共同屬性,如:主頻、指令集、Cache容量、運(yùn)算位數(shù)、功率等。也可以考慮CPU的某個(gè)具體實(shí)例,如“Intel的P4處理器”。3.2.1類(lèi)在UML中為類(lèi)提供了圖形表示。這種可視化的抽象表示,使得我們對(duì)類(lèi)的描述脫離了具體編程語(yǔ)言,而只需要強(qiáng)調(diào)抽象的主要部分。類(lèi)主要是由:名稱(chēng)、屬性和操作。類(lèi)名稱(chēng)類(lèi)必須各自有不同的類(lèi)名稱(chēng)。類(lèi)名稱(chēng)是一個(gè)字符串。單獨(dú)的名稱(chēng)為簡(jiǎn)單名;還有一種用類(lèi)所在包的名稱(chēng)作為前綴的類(lèi)名稱(chēng)作路徑名。例如書(shū)類(lèi)屬于數(shù)據(jù)表包中的類(lèi)則其類(lèi)的路徑名為“數(shù)據(jù)表::書(shū)”。類(lèi)名可以是由數(shù)字、字母和下劃線等符號(hào)組成,類(lèi)名的長(zhǎng)度沒(méi)有限制。例如顧客類(lèi)可以用Customer作為類(lèi)名。屬性屬性(attribute)是已被命名的類(lèi)的特性,它描述了該特性的實(shí)例可以取值的范圍。屬性描述了正被建模的事件的一些特性,這些特性是類(lèi)的所有對(duì)象所共有。 例如,所有的CPU都有主頻率、指令集類(lèi)型、運(yùn)算的位算和外觀尺寸。屬性描述的一般語(yǔ)法格式為:可見(jiàn)性屬性名:類(lèi)型名=初值{特性串}屬性在UML中定義了3種可以用于屬性的特性:(1)可變(changeable):對(duì)修改屬性的值沒(méi)有約束。(2)只增(addOnly):對(duì)于多重性大于1的屬性,可以增加附加值,但一旦被創(chuàng)建,就不可對(duì)值進(jìn)行消除或改變。(3)凍結(jié)(frozen):在初始化對(duì)象后,就不允許改變屬性值。操作操作(Operation)是服務(wù)的實(shí)現(xiàn),該服務(wù)可以由類(lèi)的任何對(duì)象請(qǐng)求以影響其行為。 在UML中把操作序列放在類(lèi)屬性下面的欄中,如圖所示:操作操作的標(biāo)準(zhǔn)語(yǔ)法格式為:可見(jiàn)性操作名(參數(shù)表):返回值{特性串}可用于操作的特性:查詢(isQuery)順序(sequential)監(jiān)護(hù)(guarded)并發(fā)(concurrent)3.2.2類(lèi)成員的可見(jiàn)性1.公有(Public)用“+”表示。2.受保護(hù)(protected)用“#”表示。3.私有(private)用“—”表示。類(lèi)的類(lèi)型1.實(shí)體類(lèi)(entity)
實(shí)體類(lèi)是對(duì)系統(tǒng)中需要存儲(chǔ)的信息和其信息的行為建立模型。實(shí)體類(lèi)具有永久的特性,這類(lèi)似于數(shù)據(jù)庫(kù)中的表一樣用于保存系統(tǒng)的業(yè)務(wù)信息。在UML中,實(shí)體類(lèi)的構(gòu)造類(lèi)型(stereotype)被設(shè)定為Entity。類(lèi)的類(lèi)型示例3.2.1從圖書(shū)館管理系統(tǒng)中的讀者管理模塊中找出所有的實(shí)體類(lèi)。
練習(xí)3.2.1請(qǐng)找出學(xué)籍管理系統(tǒng)中的學(xué)生管理模塊中的實(shí)體類(lèi)。(主要對(duì)學(xué)生進(jìn)行抽象)類(lèi)的類(lèi)型2.邊界類(lèi)(boundary)邊界類(lèi)(boundary)位于系統(tǒng)與外界的交接處,它在一個(gè)或多個(gè)角色和系統(tǒng)之間建立相互作用的模型。邊界類(lèi)可以是窗口、打印機(jī)接口、傳感器和終端。要尋找和定義邊界類(lèi),可以檢查用例圖。每個(gè)參與者(Actor)和用例交互至少要有一個(gè)邊界類(lèi)。在UML中,實(shí)體類(lèi)的構(gòu)造類(lèi)型(stereotype)被設(shè)定為Boundary。類(lèi)的類(lèi)型示例3.2.2從圖書(shū)館管理系統(tǒng)中的讀者管理模塊中找出所有的邊界類(lèi)。類(lèi)的類(lèi)型3.控制類(lèi)(control)控制類(lèi)是負(fù)責(zé)協(xié)調(diào)其他類(lèi)的工作,它建立了一個(gè)或幾個(gè)用例的行為模型。例如登錄用例就須要有用戶驗(yàn)證類(lèi)就是控制類(lèi),他通過(guò)協(xié)調(diào)登錄邊界類(lèi)與用戶信息實(shí)體類(lèi)來(lái)完成登錄的工作。
它整理系統(tǒng)的行為并描述一個(gè)系統(tǒng)的動(dòng)態(tài)特性,處理主要的任務(wù)和控制流。每個(gè)用例通常都有一個(gè)控制類(lèi)、控制用例中的事件順序。也存在多個(gè)用例共享同一個(gè)控制類(lèi)。在UML中,控制類(lèi)的構(gòu)造類(lèi)型(stereotype)被設(shè)定為control。類(lèi)的類(lèi)型示例3.2.3從圖書(shū)館管理系統(tǒng)中的讀者管理模塊中找出所用到的控制類(lèi)。類(lèi)的尋找類(lèi)的尋找策略:(1)從事件流中尋找名詞或名詞詞組(或交互圖中的對(duì)象),將性質(zhì)相同的歸為一類(lèi),或性質(zhì)內(nèi)容值正負(fù)相反的歸為一類(lèi)。(2)去除不恰當(dāng)?shù)呐c含糊的類(lèi)別,去除應(yīng)是歸類(lèi)為屬性的項(xiàng)目。(3)給這些類(lèi)取個(gè)合適的名字,在現(xiàn)實(shí)系統(tǒng)實(shí)現(xiàn)時(shí),可以參照真實(shí)系統(tǒng)相關(guān)的命名規(guī)約。任務(wù)解決-分析圖書(shū)館業(yè)務(wù)功能主要由借書(shū)、還書(shū)、預(yù)約和取消預(yù)約四個(gè)主要功能,這四種功能是由三層組成,即:界面、控制和相應(yīng)的書(shū)籍信息表。因此,本功能模塊可以抽象出如下類(lèi):書(shū)實(shí)體類(lèi)讀者實(shí)體類(lèi)借書(shū)操作界面類(lèi)還書(shū)操作界面類(lèi)預(yù)約圖書(shū)操作界面類(lèi)書(shū)籍管理類(lèi)。任務(wù)解決-繪制狀態(tài)圖步驟1.打開(kāi)前面初步構(gòu)建的UML模型文件;步驟2.打開(kāi)Rose中的邏輯視圖(LogicalView),選擇分析模型(analysismodel)目錄。并在其下創(chuàng)建一個(gè)子目錄并命名為:“圖書(shū)館業(yè)務(wù)功能”,如圖所示。任務(wù)解決-繪制狀態(tài)圖步驟3.用鼠標(biāo)右擊“圖書(shū)館業(yè)務(wù)功能”在彈出來(lái)的菜單中選擇“New→Classdiagram”項(xiàng),創(chuàng)建類(lèi)圖。任務(wù)解決-繪制狀態(tài)圖步驟4.雙擊新建的類(lèi)圖,并點(diǎn)右邊控件集中選中的類(lèi)并用鼠標(biāo)在圖中分別拖出上述類(lèi)圖。任務(wù)解決-繪制狀態(tài)圖步驟5.設(shè)定上述各類(lèi)的屬性和操作(以讀者信息類(lèi)為例)。5.1先用鼠標(biāo)右擊Reader類(lèi)在彈出的下拉菜單中選擇“OpenSpecification”項(xiàng)彈出類(lèi)屬性窗體如圖3.2.14所示。任務(wù)解決-繪制狀態(tài)圖5.2再點(diǎn)擊“Attributes”選項(xiàng),在彈出的窗體中分別插入屬性。任務(wù)解決-繪制狀態(tài)圖5.3同理在打開(kāi)的類(lèi)屬性窗口中選擇“Operations”項(xiàng),并按上面步驟插入類(lèi)的操作。步驟6.設(shè)各類(lèi)的構(gòu)造類(lèi)型(以讀者信息類(lèi)為例)。精練請(qǐng)您根據(jù)本節(jié)所學(xué)的知識(shí)解決項(xiàng)目中的任務(wù)2。分析:由前面章節(jié)對(duì)圖書(shū)館管理系統(tǒng)中的書(shū)籍管理功能可知,該模塊是由書(shū)籍信息類(lèi)、書(shū)目類(lèi)、新增書(shū)籍界面類(lèi)、修改書(shū)籍界面類(lèi)、刪除書(shū)籍界面類(lèi)和書(shū)籍管理類(lèi)6個(gè)類(lèi)組成。請(qǐng)您根據(jù)分析使用Rose圖繪制類(lèi)信息。3.3類(lèi)的關(guān)系關(guān)系(Relationship)是指事物之間的聯(lián)系。在面向?qū)ο蟮慕V校?種最重要的關(guān)系是依賴(lài)泛化關(guān)聯(lián)在圖形上,把關(guān)系畫(huà)成一條線,并用不同的線區(qū)別關(guān)系的種類(lèi)。依賴(lài)(dependency)依賴(lài)(dependency)是一種使用關(guān)系,它說(shuō)明了一個(gè)事物聲明說(shuō)明的變化可能影響到使用它的另一個(gè)事物,但反之未必。
例如在windows系統(tǒng)中的窗體事件(類(lèi)Event)的變化將會(huì)影響到使用它的窗體(類(lèi)Window)。
在圖形上,把依賴(lài)畫(huà)成一條有向的虛線,指向被依賴(lài)的事物。當(dāng)要指明一個(gè)事物使用另一個(gè)事物時(shí),就使用依賴(lài)。依賴(lài)(dependency)在UML中定義了4類(lèi)基本依賴(lài)類(lèi)型:1.使用依賴(lài)使用依賴(lài)是一種非直接的,它通常表示使用者使用服務(wù)提供者所提供的服務(wù)實(shí)現(xiàn)它的行為。在UML中定義了4種使用依賴(lài):(1)使用(《use》)(2)調(diào)用依賴(lài)(《call》)(3)發(fā)送(《Send》)(4)實(shí)例化(《instantiate》)依賴(lài)(dependency)2.抽象依賴(lài)抽象依賴(lài)建模表示使用者和提供者之間的關(guān)系,它依賴(lài)于在不同抽象層次上的事物。下面給出了3種類(lèi)型的抽象依賴(lài)。(1)跟蹤依賴(lài)(《trace》)(2)精化依賴(lài)(《refine》)(3)派生依賴(lài)(《derive》)3.授權(quán)依賴(lài)授權(quán)依賴(lài)表達(dá)了一個(gè)事物訪問(wèn)另一個(gè)事物的能力。提供者可以規(guī)定使用者的權(quán)限,這是提供者控制和限制對(duì)其內(nèi)容訪問(wèn)的方法。下面給出了3種類(lèi)型的授權(quán)依賴(lài)。(1)訪問(wèn)依賴(lài)(《access》)(2)導(dǎo)入依賴(lài)(《import》)(3)友元依賴(lài)(《friend》)依賴(lài)(dependency)4.綁定依賴(lài)它表明對(duì)目標(biāo)模板使用給定的實(shí)際參數(shù)進(jìn)行實(shí)例化。當(dāng)對(duì)模板類(lèi)的細(xì)節(jié)建模時(shí),要使用綁定(《bind》)。例如,模板容器類(lèi)和這個(gè)類(lèi)的實(shí)例之間的關(guān)系被模型化為綁定依賴(lài)。綁定包括一個(gè)映射到模板的形式參數(shù)的實(shí)際參數(shù)列表。3.3.2泛化(generalization)泛化(generalization)是一般事物(稱(chēng)為父類(lèi)或超類(lèi))和較特殊事物(稱(chēng)為子類(lèi)或孩子類(lèi))之間的關(guān)系。例如,你可能遇到一般類(lèi)Client(用戶類(lèi))和它的較特殊類(lèi)Librarian(管理員類(lèi))。泛化的用途
一種用途是用來(lái)定義下列情況:當(dāng)一個(gè)變量(如參數(shù)或過(guò)程變量)被聲明承載某個(gè)給定類(lèi)的值時(shí),可使用類(lèi)的實(shí)例,這被稱(chēng)作可替換性原則。該原則表明后代的一個(gè)實(shí)例可以用于任何祖先被聲明的地方。例如,如果一個(gè)變量被聲明為圖書(shū)管理員,那么他就可代替用戶實(shí)例。另一個(gè)用途是在共享父類(lèi)所定義的成員的前提下允許它增加自身定義的描述,這被稱(chēng)作繼承。繼承允許描述的共享部分只被聲明一次而可以被許多子類(lèi)所共享,而不是在每個(gè)類(lèi)中重復(fù)聲明并使用它,這種共享機(jī)制減小了模型的規(guī)模。更重要的是,它減少了為了模型的更新而必須做的改變和意外的前后定義不一致。泛化示例例如水陸兩用汽車(chē)他即是汽車(chē)又是船,那么在對(duì)交通工具進(jìn)行抽象時(shí),就可認(rèn)為水陸汽車(chē)類(lèi)即繼承了汽車(chē)類(lèi)又繼承了船類(lèi),這就是多重繼承。3.3.3實(shí)現(xiàn)(realization)實(shí)現(xiàn)(realization)是類(lèi)元(類(lèi))之間的語(yǔ)義關(guān)系,關(guān)系中的一個(gè)類(lèi)元(類(lèi))描述了另一個(gè)類(lèi)元(接口)實(shí)現(xiàn)的契約。也就是說(shuō),實(shí)現(xiàn)關(guān)系中的一個(gè)類(lèi)只具有行為的定義,而具體的結(jié)構(gòu)和行為,則是由另一個(gè)類(lèi)來(lái)給出。例如3.3.4關(guān)聯(lián)(association)關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它詳述了一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象相互聯(lián)系。例如,類(lèi)Library(圖書(shū)館類(lèi))與類(lèi)Book(書(shū)類(lèi))就是一種一對(duì)多的關(guān)聯(lián),這表明每一個(gè)Book實(shí)例僅被一個(gè)Library實(shí)例所擁有。此外,給定一個(gè)Book,能夠找到它所屬的Library,給定Library,能夠找到它的全部Book。在UML中,把關(guān)聯(lián)畫(huà)為連接相同或不同的類(lèi)的一條實(shí)線。當(dāng)要表示結(jié)構(gòu)關(guān)系時(shí),就使用關(guān)聯(lián)。3.3.4關(guān)聯(lián)(association)示例3.3.1
請(qǐng)對(duì)書(shū)與書(shū)目之間的關(guān)系建模3.3.4關(guān)聯(lián)(association)在UML中,有4種可應(yīng)用到關(guān)聯(lián)的基本修飾:關(guān)聯(lián)名關(guān)聯(lián)端的角色關(guān)聯(lián)端的多重性聚合(1)關(guān)聯(lián)名即名稱(chēng)關(guān)聯(lián)可以通過(guò)命名的方式來(lái)描述關(guān)系的性質(zhì)。此關(guān)聯(lián)名稱(chēng)應(yīng)該取為動(dòng)詞短語(yǔ),因?yàn)樗砻髟磳?duì)象正在目標(biāo)對(duì)象上執(zhí)行的動(dòng)作。為了消除名稱(chēng)含義的歧義,UML中提供了一個(gè)指引讀者名稱(chēng)方向的三角形,并給名稱(chēng)一個(gè)方向。3.3.4關(guān)聯(lián)(association)示例3.3.2
在圖書(shū)館管理系統(tǒng)中的書(shū)與書(shū)目記錄之間是存在著一種關(guān)聯(lián)關(guān)系。這種關(guān)聯(lián)關(guān)系可以稱(chēng)為“擁有”而名稱(chēng)的方向是指向書(shū)目類(lèi)。如圖3.3.7所示。3.3.4關(guān)聯(lián)(association)(2)角色當(dāng)一個(gè)類(lèi)處于關(guān)聯(lián)的某一端時(shí),該類(lèi)就在這個(gè)關(guān)系中扮演了一個(gè)特定的角色。它呈現(xiàn)的是對(duì)另一端的職責(zé)??梢燥@式地命名類(lèi)在關(guān)聯(lián)中所扮演的角色。(3)多重性關(guān)聯(lián)表示了對(duì)象間的結(jié)構(gòu)關(guān)系。有時(shí)在建模時(shí)需要說(shuō)明一個(gè)關(guān)聯(lián)的實(shí)例中有多少個(gè)相互連接的對(duì)象。3.3.4關(guān)聯(lián)(association)(4)聚合在實(shí)際建模中,往往需要對(duì)“整體/部分”的關(guān)系進(jìn)行描述。在這種關(guān)系中,其中一個(gè)類(lèi)所描述的是一個(gè)較大的事物(即“整體”),它由較小的事物(“部分”)組成。這種關(guān)系在面向?qū)ο笾芯头Q(chēng)為聚合,它描述了“has-a”的關(guān)系,意思是整體對(duì)象擁有部分對(duì)象。在UML中被表示為在整體的一端用一個(gè)空心菱形修飾的簡(jiǎn)單關(guān)聯(lián)。例如,在對(duì)學(xué)校的組織結(jié)構(gòu)進(jìn)行建模時(shí),學(xué)校和系部之間就存在著這種“整體/部分”的關(guān)系,因?yàn)橐凰鶎W(xué)校里肯定會(huì)設(shè)置多個(gè)系部。如關(guān)聯(lián)如圖3.3.9所示。3.3.4關(guān)聯(lián)(association)(4)聚合3.3.4關(guān)聯(lián)(association)(5)組合:組合是聚合的一種形式,它具有強(qiáng)的擁有關(guān)系,而且整體與部分的生命周期是一致的。帶有非確定多重性的部分可以在組合物自身之后創(chuàng)建,但創(chuàng)建后,就同生共死,即整體釋放部分也跟著被釋放。例如,視窗系統(tǒng)中,一個(gè)Frame只屬于一個(gè)Window。如圖3.3.10所示。在UML中,組合是一種特殊的關(guān)聯(lián),用整體端有實(shí)心菱形箭頭的簡(jiǎn)單關(guān)聯(lián)修飾它。3.3.4關(guān)聯(lián)(association)(6)導(dǎo)航:給定兩個(gè)類(lèi)(如Book類(lèi)和Library類(lèi))之間的一個(gè)簡(jiǎn)單的、未加修飾的關(guān)聯(lián),從一個(gè)類(lèi)的對(duì)象能夠?qū)Ш降搅硪粋€(gè)類(lèi)的對(duì)象。除非另有指定,否則關(guān)聯(lián)的導(dǎo)航是雙向的。例如圖書(shū)館管理系統(tǒng)中,對(duì)象Librarian(管理員)和Password之間有一個(gè)關(guān)聯(lián)。給定一個(gè)管理員,就需要找到對(duì)應(yīng)的對(duì)象Password,反之不需要成立.任務(wù)解決-分析該模塊中的類(lèi)存在如下關(guān)系:1.關(guān)聯(lián)關(guān)系所有的操作界面類(lèi)與管理類(lèi)之間就是一種普通的關(guān)聯(lián)關(guān)系。
2.泛化關(guān)系我們可將管理員類(lèi)和讀者類(lèi)相同的特性和操作抽象出來(lái)形成一個(gè)父類(lèi)(Client),那么管理員類(lèi)、讀者類(lèi)與用戶類(lèi)之間就是一種泛化關(guān)系任務(wù)解決-繪制類(lèi)圖在類(lèi)圖中繪制類(lèi)的關(guān)系圖。精練請(qǐng)您根據(jù)本節(jié)所學(xué)的知識(shí)解決項(xiàng)目中的任務(wù)2分析:圖書(shū)館的主要靜態(tài)模型類(lèi)圖是由書(shū)籍管理類(lèi)、書(shū)類(lèi)、書(shū)目類(lèi)、管理員類(lèi)、用戶類(lèi)和各種界面操作類(lèi)組成。其中用戶類(lèi)與管理員類(lèi)是泛化的關(guān)系,而其它類(lèi)之間均是關(guān)聯(lián)關(guān)系。請(qǐng)根據(jù)演示部分繪制類(lèi)圖的方法為書(shū)籍管理業(yè)務(wù)繪制類(lèi)圖。3.4交互圖在業(yè)務(wù)系統(tǒng)靜態(tài)模型的基礎(chǔ)上,分析和設(shè)計(jì)系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu),并且建立相應(yīng)的動(dòng)態(tài)模型。動(dòng)態(tài)模型描述了系統(tǒng)隨時(shí)間變化的行為,這些行為是從靜態(tài)視圖中抽取系統(tǒng)瞬間狀態(tài)的變化來(lái)描述的。在UML中,動(dòng)態(tài)模型主要是通過(guò)交互圖和行為圖來(lái)描述。交互圖(InteractionDiagram)是由一組對(duì)象和它們之間的關(guān)系構(gòu)成,其中包括在對(duì)象間的傳遞的信息,它包括順序圖和協(xié)作圖。3.4.1順序圖(SequenceDiagram)順序圖(SequenceDiagram)是強(qiáng)調(diào)消息時(shí)間順序的交互圖。順序圖描述了類(lèi)相互協(xié)作的完成預(yù)期行為的動(dòng)態(tài)過(guò)程。順序圖向用戶提供了隨時(shí)間推移、清晰和可視的事件流軌跡。
3.4.1順序圖(SequenceDiagram)示例3.4.1
繪制出圖書(shū)館管理系統(tǒng)中的用戶登錄活動(dòng)的順序圖。分析:活動(dòng)的執(zhí)行的順序是:(1)啟動(dòng)登錄界面;(2)錄入用戶的賬號(hào)和口令;(3)校驗(yàn)用戶賬號(hào)和口令;(4)取出用戶賬號(hào)和口令。3.4.1順序圖(SequenceDiagram)3.4.1順序圖(SequenceDiagram)順序圖的組成:(1)類(lèi)角色(ClassRole)(2)生命線(Lifeline)(3)激活期(Activation)(4)消息(Message)3.4.1順序圖(SequenceDiagram)順序圖的特征:(1)順序圖有生命線(2)順序圖有激活期3.4.2協(xié)作圖(CollaborationDiagram)協(xié)作圖作為另一種交互圖而言,強(qiáng)調(diào)的是參加交互的對(duì)象的組織。協(xié)作圖只對(duì)相互間有交互作用的對(duì)象和這些對(duì)象間的關(guān)系建模,而忽略了其他沒(méi)有交互的對(duì)象和關(guān)聯(lián)。協(xié)作圖不僅可以表示對(duì)象間的關(guān)聯(lián),而且可以表現(xiàn)對(duì)象間的信息傳遞。3.4.2協(xié)作圖(CollaborationDiagram)示例3.4.2繪制出圖書(shū)館管理系統(tǒng)中的用戶登錄活動(dòng)的協(xié)作圖。3.4.2協(xié)作圖(CollaborationDiagram)協(xié)作圖的組成:(1)類(lèi)角色(ClassRole)(2)關(guān)聯(lián)角色(AssociationRole)(3)消息流(MessageFlow)3.4.2協(xié)作圖(CollaborationDiagram)協(xié)作圖的特征:(1)協(xié)作圖有路徑(2)協(xié)作圖有順序號(hào)任務(wù)解決-分析1.借書(shū)交互操作的動(dòng)態(tài)建模由業(yè)務(wù)模型對(duì)借書(shū)交互操作的描述可知,借書(shū)是圖書(shū)管理的最基本的功能。它是由管理員角色、借書(shū)窗體類(lèi)(LendFrame)、書(shū)籍管理類(lèi)(BookManager)、書(shū)籍類(lèi)(Book)、書(shū)目類(lèi)(Item)、借書(shū)記錄類(lèi)(Loan)、讀者管理類(lèi)(ReaderManager)和讀者類(lèi)(Reader)組成。
2.還書(shū)的交互操作動(dòng)態(tài)建模從對(duì)還書(shū)業(yè)務(wù)的描述可知該交互操作的動(dòng)態(tài)建模,是由:管理員角色、還書(shū)窗體類(lèi)(ReturnFrame)、書(shū)籍管理類(lèi)(BookManager)、書(shū)籍類(lèi)(Book)、書(shū)目類(lèi)(Item)和借書(shū)記錄類(lèi)(Loan)組成。任務(wù)解決任務(wù)解決任務(wù)解決任務(wù)解決精練請(qǐng)您根據(jù)本節(jié)所學(xué)的知識(shí)解決項(xiàng)目中的任務(wù)2分析:根據(jù)演示部分對(duì)圖書(shū)業(yè)務(wù)功能模塊中的交互操作進(jìn)行動(dòng)態(tài)建模的操作步驟和方法,請(qǐng)你對(duì)書(shū)籍管理模塊中的交互操作進(jìn)行動(dòng)態(tài)建模。該模塊中主要存在新增書(shū)籍、修改書(shū)籍信息和刪除書(shū)籍三種交互操作。4.1.1對(duì)象圖(ObjectDiagram)對(duì)象圖(ObjectDiagram)是描述在某一時(shí)刻,一組對(duì)象以及它們之間關(guān)系的圖形。
對(duì)象圖可以看作是類(lèi)圖在系統(tǒng)某一時(shí)刻的實(shí)例。對(duì)象圖表示的是被凍結(jié)的系統(tǒng)在運(yùn)行時(shí)的某一瞬間的情況,類(lèi)似于使用DVD播放機(jī)播放DVD光碟時(shí),按下暫停(pause)鍵時(shí),出現(xiàn)的靜止畫(huà)面。4.1.1對(duì)象圖(ObjectDiagram)對(duì)象圖中一般包括“對(duì)象”和“鏈”兩類(lèi)基本的模型元素。1.對(duì)象(Object)一般來(lái)說(shuō),把類(lèi)的具體表示稱(chēng)為對(duì)象,對(duì)象是類(lèi)的實(shí)例。4.1.1對(duì)象圖(ObjectDiagram)2.鏈(link)鏈?zhǔn)莾蓚€(gè)或多個(gè)對(duì)象之間的獨(dú)立連接,是關(guān)聯(lián)的實(shí)例。通過(guò)鏈可以將多個(gè)對(duì)象連接起來(lái),形成一個(gè)有序列表,稱(chēng)為元組。4.1.1對(duì)象圖(ObjectDiagram)3.對(duì)象圖的建模技術(shù)要對(duì)對(duì)象結(jié)構(gòu)建模,應(yīng)遵循以下步驟:確定參與交互的各對(duì)象的類(lèi),可以參照相應(yīng)的類(lèi)圖和交互圖確定類(lèi)間的關(guān)系,如依賴(lài)、泛化、關(guān)聯(lián)和實(shí)現(xiàn)確定在某特定時(shí)刻各對(duì)象的狀態(tài)值,使用對(duì)象圖為這些對(duì)象建模根據(jù)建模目標(biāo),繪制對(duì)象的關(guān)鍵狀態(tài)和關(guān)鍵對(duì)象之間的連接關(guān)系4.1.1對(duì)象圖(ObjectDiagram)4.提示和技巧在UML中創(chuàng)建對(duì)象圖時(shí),要記住,每一個(gè)對(duì)象圖只是系統(tǒng)的靜態(tài)設(shè)計(jì)視圖或系統(tǒng)的靜態(tài)進(jìn)程視圖的圖形表示。這意味著,并不需要用單個(gè)的對(duì)象圖來(lái)捕獲系統(tǒng)的設(shè)計(jì)視圖或進(jìn)程視圖中的每一個(gè)事物。一個(gè)結(jié)構(gòu)良好的對(duì)象圖,應(yīng)滿足如下的要求:只包含關(guān)注表達(dá)系統(tǒng)靜態(tài)設(shè)計(jì)視圖或靜態(tài)進(jìn)程視圖的一個(gè)方面只包含對(duì)理解系統(tǒng)運(yùn)行關(guān)鍵時(shí)刻必不可少的對(duì)象只顯示對(duì)象中必不可少的屬性值不要過(guò)分地簡(jiǎn)化,以免產(chǎn)生誤解4.1.2包(package)包是用于把元素組織成組的通用機(jī)制。包有助于組織模型中的元素,使你更容易理解系統(tǒng)模型,也可以控制對(duì)包的內(nèi)容的訪問(wèn)。UML提供了對(duì)包的圖形表示法。4.1.2包(package)1.包的名字和其他建模元素一樣,每個(gè)包都必須有一個(gè)區(qū)別于其他包的名字。4.1.2包(package)2.包擁有的元素包是對(duì)模型元素進(jìn)行分組的機(jī)制,它把模型元素劃分成若干個(gè)子集。包可以擁有UML中其他元素,包括類(lèi)、接口、組件、節(jié)點(diǎn)、協(xié)作、用例、甚至還可以包含其他子包。對(duì)包內(nèi)所包含的建模元素可以使用文本或圖形的方式,加以顯示。4.1.2包(package)3.包的可見(jiàn)性包內(nèi)的元素加以控制,使得某些元素能被外界訪問(wèn),可見(jiàn)某些元素不能被外界訪問(wèn)。這就是所謂的包內(nèi)元素可見(jiàn)性控制??梢?jiàn)性可以分成3種:公有訪問(wèn)(public)保護(hù)訪問(wèn)(protected)私有訪問(wèn)(private)4.1.2包(package)圖4.1.6分別描述了三種類(lèi)型的訪問(wèn)可見(jiàn)性。4.1.2包(package)4.引入(import)與導(dǎo)出(export)引入(import)使得一個(gè)包中的元素可以單向訪問(wèn)另一個(gè)包中的元素。導(dǎo)出(export)指的是包中具有公有訪問(wèn)權(quán)限的內(nèi)含元素,一個(gè)包中“導(dǎo)出”部分僅僅只對(duì)顯示地引入這個(gè)包的其他包中的內(nèi)含元素可見(jiàn)。4.1.2包(package)5.泛化關(guān)系在包之間可以有兩種關(guān)系:一種關(guān)系是引入和訪問(wèn)依賴(lài);另一種關(guān)系就是泛化。包間的泛化關(guān)系與類(lèi)之間的泛化關(guān)系類(lèi)似。 4.1.2包(package)6.標(biāo)準(zhǔn)元素UML的擴(kuò)充機(jī)制同樣適用于包元素,可以使用標(biāo)記值來(lái)增加包的新特性,用構(gòu)造型來(lái)描述包的新種類(lèi)。UML定義了5種構(gòu)造型來(lái)為其標(biāo)準(zhǔn)擴(kuò)充,分別是:虛包(facade)框架(framework)樁(stub)子系統(tǒng)(subsystem)系統(tǒng)(system)。4.1.2包(package)7.包建模技術(shù)①分析系統(tǒng)的模型元素(通常是對(duì)象類(lèi)),把概念上或語(yǔ)義上相近的模型元素歸入同一個(gè)包。②對(duì)于每一個(gè)包,標(biāo)出其模型元素的可視性,確定包內(nèi)每個(gè)元素的訪問(wèn)屬性,是公共、保護(hù)或私有。③確定包與包之間的依賴(lài)聯(lián)系,特別是“引入”關(guān)系。④確定包與包之間的泛化關(guān)系。⑤繪制包圖。⑥對(duì)結(jié)果進(jìn)行精化和細(xì)化。任務(wù)解決通過(guò)本節(jié)對(duì)對(duì)象圖的描述,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年無(wú)人機(jī)安防監(jiān)控系統(tǒng)采購(gòu)合同2篇
- 2025版委托持股業(yè)務(wù)盡職調(diào)查與風(fēng)險(xiǎn)評(píng)估合同3篇
- 2025版塔吊租賃合同解除及賠償協(xié)議6篇
- 2025版小企業(yè)勞動(dòng)合同修訂與完善建議5篇
- 光纖通信在高速鐵路信號(hào)系統(tǒng)中的應(yīng)用考核試卷
- 《企業(yè)文化圣經(jīng)》課件
- 初中生財(cái)經(jīng)素養(yǎng)的培養(yǎng)與財(cái)經(jīng)知識(shí)普及教育的實(shí)踐探索策略考核試卷
- 人力資源管理培訓(xùn)課程課件-高效招聘與面試技巧
- 2025版高端商務(wù)區(qū)門(mén)面房使用權(quán)購(gòu)買(mǎi)合同4篇
- 2025版商業(yè)地產(chǎn)物業(yè)委托居間合同范本3篇
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 人教版初中語(yǔ)文2022-2024年三年中考真題匯編-學(xué)生版-專(zhuān)題08 古詩(shī)詞名篇名句默寫(xiě)
- 2024-2025學(xué)年人教版(2024)七年級(jí)(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 《精密板料矯平機(jī) 第2部分:技術(shù)規(guī)范》
- 2024光伏發(fā)電工程交流匯流箱技術(shù)規(guī)范
- 旅游活動(dòng)碳排放管理評(píng)價(jià)指標(biāo)體系構(gòu)建及實(shí)證研究
- 2022年全國(guó)職業(yè)院校技能大賽-電氣安裝與維修賽項(xiàng)規(guī)程
- 2024年黑龍江省政工師理論知識(shí)考試參考題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論