軟件建模技術(shù)課件_第1頁
軟件建模技術(shù)課件_第2頁
軟件建模技術(shù)課件_第3頁
軟件建模技術(shù)課件_第4頁
軟件建模技術(shù)課件_第5頁
已閱讀5頁,還剩256頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章軟體建模技術(shù)和軟體工程

1.1軟體建模技術(shù)概述1.1.1建模

模型的概念 模型是對(duì)現(xiàn)實(shí)的簡化。它可以是一個(gè)對(duì)象的微縮表示、是一種用於生產(chǎn)某事物的模式,也可以是一種設(shè)計(jì)或一個(gè)類型,還可以是一個(gè)待模仿或仿真的樣例。1.1.1建模建模目的①模型幫助我們按照實(shí)際情況對(duì)系統(tǒng)進(jìn)行可視化。②模型允許我們詳細(xì)說明系統(tǒng)。③模型給出了一個(gè)指導(dǎo)我們構(gòu)造系統(tǒng)的範(fàn)本。④模型對(duì)我們做出的決策進(jìn)行範(fàn)本化。

1.1.1建模建模原則①要仔細(xì)的選擇模型②每一種模型可以在不同的精度級(jí)別上表示所要開發(fā)的系統(tǒng)③模型要與現(xiàn)實(shí)相聯(lián)系④對(duì)一個(gè)重要的系統(tǒng)用一組幾乎獨(dú)立的模型去處理

1.1.1建模使用UML建模

UML的中文意思是統(tǒng)一建模語言(UnifiedModelingLanguage),它是一種通用的可視化建模語言,可用於工程領(lǐng)域特別是軟體工程領(lǐng)域的建模。有了UML,就方便我們對(duì)各種工程進(jìn)行描述和交流。1.1.2UML簡介

UML發(fā)展歷史

OMT(Rumbaughetal.)BoochOOSE(Jacobsonetal.)UML0.91996UML1.1Nov.1997UML1.4Mar.19991.1.2UML簡介統(tǒng)一建模語言UML(UnifiedModelingLanguage)是一種通用的可視化建模語言,用於對(duì)軟體進(jìn)行描述、可視化處理、構(gòu)造和建立軟體系統(tǒng)的工作文檔。

UML體系包括三個(gè)部分:

①UML基本構(gòu)造塊

②UML規(guī)則

③UML公共機(jī)制。

1.1.2UML簡介UML的應(yīng)用領(lǐng)域

軟體工程領(lǐng)域

UML同樣也可以用來描述非軟體領(lǐng)域的系統(tǒng),如機(jī)械系統(tǒng)、企業(yè)機(jī)構(gòu)或業(yè)務(wù)過程,以及處理複雜數(shù)據(jù)的資訊系統(tǒng)、具有即時(shí)要求的工業(yè)系統(tǒng)或工業(yè)過程等。

UML適用於系統(tǒng)開發(fā)過程中從需求規(guī)格描述到系統(tǒng)完成測試後的不同階段。

1.1.3建模工具rationalrose

啟動(dòng)Rose

創(chuàng)建模型

發(fā)佈模型

設(shè)置全局屬性

1.2.1軟體

軟體的概念

軟體是電腦系統(tǒng)中與硬體相互依存的另一部分,它是包括程式、數(shù)據(jù)及其相關(guān)文檔的完整集合。 程式是按照事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列; 數(shù)據(jù)是使得程式能夠適當(dāng)?shù)夭僮髻Y訊的數(shù)據(jù)結(jié)構(gòu); 文檔是描述程式的開發(fā)、操作和維護(hù)的文字或圖形資料。

1.2.1軟體軟體的特徵:

1.軟體是被開發(fā)或設(shè)計(jì)的,而不是被製造的。

2.軟體不會(huì)“磨損”,但會(huì)“退化”。

3.軟體的開發(fā)至今尚未擺脫手工藝的開發(fā)方式。

4.軟體是複雜的。1.2.1軟體軟體的分類:

1.系統(tǒng)軟體

2.支撐軟體

3.應(yīng)用軟體

1.2.2軟體危機(jī)

軟體開發(fā)中出現(xiàn)的問題歸結(jié)如下:①軟體開發(fā)無計(jì)畫性,進(jìn)度的執(zhí)行和實(shí)際情況有很大差距。②軟體需求分析階段工作做得不充分,前期問題不及時(shí)解決,造成後期矛盾的集中暴露。③軟體開發(fā)過程中沒有統(tǒng)一的規(guī)範(fàn)指導(dǎo),參與軟體開發(fā)的人員各行其事。④軟體產(chǎn)品無評(píng)測手段。

1.2.3軟體工程

軟體工程的概念

將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用於軟體的開發(fā)、運(yùn)行和維護(hù),即將工程化應(yīng)用於軟體開發(fā)。

與軟體工程相關(guān)的工作一般可分為三個(gè)階段:

①定義階段

②開發(fā)階段

③支持階段

1.2.3軟體工程軟體生存期的六個(gè)步驟:

①計(jì)畫

②需求分析和定義

③軟體設(shè)計(jì)(詳細(xì)設(shè)計(jì))

④編碼

⑤軟體測試

⑥運(yùn)行和維護(hù)

1.2.3軟體工程軟體生存期模型:

軟體生存期模型是從軟體專案需求定義直至軟體廢棄為止,跨越整個(gè)生存期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框圖。常見軟體生存期模型:

①瀑布模型

②原型實(shí)現(xiàn)模型

瀑布模型原型實(shí)現(xiàn)模型1.2.4面向?qū)ο筌涹w工程方法

面向?qū)ο蟮母拍睢懊嫦驅(qū)ο?對(duì)象+類+繼承+通信”。如果一個(gè)軟體系統(tǒng)是使用這樣的概念設(shè)計(jì)和實(shí)現(xiàn)的,就可以認(rèn)為這個(gè)軟體系統(tǒng)是面向?qū)ο蟮?。?duì)象 對(duì)象是一種看問題的觀點(diǎn),是對(duì)現(xiàn)實(shí)世界各種真實(shí)事物的一種抽象。一個(gè)對(duì)象是一組屬性和一組操作的集合。類

類是具有相同屬性、相同操作的一組對(duì)象的集合的抽象描述。每個(gè)對(duì)象都是類的實(shí)例。繼承

繼承是使用已存在的定義作為基礎(chǔ)建立新定義的技術(shù)。通信 一個(gè)對(duì)象和另一個(gè)對(duì)象之間,通過消息來進(jìn)行通信。消息的傳遞大致等價(jià)於面向過程方法中的函數(shù)調(diào)用。

1.2.4面向?qū)ο筌涹w工程方法面向?qū)ο蟮膽?yīng)用開發(fā)過程:

①分析階段

②高層設(shè)計(jì)

③類的開發(fā)

④實(shí)例化

⑤組裝測試

⑥應(yīng)用的維護(hù)

1.2.5Rational統(tǒng)一過程

Rational統(tǒng)一過程(RationalUnifiedProcessRUP)是一種軟體工程過程。RUP吸收了許多開發(fā)模型的優(yōu)點(diǎn),具有很好的可操作性和實(shí)用性。RUP的構(gòu)架水準(zhǔn)軸代表時(shí)間,顯示了過程的生命週期,包括初始、細(xì)化、構(gòu)造、移交四個(gè)階段。豎直軸代表核心過程工作流,包括業(yè)務(wù)模型、需求、分析和設(shè)計(jì)、實(shí)現(xiàn)、測試、實(shí)施、配置和變更管理、專案管理、環(huán)境。1.2.5Rational統(tǒng)一過程RUP體現(xiàn)的現(xiàn)代軟體開發(fā)方法(實(shí)踐):

①迭代的開發(fā)軟體

②需求管理

③應(yīng)用基於構(gòu)件的構(gòu)架

④建立可視化模型

⑤不斷的驗(yàn)證軟體品質(zhì)

⑥配置管理和變更管理1.2.5Rational統(tǒng)一過程RUP的模型元素

①工作人員

②活動(dòng)

③製品

④工作流

1.3.1UML事物

事物是對(duì)模型中最有代表性的成分的抽象。UML中有四種事物:1.結(jié)構(gòu)事物(structuralthing)2.行為事物(behavioralthing)3.分組事物(groupingthing)4.注釋事物(annotationalthing)結(jié)構(gòu)事物(structuralthing)

①類(class)

類是具有相同屬性、相同操作的一組對(duì)象的集合的抽象描述。在圖形上,類用一個(gè)矩形來表示,通常矩形中寫有類的名稱、類的屬性和類的操作。結(jié)構(gòu)事物(structuralthing)②組件(component)

組件是系統(tǒng)中物理的、可替代的部件,是一個(gè)描述了一些邏輯元素(如類、介面)的物理包。在圖形上,組件由一個(gè)帶有小方框的矩形表示。通常在矩形中只寫該組件的名字。結(jié)構(gòu)事物(structuralthing)③介面(interface)

介面是描述了一個(gè)類或組件的一個(gè)服務(wù)的操作集,或者說,介面描述了類或組件對(duì)外的、可見的動(dòng)作。一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)介面。在圖形上,介面用一個(gè)帶有名稱的圓表示。介面很少單獨(dú)存在,而是依附於實(shí)現(xiàn)介面的類或組件

結(jié)構(gòu)事物(structuralthing)④協(xié)作(collaboration)

協(xié)作是一組類、介面和其他元素的群體,它們共同工作,提供比各組成部分的功能總和更強(qiáng)的合作行為。與組件不同,協(xié)作不能擁有自己的結(jié)構(gòu)事物,而只能引用其他地方定義的類、介面、組件、節(jié)點(diǎn)等結(jié)構(gòu)事物,即協(xié)作是系統(tǒng)體系結(jié)構(gòu)中的概念組塊而不是物理組塊。在圖形上,協(xié)作用一個(gè)包含名稱的虛線橢圓表示。

結(jié)構(gòu)事物(structuralthing)⑤用例(usecase)

用例是對(duì)一組序列動(dòng)作的描述,系統(tǒng)執(zhí)行這些動(dòng)作將對(duì)用例的參與者(actor,有些書翻譯成“角色”)產(chǎn)生可以觀察的結(jié)果。在圖形上,用例用實(shí)線的橢圓表示,參與者用一個(gè)人形的圖案表示。

結(jié)構(gòu)事物(structuralthing)⑥節(jié)點(diǎn)(node)

節(jié)點(diǎn)是一個(gè)物理元素,它在運(yùn)行時(shí)存在,代表一個(gè)可計(jì)算的資源,比如說一臺(tái)數(shù)據(jù)庫伺服器。在圖形上,節(jié)點(diǎn)用一個(gè)立方體來表示。結(jié)構(gòu)事物(structuralthing)⑦主動(dòng)類(activeclass)

主動(dòng)類能夠啟動(dòng)控制活動(dòng),因?yàn)樗膶?duì)象至少擁有一個(gè)進(jìn)程或線程。在圖形上,主動(dòng)類的表示方法和普通類相似,也是使用一個(gè)矩形,只是最外面的邊框使用粗線。

行為事物(behavioralthing)

結(jié)構(gòu)事物描述的是模型的靜態(tài)部分,而行為事物描述的是模型的動(dòng)態(tài)部分。一共有兩類主要的行為事物。①交互(interaction)

對(duì)象都不是孤立存在的,它們之間通過傳遞消息進(jìn)行交互。在圖形上,交互的消息通常用帶箭頭的直線表示。

行為事物(behavioralthing)

②狀態(tài)機(jī)(statemachine)

一個(gè)狀態(tài)機(jī)是一個(gè)行為,它說明對(duì)象在它的生命週期中回應(yīng)時(shí)間所經(jīng)歷的狀態(tài)序列以及它們對(duì)那些事件的回應(yīng)。狀態(tài)是指在對(duì)象的生命週期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況。一個(gè)事件的到來,能夠觸發(fā)一個(gè)狀態(tài)的轉(zhuǎn)換。

分組事物(groupingthing)分組事物是UML模型中負(fù)責(zé)分組的部分,可以把它看作一個(gè)一個(gè)的盒子,每個(gè)盒子裏面的對(duì)象關(guān)係相對(duì)複雜,而盒子與盒子之間的關(guān)係相對(duì)簡單。最主要的分組事物是包。

包(package)是把元素組織成組的機(jī)制。結(jié)構(gòu)事物、行為事物甚至其他的分組事物都可以放進(jìn)包內(nèi)。在圖形上,包用一個(gè)在左上角帶有一個(gè)小矩形的大矩形表示。

注釋事物(annotationalthing)

注釋事物是UML模型的解釋部分。這些注釋事物用來描述、說明和標(biāo)注模型的任何元素。有一種主要的注釋事物,稱為注解(note)。在圖形上,注解用一個(gè)右上角是折角的矩形表示。1.3.2UML關(guān)係

UML中關(guān)係(relationship)包括四種: 依賴(dependency)

關(guān)聯(lián)(association)

泛化(generalization)

實(shí)現(xiàn)(realization)。

依賴關(guān)係

依賴是兩個(gè)事物間的語義關(guān)係,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化,會(huì)影響到另一個(gè)事物(依賴事物)的語義。在圖形上,把一個(gè)依賴關(guān)係畫成一條可能有方向的虛線,偶爾在其上還有一個(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)係,是一般事物(父類)和該事物較為特殊的種類(子類)之間的關(guān)係,子類繼承父類的屬性和操作,除此之外,子類通常還添加新的屬性和操作。實(shí)現(xiàn)關(guān)係

實(shí)現(xiàn)關(guān)係將一種模型元素(如類)與另一種模型元素(如介面)連接起來,其中介面只是行為的定義而不是結(jié)構(gòu)或?qū)崿F(xiàn),也就是說,關(guān)係中的一個(gè)模型元素只具有行為的定義,而行為的具體實(shí)現(xiàn),則是由另一個(gè)模型元素來給出。在兩個(gè)地方要遇到實(shí)現(xiàn)關(guān)係:一種是在介面和實(shí)現(xiàn)它們的類或組件之間,另一種是在用例和實(shí)現(xiàn)它們的協(xié)作之間。1.3.3UML圖

圖是一組元素的圖形表示。為了對(duì)系統(tǒng)進(jìn)行可視化,可以從不同的角度畫圖。在理論上,圖可以包含任何事物及其關(guān)係的組合。在UML中包含9類圖:

1.類圖(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.類圖(classdiagram)

類圖展現(xiàn)了一組對(duì)象、介面、協(xié)作和它們之間的關(guān)係。類圖給出了系統(tǒng)的靜態(tài)設(shè)計(jì)視圖。在面向?qū)ο笙到y(tǒng)的建模中,建立的最常見的圖就是類圖。

1.3.3UML圖2.對(duì)象圖(objectdiagram)

對(duì)象圖展現(xiàn)了一組對(duì)象以及它們之間的關(guān)係。和類圖類似,對(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ì)於介面、類或協(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)了一組組件之間的組織和依賴。組件圖專注於系統(tǒng)的靜態(tài)實(shí)現(xiàn)圖。它與類圖是息息相關(guān)的,通常情況下,組件被映射成一個(gè)或多個(gè)類、介面或協(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ì)通過分析需求畫出用例圖。任務(wù)分析本章的專案引入中的系統(tǒng)的需求,確定系統(tǒng)中的參與者和主要用例,並畫出用例視圖。案例描述

HNS是一所以培養(yǎng)軟體開發(fā)人才為目標(biāo)的高等院校,為適應(yīng)IT產(chǎn)業(yè)發(fā)展對(duì)技術(shù)人才的需求,近年來擴(kuò)大了招生規(guī)模,隨著在校學(xué)生的增加,學(xué)院計(jì)畫改善包括圖書館在內(nèi)的各項(xiàng)教學(xué)設(shè)施,擬開發(fā)《圖書管理系統(tǒng)》使其可以滿足學(xué)生的要求。

現(xiàn)實(shí)案例

建築效果圖建築規(guī)劃圖建築平面圖需求需求是指系統(tǒng)必須符合的條件或具備的功能。需求問題是引起軟體專案的高風(fēng)險(xiǎn)率的最主要原因缺乏需求對(duì)需求的不正確理解需求的不完整需求的變化需求建模如何描述需求?《圖書管理系統(tǒng)》的需求描述如下:1.新書入庫:當(dāng)圖書館新進(jìn)一批新書時(shí),圖書管理員需要登記入庫資訊,並為每一本新書製作一個(gè)圖書卡(書目條)。2.借閱者資訊維護(hù):包括兩個(gè)方面的工作:一是新讀者的辦證操作,二是讀者基本資訊的維護(hù)工作。3.預(yù)約借書:當(dāng)讀者想借閱書不在時(shí),可以通過預(yù)約的方式預(yù)定不在庫的書籍。4.借書:根據(jù)借閱者提供的書目編號(hào),辦理借書手續(xù)。5.還書:根據(jù)借閱者歸還書籍的書目編號(hào),辦理歸還手續(xù)。6.圖書查詢:讀者在借書前,通過書目目錄去查詢所需書籍的書目編號(hào)。需求建模如何使用UML對(duì)需求建模呢?如圖:需求建模使用UML對(duì)需求建模的優(yōu)勢?1、幫助專案人員按照實(shí)際情況對(duì)系統(tǒng)可視化。2、對(duì)系統(tǒng)的描述一目了然,方便與用戶的交流和溝通。3、不易產(chǎn)生二義性,利於系統(tǒng)的分析和設(shè)計(jì)。用例圖用例圖是顯示一組用例、參與者以及它們之間關(guān)係的圖。

用例圖從用戶的角度而不是開發(fā)者的角度來描述對(duì)軟體產(chǎn)品的需求,分析產(chǎn)品所需的功能和動(dòng)態(tài)行為用例圖常用來對(duì)需求建模,用例圖是至關(guān)重要的,它的正確與否直接影響到客戶對(duì)最終產(chǎn)品的滿意度用例圖的內(nèi)容:參與者用例泛化、擴(kuò)展和包含關(guān)係參與者(Actor)參與者(Actor)是系統(tǒng)外部的一個(gè)人或物,它以某種方式參與了系統(tǒng)的執(zhí)行過程。參與者對(duì)系統(tǒng)而言總是外部的參與者在系統(tǒng)的不同組成部分可能扮演不同的角色參與者用一個(gè)人形的圖案表示識(shí)別參與者

客戶給銷售員發(fā)來傳真訂貨,銷售員下班前將當(dāng)日訂貨單匯總輸入系統(tǒng)。誰是系統(tǒng)的Actor?答案:銷售員識(shí)別參與者

尋呼臺(tái)系統(tǒng)。用戶如果預(yù)定了天氣預(yù)報(bào),系統(tǒng)每天定時(shí)給他發(fā)天氣消息;如果當(dāng)天氣溫高於35度,還要提醒用戶注意防暑。這個(gè)敘述裏,誰是尋呼臺(tái)系統(tǒng)的Actor?

用戶?氣溫?時(shí)間?答案:用戶,氣溫,時(shí)間都是Actor識(shí)別參與者

商品銷售系統(tǒng)。顧客通過網(wǎng)路下單之後,系統(tǒng)計(jì)算出總計(jì)金額,稅金,運(yùn)費(fèi),並將數(shù)目傳遞給一個(gè)外掛的會(huì)計(jì)系統(tǒng),該系統(tǒng)是另外購買的。有幾個(gè)Actor?答案:顧客(商品銷售系統(tǒng)),商品銷售系統(tǒng)(會(huì)計(jì)系統(tǒng))參與者使用以下問題有助於發(fā)現(xiàn)系統(tǒng)的參與者①誰使用系統(tǒng)?②誰安裝系統(tǒng)、維護(hù)系統(tǒng)?③誰啟動(dòng)系統(tǒng)、關(guān)閉系統(tǒng)?④誰從系統(tǒng)中獲取資訊,誰提供資訊給系統(tǒng)?⑤在系統(tǒng)交互中,誰扮演了什麼角色?⑥系統(tǒng)會(huì)與哪些其他系統(tǒng)相關(guān)聯(lián)?用例(UseCase)用例是對(duì)一組序列動(dòng)作的描述,系統(tǒng)執(zhí)行這些動(dòng)作將對(duì)用例的參與者產(chǎn)生可以觀察的結(jié)果。參與者和用例分別描述了“誰來做?”和“做什麼?”這兩個(gè)問題。用例用實(shí)線的橢圓表示用例識(shí)別用例的最好辦法就是從分析系統(tǒng)的參與者開始,考慮每個(gè)參與者是怎樣使用系統(tǒng)。根據(jù)下麵的一些問題來識(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è)論壇類的應(yīng)用,用戶可以提問,別人來回答,如果有自己問題被解答的話,就給發(fā)問者發(fā)一份郵件通知。注意:發(fā)郵件這個(gè)用例可以是單獨(dú)的用例,也可以是由回答用例擴(kuò)展出來的用例用例如何判斷一個(gè)用例是否是一個(gè)優(yōu)秀的用例呢?①用例是否描述了應(yīng)該做什麼,而不是如何做?②用例的描述是否採取了參與者的視點(diǎn)?③用例是否對(duì)參與者有價(jià)值?④用例描述的時(shí)間流是否是一個(gè)完整場景?⑤是否所有的參與者、用例都有相應(yīng)的關(guān)聯(lián)用例或關(guān)聯(lián)參與者?用例與事件流用例描述的是參與者與系統(tǒng)之間的對(duì)話,但是這個(gè)對(duì)話的細(xì)節(jié)並沒有在用例圖中表述出來,針對(duì)每一個(gè)用例我們可以用事件流來描述這一對(duì)話的細(xì)節(jié)內(nèi)容。事件流可分為:基本事件流、備選事件流用例與事件流銀行自動(dòng)取款機(jī)(ATM)系統(tǒng)中的“提款”用例可以用事件流表述如下提款─基本事件流 基本流步驟1:用戶插入信用卡 基本流步驟2:輸入密碼 基本流步驟3:輸入提款金額 基本流步驟4:提取現(xiàn)金 基本流步驟5:退出系統(tǒng),取回信用卡用例與事件流提款─備選事件流備選流一:用戶可以在基本流中的任何一步選擇退出,轉(zhuǎn)至基本流步驟5。備選流二:在基本流步驟1中,用戶插入無效信用卡,系統(tǒng)顯示錯(cuò)誤並退出信用卡,用例結(jié)束。備選流三:在基本流步驟2中,用戶輸入錯(cuò)誤密碼,系統(tǒng)顯示錯(cuò)誤並提示用戶重新輸入密碼,重新回到基本流步驟2;三次輸入密碼錯(cuò)誤後,信用卡被系統(tǒng)沒收,用例結(jié)束。用例之間的關(guān)係

泛化關(guān)係包含關(guān)係擴(kuò)展關(guān)係用例之間的關(guān)係泛化:同一業(yè)務(wù)目的的不同技術(shù)實(shí)現(xiàn)包含:提取公共交互,提高複用擴(kuò)展:“凍結(jié)”基用例以保持穩(wěn)定

*通過關(guān)係提高用例複用泛化(generalization)

當(dāng)多個(gè)用例共同擁有一種類似的結(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ǔ)用例中?;A(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),如下:①讀者需要借書籍,需要還書籍。②讀者可以預(yù)約書籍,也可以撤銷預(yù)約。③管理員根據(jù)讀者要求提供服務(wù)。④管理員可以添加、修改、刪除讀者。⑤管理員可以添加、修改、刪除書籍。任務(wù)解決1.確定系統(tǒng)參與者 管理員和讀者2.確定系統(tǒng)用例。3.使用RationalRose繪製用例圖。①讀者資訊管理用例圖的繪製任務(wù)解決任務(wù)解決②書籍資訊管理用例圖的繪製任務(wù)解決③圖書館業(yè)務(wù)用例圖的繪製任務(wù)解決④資訊查詢用例圖的繪製任務(wù)

根據(jù)HNS的圖書管理系統(tǒng)開發(fā)進(jìn)度,在完成對(duì)系統(tǒng)的需求建模,得到用例模型後,應(yīng)針對(duì)每個(gè)用例進(jìn)行業(yè)務(wù)分析,說明其具體的業(yè)務(wù)流程,現(xiàn)系統(tǒng)分析部指派您完成該項(xiàng)任務(wù),要求:用活動(dòng)圖描述系統(tǒng)中已知用例的業(yè)務(wù)過程:1.描述新增讀者用例2.描述刪除讀者用例活動(dòng)圖的基本概念為什麼需要活動(dòng)圖?用於描述活動(dò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í)行過程中所完成的工作(動(dòng)作),這是活動(dòng)圖最常見的用途。描述對(duì)象內(nèi)部的工作。顯示如何執(zhí)行一組相關(guān)的動(dòng)作,以及這些動(dòng)作如何影響它們周圍的對(duì)象。顯示用例的實(shí)例如何執(zhí)行動(dòng)作以及如何改變對(duì)象狀態(tài)。說明一次業(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è)特性:原子性;不可中斷性:暫態(tài)性:動(dòng)作狀態(tài)使用帶圓端的方框表示活動(dòng)圖的基本概念活動(dòng)狀態(tài)表示的是可以分割的動(dòng)作特點(diǎn)是:它可以被分解成其他子活動(dòng)或動(dòng)作狀態(tài),它能夠被中斷,佔(zhàn)有有限的時(shí)間。活動(dòng)狀態(tài)可以理解為一個(gè)組合,它的控制流由其他活動(dòng)狀態(tài)或動(dòng)作狀態(tài)組成。圖形表示同動(dòng)作狀態(tài)活動(dòng)圖的基本概念活動(dòng)圖中還有一類特殊的狀態(tài),用於表示活動(dòng)的開始和結(jié)束,分別稱為起始狀態(tài)(startstate)和終止?fàn)顟B(tài)(endstate)。起始狀態(tài)表示一個(gè)工作流程的開始,用實(shí)心圓點(diǎn)來表示終止?fàn)顟B(tài)表示了一個(gè)活動(dòng)圖的最後和終結(jié)狀態(tài),用實(shí)心圓點(diǎn)外加一個(gè)小圓圈來表示活動(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中用一條簡單的直線表示一個(gè)轉(zhuǎn)移活動(dòng)圖的基本概念示例:打電話活動(dòng)圖的基本概念分支(Branch)分支用於描述基於某個(gè)條件的可選擇路徑。一個(gè)分支可以有一個(gè)進(jìn)入轉(zhuǎn)移和兩個(gè)或多個(gè)輸出轉(zhuǎn)移。在每條輸出轉(zhuǎn)移上都有監(jiān)護(hù)條件運(yùn)算式保護(hù),當(dāng)且僅當(dāng)監(jiān)護(hù)條件運(yùn)算式為真時(shí),該輸出路徑才有效。在所有輸出轉(zhuǎn)移中,其監(jiān)護(hù)條件不能重疊,而且它們應(yīng)該覆蓋所有的可能性。分支在圖形表示上用菱形表示活動(dòng)圖的基本概念示例2.2.1HNS圖書館管理系統(tǒng)中需要提供對(duì)用戶資訊的修改功能,請使用活動(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)該是平衡的分叉和匯合在圖形上都使用同步條來表示,同步條通常用一條粗的水平線表示活動(dòng)圖的基本概念示例:描述打電話活動(dòng)中的併發(fā)事件活動(dòng)圖的基本概念泳道(swimlane)“泳道”技術(shù),是將一個(gè)活動(dòng)圖中的活動(dòng)狀態(tài)進(jìn)行分組,每一組表示一個(gè)特定的類、人或部門,他們負(fù)責(zé)完成組內(nèi)的活動(dòng)?!坝镜馈奔夹g(shù)來描述每個(gè)活動(dòng)是由哪個(gè)對(duì)象負(fù)責(zé)完成UML中,每個(gè)組被稱為一個(gè)泳道,用一條垂直的實(shí)線與鄰居分開每個(gè)活動(dòng)都明確屬於一個(gè)泳道,不可以跨越泳道,而轉(zhuǎn)移則可以跨越泳道活動(dòng)圖的基本概念示例2.2.2用活動(dòng)圖描述客戶在商店中購買物品的過程。活動(dòng)圖的基本概念對(duì)象流(objectstream)包括依賴關(guān)係和對(duì)象的應(yī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)圖描述客戶在商店中購買物品的過程。(使用對(duì)象流技術(shù)描述購物這個(gè)動(dòng)態(tài)過程中系統(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)開始,說明隨著時(shí)間發(fā)生的動(dòng)作和活動(dòng),並在活動(dòng)圖中把它們表示成活動(dòng)狀態(tài)或動(dòng)作狀態(tài)。⑤將複雜的動(dòng)作,或多次出現(xiàn)的動(dòng)作集合歸併到一個(gè)活動(dòng)狀態(tài),並對(duì)每個(gè)這樣的活動(dòng)狀態(tài)提供一個(gè)可展開的單獨(dú)的活動(dòng)圖。⑥找出連接這些活動(dòng)和動(dòng)作狀態(tài)的轉(zhuǎn)移。⑦如果工作流中涉及重要的對(duì)象,則也把它們加入到活動(dòng)圖中。任務(wù)解決"新增讀者"用例屬於讀者資訊管理中的一個(gè)功能,主要用於在系統(tǒng)中增加新的讀者資訊,其具體的辦理流程是:

(1)"讀者"填寫申請表,並交給"圖書管理員"; (2)"圖書管理員"將申請表中的資訊通過錄入介面,輸入到圖書管理系統(tǒng); (3)系統(tǒng)中的"業(yè)務(wù)邏輯"組件將判斷輸入的資訊是否合法; (4)如果不合法則轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(6); (5)顯示"添加錯(cuò)誤資訊",轉(zhuǎn)到(8); (6)在資料庫添加相信的用戶資訊; (7)顯示"添加成功資訊"; (8)結(jié)束。任務(wù)解決精練請您根據(jù)本節(jié)所學(xué)的知識(shí)解決“任務(wù)”中的要求2,繪製“刪除讀者資訊”用例的活動(dòng)圖。刪除讀者資訊一般按照以下步驟進(jìn)行:(1)管理員在錄入介面,輸入待刪除的讀者名;(2)“業(yè)務(wù)邏輯”組件在資料庫中,查找待刪除的讀者名;(3)如果不存在,則顯示出錯(cuò)資訊,返回步驟(1),如果存在則繼續(xù);(4)“業(yè)務(wù)邏輯”組件判斷“待刪除的讀者”是否可以刪除;(5)如果不可以,則顯示出錯(cuò)資訊,返回步驟(8),如果可以則繼續(xù);(6)在資料庫中,刪除相關(guān)資訊;(7)顯示刪除成功資訊;(8)結(jié)束。小結(jié)活動(dòng)圖是UML中用於對(duì)系統(tǒng)的動(dòng)態(tài)方面建模的五種圖中的一種,一張活動(dòng)圖從本質(zhì)上說是一個(gè)流程圖,顯示從活動(dòng)到活動(dòng)的控制流多數(shù)情況下,活動(dòng)圖用於對(duì)業(yè)務(wù)過程中順序和併發(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)作。具有原子性、不可中斷性和暫態(tài)性。小結(jié)(續(xù))活動(dòng)狀態(tài)表示的是可以分割的動(dòng)作?;顒?dòng)圖中還有一類特殊的狀態(tài),用於表示活動(dòng)的開始和結(jié)束,分別稱為起始狀態(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ā)的控制流。專案引入HNS軟體學(xué)院開發(fā)部在對(duì)圖書館管理系統(tǒng)需求建模後,進(jìn)入到系統(tǒng)分析和概要設(shè)計(jì)階段。在該階段中,將在需求模型的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行靜態(tài)建模以及動(dòng)態(tài)建模,最後構(gòu)建出圖書館管理系統(tǒng)的軟體架構(gòu)。這主要體現(xiàn)在對(duì)系統(tǒng)中對(duì)象進(jìn)行抽象成類,進(jìn)而對(duì)類間的相互關(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í)間和空間上佔(zhàn)據(jù)一定位置的有意義的事情的規(guī)格說明。事件:也就是指發(fā)生的且引起某些動(dòng)作執(zhí)行的事情。例如,當(dāng)你按下電視機(jī)上的Power按鈕時(shí),電視開始播放。其中“按下Power按鈕”就是事件,而事件引起的動(dòng)作就是“開始播放”。3.1.1事件(Event)事件可以是內(nèi)部的事件或外部的事件外部事件是在系統(tǒng)和參與者之間傳送的事件。內(nèi)部事件是在系統(tǒng)內(nèi)部的對(duì)象之間傳送的事件。

事件可以分成多種類型:信號(hào)調(diào)用事件變化事件時(shí)間事件……信號(hào)信號(hào)(Signal):是作為兩個(gè)對(duì)象之間通信媒介的命名的實(shí)體,信號(hào)的接收是信號(hào)接收對(duì)象的一個(gè)事件。

信號(hào)和簡單的類有許多共同之處,同樣信號(hào)也可以有實(shí)例。 信號(hào)還可以包含在泛化關(guān)係中。同樣信號(hào)可以像類一樣,有屬性和操作。 例如電腦設(shè)備的中斷信號(hào)就是一般的信號(hào),而鍵盤中斷信號(hào)就是特殊的信號(hào)。

信號(hào)信號(hào)可以在類圖中被聲明為類,並用關(guān)鍵字《signal》表示,信號(hào)的參數(shù)被聲明為屬性。在UML中,可以將信號(hào)建模為構(gòu)造型化的類。用構(gòu)造型為Send的依賴關(guān)係來表示一個(gè)操作發(fā)送了一個(gè)特定的信號(hào)。信號(hào)信號(hào)間可以有泛化,信號(hào)可以是其他信號(hào)的子信號(hào),它們繼承父信號(hào)的屬性,並可以觸發(fā)包含信號(hào)類型的轉(zhuǎn)換。示例:調(diào)用事件調(diào)用事件(CallEvent)是指一個(gè)對(duì)象對(duì)操作調(diào)用的接收。接收的類可以選擇將操作實(shí)現(xiàn)為一個(gè)方法或?qū)崿F(xiàn)為狀態(tài)機(jī)裏的一個(gè)調(diào)用事件觸發(fā)器。信號(hào)是一個(gè)非同步事件,而調(diào)用事件一般來說是同步的。也就是說,當(dāng)對(duì)象調(diào)用另一對(duì)象的操作時(shí),控制就從發(fā)送者傳送到接收者,該事件觸發(fā)轉(zhuǎn)換,完成操後,接收者轉(zhuǎn)換到一個(gè)新的狀態(tài),控制返還給發(fā)送者。調(diào)用事件示例3.1.1

如圖變化事件變化事件(changeevent)是指依賴於指定屬性值的布爾運(yùn)算式得到滿足。這是一種一直等待直到特定條件被滿足的聲明方式。在UML中,用關(guān)鍵字When,後面跟隨布爾運(yùn)算式來對(duì)一個(gè)變化事件建模。你可以用運(yùn)算式來標(biāo)記一個(gè)絕對(duì)時(shí)間(如:Whentime=10:00),或?qū)\(yùn)算式作不間斷地測試(如whenaltitude<1000)。變化事件示例3.1.2

如圖時(shí)間事件時(shí)間事件(Timeevent)是表示一段時(shí)間推移的事件。在UML中,用關(guān)鍵字after,後面跟著計(jì)算一段時(shí)間的運(yùn)算式來對(duì)時(shí)間事件建模。運(yùn)算式計(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.名稱(name)是可以把該狀態(tài)和其他狀態(tài)區(qū)分開的字串;狀態(tài)也可能是匿名的,即沒有名稱。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à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)換啟動(dòng)之前,稱對(duì)象處於源狀態(tài);啟動(dò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ì)啟動(dòng)一個(gè)轉(zhuǎn)換。2.事件觸發(fā)(Eventtrigger)是一個(gè)事件,源狀態(tài)中的對(duì)象接收這個(gè)事件使轉(zhuǎn)換合法地啟動(dòng),並使監(jiān)護(hù)條件滿足。 例如,將Mouse(滑鼠)作為觸發(fā)器,那麼接收到RightMouseButton也可以觸發(fā)這個(gè)轉(zhuǎn)換(如圖3.1.2)。轉(zhuǎn)換的組成部分3.監(jiān)護(hù)條件(guardcondition)是一個(gè)布爾運(yùn)算式,當(dāng)觸發(fā)器事件被觸發(fā)時(shí)才對(duì)這個(gè)布爾運(yùn)算式求值;如果運(yùn)算式取值為真,則啟動(dòng)轉(zhuǎn)換;為假,則不能啟動(dòng)轉(zhuǎn)換,而且如果沒有其他的轉(zhuǎn)換被此事件所觸發(fā),則該事件丟失。事件能夠觸發(fā)多個(gè)轉(zhuǎn)換離開當(dāng)前狀態(tài)。每個(gè)轉(zhuǎn)換必須具有不同的監(jiān)護(hù)條件。4.動(dòng)作(Action)動(dòng)作是可執(zhí)行的一個(gè)原子計(jì)算,它可以直接的作用於擁有狀態(tài)機(jī)的對(duì)象,也可以間接作用於那些可見的其他對(duì)象。當(dāng)轉(zhuǎn)換被引發(fā)時(shí),它對(duì)應(yīng)的動(dòng)作被執(zhí)行。它一般是一個(gè)簡短的計(jì)算處理過程,通常是賦值操作或算術(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ì)象可以是類、介面、構(gòu)件和節(jié)點(diǎn)。狀態(tài)圖的建模技術(shù)的策略2-1(1)選擇狀態(tài)機(jī)的語境(即建模對(duì)象),不管它是類、用例或是整個(gè)系統(tǒng);(2)選擇這個(gè)對(duì)象的初態(tài)和終態(tài)。為了指導(dǎo)模型的剩餘部分,可能要分別地說明初態(tài)和終態(tài)的前置條件和後置條件;(3)考慮對(duì)象可能在其中存在一段時(shí)間的條件,以決定該對(duì)象所在的穩(wěn)定狀態(tài)。從這個(gè)對(duì)象的高層狀態(tà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)考慮通過使用子狀態(tài)、分支、匯合和歷史狀態(tài),來簡化狀態(tài)圖;(8)核實(shí)所有的狀態(tài)都是在事件的某種組合下可達(dá)的;(9)核實(shí)不存在死角狀態(tài),即不存在那種不能轉(zhuǎn)換出來的狀態(tài);(10)通過手工或通過使用工具跟蹤狀態(tài)機(jī),核對(duì)所期望的事件序列以及它們的回應(yīng)。狀態(tài)圖示例示例3.1.6對(duì)電話工作的行為建模。任務(wù)解決-分析借書業(yè)務(wù)在系統(tǒng)的業(yè)務(wù)建模中是一個(gè)用例,而這種用例是一個(gè)應(yīng)對(duì)型對(duì)象。為便於理解該業(yè)務(wù)的控制流程和確保業(yè)務(wù)處理的正確性。從前面章節(jié)對(duì)該業(yè)務(wù)描述可知,借書業(yè)務(wù)是由借書空閒(idle)書目查詢(finding)借書(Lending)預(yù)約(reservation)取消預(yù)約(removereservation)借書成功(Success)失?。‵ailure)7種狀態(tài)組成。任務(wù)解決-主要事件從空閒狀態(tài)到書目查詢狀態(tài)是由書目編號(hào)錄入引發(fā)的;同樣查詢失敗也會(huì)引發(fā)查詢狀態(tài)轉(zhuǎn)換到借書業(yè)務(wù)的空閒狀態(tài);查詢成功的事件會(huì)激發(fā)從查詢狀態(tài)到借書狀態(tài);當(dāng)所查到的書在庫時(shí)則借閱成功轉(zhuǎn)發(fā)成功顯示狀態(tài);當(dāng)所查到的書已預(yù)約時(shí)則激發(fā)取消預(yù)約事件;當(dāng)所查到的書已借出則激發(fā)預(yù)約事件轉(zhuǎn)入預(yù)約狀態(tài);在取消預(yù)約時(shí)如預(yù)約取消成功則轉(zhuǎn)入借書狀態(tài);如預(yù)約成功則轉(zhuǎn)入資訊顯示狀態(tài)任務(wù)解決-繪製狀態(tài)圖步驟1.打開前面初步構(gòu)建的UML模型檔。步驟2.打開Rose中的用例視圖(UseCaseView),選擇用例(usecase)目錄下的圖書館業(yè)務(wù)功能包,並選擇借書用例。如圖3.1.8所示。任務(wù)解決-繪製狀態(tài)圖步驟3.用滑鼠右擊借書用例在彈出來的菜單中選擇“New→statechartdiagram”項(xiàng),創(chuàng)建狀態(tài)圖。如圖所示。任務(wù)解決-繪製狀態(tài)圖步驟4.雙擊新建的狀態(tài)圖,並點(diǎn)右邊控件集中選中開始狀態(tài)並用滑鼠在圖中拖出。任務(wù)解決-繪製狀態(tài)圖步驟5.如上圖所示操作方法分別將狀態(tài)圖中的所有狀態(tài)創(chuàng)建出來。如圖所示。任務(wù)解決-繪製狀態(tài)圖步驟6.將狀態(tài)圖中的事件加上就完成借書的狀態(tài)圖。如圖所示。精練請您根據(jù)本節(jié)所學(xué)的知識(shí)解決專案中的任務(wù)2。分析:由前面章節(jié)對(duì)圖書館管理系統(tǒng)中的還書業(yè)務(wù)的描述和分析可知,還書業(yè)務(wù)的動(dòng)態(tài)行為是由:空閒(idle)、圖書查找(finding)、還書(reversion)、失?。‵ailure)、歸還成功(Success)5種狀態(tài)及啟動(dòng)相互轉(zhuǎn)換的事件。繪製狀態(tài)圖:請您根據(jù)分析運(yùn)用UML繪製還書用例的狀態(tài)圖。小結(jié)事件(Event),是指對(duì)一個(gè)在時(shí)間和空間上佔(zhàn)據(jù)一定位置的有意義的事情的規(guī)格說明。事件包括信號(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類類(class)是對(duì)一組具有相同屬性、操作、關(guān)係和語義的對(duì)象的描述。類是對(duì)事物的抽象,它不是個(gè)體對(duì)象,而描述一些對(duì)象完整集合。例如,你可以把CPU看作是對(duì)象類,它具有CPU的共同屬性,如:主頻、指令集、Cache容量、運(yùn)算位數(shù)、功率等。也可以考慮CPU的某個(gè)具體實(shí)例,如“Intel的P4處理器”。3.2.1類在UML中為類提供了圖形表示。這種可視化的抽象表示,使得我們對(duì)類的描述脫離了具體編程語言,而只需要強(qiáng)調(diào)抽象的主要部分。類主要是由:名稱、屬性和操作。類名稱類必須各自有不同的類名稱。類名稱是一個(gè)字串。單獨(dú)的名稱為簡單名;還有一種用類所在包的名稱作為首碼的類名稱作路徑名。例如書類屬於數(shù)據(jù)表包中的類則其類的路徑名為“數(shù)據(jù)表::書”。類名可以是由數(shù)字、字母和下劃線等符號(hào)組成,類名的長度沒有限制。例如顧客類可以用Customer作為類名。屬性屬性(attribute)是已被命名的類的特性,它描述了該特性的實(shí)例可以取值的範(fàn)圍。屬性描述了正被建模的事件的一些特性,這些特性是類的所有對(duì)象所共有。 例如,所有的CPU都有主頻率、指令集類型、運(yùn)算的位算和外觀尺寸。屬性描述的一般語法格式為:可見性屬性名:類型名=初值{特性串}屬性在UML中定義了3種可以用於屬性的特性:(1)可變(changeable):對(duì)修改屬性的值沒有約束。(2)只增(addOnly):對(duì)於多重性大於1的屬性,可以增加附加值,但一旦被創(chuàng)建,就不可對(duì)值進(jìn)行消除或改變。(3)凍結(jié)(frozen):在初始化對(duì)象後,就不允許改變屬性值。操作操作(Operation)是服務(wù)的實(shí)現(xiàn),該服務(wù)可以由類的任何對(duì)象請求以影響其行為。 在UML中把操作序列放在類屬性下麵的欄中,如圖所示:操作操作的標(biāo)準(zhǔn)語法格式為:可見性操作名(參數(shù)表):返回值{特性串}可用於操作的特性:查詢(isQuery)順序(sequential)監(jiān)護(hù)(guarded)併發(fā)(concurrent)3.2.2類成員的可見性1.公有(Public)用“+”表示。2.受保護(hù)(protected)用“#”表示。3.私有(private)用“—”表示。類的類型1.實(shí)體類(entity)

實(shí)體類是對(duì)系統(tǒng)中需要存儲(chǔ)的資訊和其資訊的行為建立模型。實(shí)體類具有永久的特性,這類似於資料庫中的表一樣用於保存系統(tǒng)的業(yè)務(wù)資訊。在UML中,實(shí)體類的構(gòu)造類型(stereotype)被設(shè)定為Entity。類的類型示例3.2.1從圖書館管理系統(tǒng)中的讀者管理模組中找出所有的實(shí)體類。

練習(xí)3.2.1請找出學(xué)籍管理系統(tǒng)中的學(xué)生管理模組中的實(shí)體類。(主要對(duì)學(xué)生進(jìn)行抽象)類的類型2.邊界類(boundary)邊界類(boundary)位於系統(tǒng)與外界的交接處,它在一個(gè)或多個(gè)角色和系統(tǒng)之間建立相互作用的模型。邊界類可以是窗口、印表機(jī)介面、感測器和終端。要尋找和定義邊界類,可以檢查用例圖。每個(gè)參與者(Actor)和用例交互至少要有一個(gè)邊界類。在UML中,實(shí)體類的構(gòu)造類型(stereotype)被設(shè)定為Boundary。類的類型示例3.2.2從圖書館管理系統(tǒng)中的讀者管理模組中找出所有的邊界類。類的類型3.控制類(control)控制類是負(fù)責(zé)協(xié)調(diào)其他類的工作,它建立了一個(gè)或幾個(gè)用例的行為模型。例如登錄用例就須要有用戶驗(yàn)證類就是控制類,他通過協(xié)調(diào)登錄邊界類與用戶資訊實(shí)體類來完成登錄的工作。

它整理系統(tǒng)的行為並描述一個(gè)系統(tǒng)的動(dòng)態(tài)特性,處理主要的任務(wù)和控制流。每個(gè)用例通常都有一個(gè)控制類、控制用例中的事件順序。也存在多個(gè)用例共用同一個(gè)控制類。在UML中,控制類的構(gòu)造類型(stereotype)被設(shè)定為control。類的類型示例3.2.3從圖書館管理系統(tǒng)中的讀者管理模組中找出所用到的控制類。類的尋找類的尋找策略:(1)從事件流中尋找名詞或名詞片語(或交互圖中的對(duì)象),將性質(zhì)相同的歸為一類,或性質(zhì)內(nèi)容值正負(fù)相反的歸為一類。(2)去除不恰當(dāng)?shù)呐c含糊的類別,去除應(yīng)是歸類為屬性的專案。(3)給這些類取個(gè)合適的名字,在現(xiàn)實(shí)系統(tǒng)實(shí)現(xiàn)時(shí),可以參照真實(shí)系統(tǒng)相關(guān)的命名規(guī)約。任務(wù)解決-分析圖書館業(yè)務(wù)功能主要由借書、還書、預(yù)約和取消預(yù)約四個(gè)主要功能,這四種功能是由三層組成,即:介面、控制和相應(yīng)的書籍資訊表。因此,本功能模組可以抽象出如下類:書實(shí)體類讀者實(shí)體類借書操作介面類還書操作介面類預(yù)約圖書操作介面類書籍管理類。任務(wù)解決-繪製狀態(tài)圖步驟1.打開前面初步構(gòu)建的UML模型檔;步驟2.打開Rose中的邏輯視圖(LogicalView),選擇分析模型(analysismodel)目錄。並在其下創(chuàng)建一個(gè)子目錄並命名為:“圖書館業(yè)務(wù)功能”,如圖所示。任務(wù)解決-繪製狀態(tài)圖步驟3.用滑鼠右擊“圖書館業(yè)務(wù)功能”在彈出來的菜單中選擇“New→Classdiagram”項(xiàng),創(chuàng)建類圖。任務(wù)解決-繪製狀態(tài)圖步驟4.雙擊新建的類圖,並點(diǎn)右邊控件集中選中的類並用滑鼠在圖中分別拖出上述類圖。任務(wù)解決-繪製狀態(tài)圖步驟5.設(shè)定上述各類的屬性和操作(以讀者資訊類為例)。5.1先用滑鼠右擊Reader類在彈出的下拉菜單中選擇“OpenSpecification”項(xiàng)彈出類屬性窗體如圖3.2.14所示。任務(wù)解決-繪製狀態(tài)圖5.2再點(diǎn)擊“Attributes”選項(xiàng),在彈出的窗體中分別插入屬性。任務(wù)解決-繪製狀態(tài)圖5.3同理在打開的類屬性窗口中選擇“Operations”項(xiàng),並按上面步驟插入類的操作。步驟6.設(shè)各類的構(gòu)造類型(以讀者資訊類為例)。精練請您根據(jù)本節(jié)所學(xué)的知識(shí)解決專案中的任務(wù)2。分析:由前面章節(jié)對(duì)圖書館管理系統(tǒng)中的書籍管理功能可知,該模組是由書籍資訊類、書目類、新增書籍介面類、修改書籍介面類、刪除書籍介面類和書籍管理類6個(gè)類組成。請您根據(jù)分析使用Rose圖繪製類資訊。3.3類的關(guān)係關(guān)係(Relationship)是指事物之間的聯(lián)繫。在面向?qū)ο蟮慕V?,?種最重要的關(guān)係是依賴泛化關(guān)聯(lián)在圖形上,把關(guān)系畫成一條線,並用不同的線區(qū)別關(guān)係的種類。依賴(dependency)依賴(dependency)是一種使用關(guān)係,它說明了一個(gè)事物聲明說明的變化可能影響到使用它的另一個(gè)事物,但反之未必。

例如在windows系統(tǒng)中的窗體事件(類Event)的變化將會(huì)影響到使用它的窗體(類Window)。

在圖形上,把依賴畫成一條有向的虛線,指向被依賴的事物。當(dāng)要指明一個(gè)事物使用另一個(gè)事物時(shí),就使用依賴。依賴(dependency)在UML中定義了4類基本依賴類型:1.使用依賴使用依賴是一種非直接的,它通常表示使用者使用服務(wù)提供者所提供的服務(wù)實(shí)現(xiàn)它的行為。在UML中定義了4種使用依賴:(1)使用(《use》)(2)調(diào)用依賴(《call》)(3)發(fā)送(《Send》)(4)實(shí)例化(《instantiate》)依賴(dependency)2.抽象依賴抽象依賴建模表示使用者和提供者之間的關(guān)係,它依賴於在不同抽象層次上的事物。下麵給出了3種類型的抽象依賴。(1)跟蹤依賴(《trace》)(2)精化依賴(《refine》)(3)派生依賴(《derive》)3.授權(quán)依賴授權(quán)依賴表達(dá)了一個(gè)事物訪問另一個(gè)事物的能力。提供者可以規(guī)定使用者的許可權(quán),這是提供者控制和限制對(duì)其內(nèi)容訪問的方法。下麵給出了3種類型的授權(quán)依賴。(1)訪問依賴(《access》)(2)導(dǎo)入依賴(《import》)(3)友元依賴(《friend》)依賴(dependency)4.綁定依賴它表明對(duì)目標(biāo)範(fàn)本使用給定的實(shí)際參數(shù)進(jìn)行實(shí)例化。當(dāng)對(duì)範(fàn)本類的細(xì)節(jié)建模時(shí),要使用綁定(《bind》)。例如,範(fàn)本容器類和這個(gè)類的實(shí)例之間的關(guān)係被模型化為綁定依賴。綁定包括一個(gè)映射到範(fàn)本的形式參數(shù)的實(shí)際參數(shù)列表。3.3.2泛化(generalization)泛化(generalization)是一般事物(稱為父類或超類)和較特殊事物(稱為子類或孩子類)之間的關(guān)係。例如,你可能遇到一般類Client(用戶類)和它的較特殊類Librarian(管理員類)。泛化的用途

一種用途是用來定義下列情況:當(dāng)一個(gè)變數(shù)(如參數(shù)或過程變數(shù))被聲明承載某個(gè)給定類的值時(shí),可使用類的實(shí)例,這被稱作可替換性原則。該原則表明後代的一個(gè)實(shí)例可以用於任何祖先被聲明的地方。例如,如果一個(gè)變數(shù)被聲明為圖書管理員,那麼他就可代替用戶實(shí)例。另一個(gè)用途是在共用父類所定義的成員的前提下允許它增加自身定義的描述,這被稱作繼承。繼承允許描述的共用部分只被聲明一次而可以被許多子類所共用,而不是在每個(gè)類中重複聲明並使用它,這種共用機(jī)制減小了模型的規(guī)模。更重要的是,它減少了為了模型的更新而必須做的改變和意外的前後定義不一致。泛化示例例如水陸兩用汽車他即是汽車又是船,那麼在對(duì)交通工具進(jìn)行抽象時(shí),就可認(rèn)為水陸汽車類即繼承了汽車類又繼承了船類,這就是多重繼承。3.3.3實(shí)現(xiàn)(realization)實(shí)現(xiàn)(realization)是類元(類)之間的語義關(guān)係,關(guān)係中的一個(gè)類元(類)描述了另一個(gè)類元(介面)實(shí)現(xiàn)的契約。也就是說,實(shí)現(xiàn)關(guān)係中的一個(gè)類只具有行為的定義,而具體的結(jié)構(gòu)和行為,則是由另一個(gè)類來給出。例如3.3.4關(guān)聯(lián)(association)關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)係,它詳述了一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象相互聯(lián)繫。例如,類Library(圖書館類)與類Book(書類)就是一種一對(duì)多的關(guān)聯(lián),這表明每一個(gè)Book實(shí)例僅被一個(gè)Library實(shí)例所擁有。此外,給定一個(gè)Book,能夠找到它所屬的Library,給定Library,能夠找到它的全部Book。在UML中,把關(guān)聯(lián)畫為連接相同或不同的類的一條實(shí)線。當(dāng)要表示結(jié)構(gòu)關(guān)係時(shí),就使用關(guān)聯(lián)。3.3.4關(guān)聯(lián)(association)示例3.3.1

請對(duì)書與書目之間的關(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)名即名稱關(guān)聯(lián)可以通過命名的方式來描述關(guān)係的性質(zhì)。此關(guān)聯(lián)名稱應(yīng)該取為動(dòng)詞短語,因?yàn)樗砻髟磳?duì)象正在目標(biāo)對(duì)象上執(zhí)行的動(dòng)作。為了消除名稱含義的歧義,UML中提供了一個(gè)指引讀者名稱方向的三角形,並給名稱一個(gè)方向。3.3.4關(guān)聯(lián)(association)示例3.3.2

在圖書館管理系統(tǒng)中的書與書目記錄之間是存在著一種關(guān)聯(lián)關(guān)係。這種關(guān)聯(lián)關(guān)係可以稱為“擁有”而名稱的方向是指向書目類。如圖3.3.7所示。3.3.4關(guān)聯(lián)(association)(2)角色當(dāng)一個(gè)類處於關(guān)聯(lián)的某一端時(shí),該類就在這個(gè)關(guān)係中扮演了一個(gè)特定的角色。它呈現(xiàn)的是對(duì)另一端的職責(zé)。可以顯式地命名類在關(guān)聯(lián)中所扮演的角色。(3)多重性關(guān)聯(lián)表示了對(duì)象間的結(jié)構(gòu)關(guān)係。有時(shí)在建模時(shí)需要說明一個(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è)類所描述的是一個(gè)較大的事物(即“整體”),它由較小的事物(“部分”)組成。這種關(guān)係在面向?qū)ο笾芯头Q為聚合,它描述了“has-a”的關(guān)係,意思是整體對(duì)象擁有部分對(duì)象。在UML中被表示為在整體的一端用一個(gè)空心菱形修飾的簡單關(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í)心菱形箭頭的簡單關(guān)聯(lián)修飾它。3.3.4關(guān)聯(lián)(association)(6)導(dǎo)航:給定兩個(gè)類(如Book類和Library類)之間的一個(gè)簡單的、未加修飾的關(guān)聯(lián),從一個(gè)類的對(duì)象能夠?qū)Ш降搅硪粋€(gè)類的對(duì)象。除非另有指定,否則關(guān)聯(lián)的導(dǎo)航是雙向的。例如圖書館管理系統(tǒng)中,對(duì)象Librarian(管理員)和Password之間有一個(gè)關(guān)聯(lián)。給定一個(gè)管理員,就需要找到對(duì)應(yīng)的對(duì)象Password,反之不需要成立.任務(wù)解決-分析該模組中的類存在如下關(guān)係:1.關(guān)聯(lián)關(guān)係所有的操作介面類與管理類之間就是一種普通的關(guān)聯(lián)關(guān)係。

2.泛化關(guān)係我們可將管理員類和讀者類相同的特性和操作抽象出來形成一個(gè)父類(Client),那麼管理員類、讀者類與用戶類之間就是一種泛化關(guān)係任務(wù)解決-繪製類圖在類圖中繪製類的關(guān)係圖。精練請您根據(jù)本節(jié)所學(xué)的知識(shí)解決專案中的任務(wù)2分析:圖書館的主要靜態(tài)模型類圖是由書籍管理類、書類、書目類、管理員類、用戶類和各種介面操作類組成。其中用戶類與管理員類是泛化的關(guān)係,而其他類之間均是關(guān)聯(lián)關(guān)係。請根據(jù)演示部分繪製類圖的方法為書籍管理業(yè)務(wù)繪製類圖。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)的變化來描述的。在UML中,動(dòng)態(tài)模型主要是通過交互圖和行為圖來描述。交互圖(InteractionDiagram)是由一組對(duì)象和它們之間的關(guān)係構(gòu)成,其中包括在對(duì)象間的傳遞的資訊,它包括順序圖和協(xié)作圖。3.4.1順序圖(SequenceDiagram)順序圖(SequenceDiagram)是強(qiáng)調(diào)消息時(shí)間順序的交互圖。順序圖描述了類相互協(xié)作的完成預(yù)期行為的動(dòng)態(tài)過程。順序圖向用戶提供了隨時(shí)間推移、清晰和可視的事件流軌跡。

3.4.1順序圖(SequenceDiagram)示例3.4.1

繪製出圖書館管理系統(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)類角色(ClassRole)(2)生命線(Lifeline)(3)啟動(dòng)期(Activation)(4)消息(Message)3.4.1順序圖(SequenceDiagram)順序圖的特徵:(1)順序圖有生命線(2)順序圖有啟動(dòng)期3.4.2協(xié)作圖(CollaborationDiagram)協(xié)作圖作為另一種交互圖而言,強(qiáng)調(diào)的是參加交互的對(duì)象的組織。協(xié)作圖只對(duì)相互間有交互作用的對(duì)象和這些對(duì)象間的關(guān)係建模,而忽略了其他沒有交互的對(duì)象和關(guān)聯(lián)。協(xié)作圖不僅可以表示對(duì)象間的關(guān)聯(lián),而且可以表現(xiàn)對(duì)象間的資訊傳遞。3.4.2協(xié)作圖(CollaborationDiagram)示例3.4.2繪製出圖書館管理系統(tǒng)中的用戶登錄活動(dòng)的協(xié)作圖。3.4.2協(xié)作圖(CollaborationDiagram)協(xié)作圖的組成:(1)類角色(ClassRole)(2)關(guān)聯(lián)角色(AssociationRole)(3)消息流(MessageFlow)3.4.2協(xié)作圖(CollaborationDiagram)協(xié)作圖的特徵:(1)協(xié)作圖有路徑(2)協(xié)作圖有順序號(hào)任務(wù)解決-分析1.借書交互操作的動(dòng)態(tài)建模由業(yè)務(wù)模型對(duì)借書交互操作的描述可知,借書是圖書管理的最基本的功能。它是由管理員角色、借書窗體類(LendFrame)、書籍管理類(BookManager)、書籍類(Book)、書目類(Item)、借書記錄類(Loan)、讀者管理類(ReaderManager)和讀者類(Reader)組成。

2.還書的交互操作動(dòng)態(tài)建模從對(duì)還書業(yè)務(wù)的描述可知該交互操作的動(dòng)態(tài)建模,是由:管理員角色、還書窗體類(ReturnFrame)、書籍管理類(BookManager)、書籍類(Book)、書目類(Item)和借書記錄類(Loan)組成。任務(wù)解決任務(wù)解決任務(wù)解決任務(wù)解決精練請您根據(jù)本節(jié)所學(xué)的知識(shí)解決專案中的任務(wù)2分析:根據(jù)演示部分對(duì)圖書業(yè)務(wù)功能模組中的交互操作進(jìn)行動(dòng)態(tài)建模的操作步驟和方法,請你對(duì)書籍管理模組中的交互操作進(jìn)行動(dòng)態(tài)建模。該模組中主要存在新增書籍、修改書籍資訊和刪除書籍三種交互操作。4.1.1對(duì)象圖(ObjectDiagram)對(duì)象圖(ObjectDiagram)是描述在某一時(shí)刻,一組對(duì)象以及它們之間關(guān)係的圖形。

對(duì)象圖可以看作是類圖在系統(tǒng)某一時(shí)刻的實(shí)例。對(duì)象圖表示的是被凍結(jié)的系統(tǒng)在運(yùn)行時(shí)的某一瞬間的情況,類似於使用DVD播放機(jī)播放DVD光碟時(shí),按下暫停(pause)鍵時(shí),出現(xiàn)的靜止畫面。4.1.1對(duì)象圖(ObjectDiagram)對(duì)象圖中一般包括“對(duì)象”和“鏈”兩類基本的模型元素。1.對(duì)象(Object)一般來說,把類的具體表示稱為對(duì)象,對(duì)象是類的實(shí)例。4.1.1對(duì)象圖(ObjectDiagram)2.鏈(link)鏈?zhǔn)莾蓚€(gè)或多個(gè)對(duì)象之間的獨(dú)立連接,是關(guān)聯(lián)的實(shí)例。通過鏈可以將多個(gè)對(duì)象連接起來,形成一個(gè)有序列表,稱為元組。4.1.1對(duì)象圖(ObjectDiagram)3.對(duì)象圖的建模技術(shù)要對(duì)對(duì)象結(jié)構(gòu)建模,應(yīng)遵循以下步驟:確定參與交互的各對(duì)象的類,可以參照相應(yīng)的類圖和交互圖確定類間的關(guān)係,如依賴、泛化、關(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ì)象圖來捕獲系統(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ì)象中必不可少的屬性值不要過分地簡化,以免產(chǎn)生誤解4.1.2包(package)包是用於把元素組織成組的通用機(jī)制。包有助於組織模型中的元素,使你更容易理解系統(tǒng)模型,也可以控制對(duì)包的內(nèi)容的訪問。UML提供了對(duì)包的圖形表示法。4.1.2包(package)1.包的名字和其他建模元素一樣,每個(gè)包都必須有一個(gè)區(qū)別於其他包的名字。4.1.2包(package)2.包擁有的元素包是對(duì)模型元素進(jìn)行分組的機(jī)制,它把模型元素劃分成若干個(gè)子集。包可以擁有UML中其他元素,包括類、介面、組件、節(jié)點(diǎn)、協(xié)作、用例、甚至還可以包含其他子包。對(duì)包內(nèi)所包含的建模元素可以使用文本或圖形的方式,加以顯示。4.1.2包(package)3.包的可見性包內(nèi)的元素加以控制,使得某些元素能被外界訪問,可見某些元素不能被外界訪問。這就是所謂的包內(nèi)元素可見性控制。可見性可以分成3種:公有訪問(public)保護(hù)訪問(protected)私有訪問(private)4.1.2包(package)圖4.1.6分別描述了三種類型的訪問可見性。4.1.2包(package)4.引入(import)與導(dǎo)出(export)引入(import)使得一個(gè)包中的元素可以單向訪問另一個(gè)包中的元素。導(dǎo)出(export)指的是包中具有公有訪問許可權(quán)的內(nèi)含元素,一個(gè)包中“導(dǎo)出”部分僅僅只對(duì)顯示地引入這個(gè)包的其他包中的內(nèi)含元素可見。4.1.2包(package)5.泛化關(guān)係在包之間可以有兩種關(guān)係:一種關(guān)係是引入和訪問依賴;另一種關(guān)係就是泛化。包間的泛化關(guān)係與類之間的泛化關(guān)係類似。 4.1.2包(package)6.標(biāo)準(zhǔn)元素UML的擴(kuò)充機(jī)制同樣適用於包元素,可以使用標(biāo)記值來增加包的新特性,用構(gòu)造型來描述包的新種類。UML定義了5種構(gòu)造型來為其標(biāo)準(zhǔn)擴(kuò)充,分別是:虛包(facade)框架(framework)樁(stub)子系統(tǒng)(subsystem)系統(tǒng)(system)。4.1.2包(package)7.包建模技術(shù)①分析系統(tǒng)的模型元素(通常是對(duì)象類),把概念上或語義上相近的模型元素歸入同一個(gè)包。②對(duì)於每一個(gè)包,標(biāo)出其模型元素的可視性,確定包內(nèi)每個(gè)元素的訪問屬性,是公共、保護(hù)或私有。③確定包與包之間的依賴聯(lián)繫,特別是“引入”關(guān)係。④確定包與包之間的泛化關(guān)係。⑤繪製包圖。⑥對(duì)結(jié)果進(jìn)行精化和細(xì)化。任務(wù)解決通過本節(jié)對(duì)對(duì)象圖的描述,可以知

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論