




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