版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、rational rose & oo建模臧立威課程目標n了解可視化建模的相關(guān)知識n能夠使用rational rosen能夠看懂別人用uml表示的設(shè)計n具備oo建模的基本技能課程內(nèi)容n1. 可視化建?;A(chǔ)n2. oo基礎(chǔ)n3. 需求建模n4. 基于團隊的建模n5. 分析n6. 設(shè)計n7. 正向工程和逆向工程1. 可視化建?;A(chǔ)什么是可視化建模業(yè)務流程計算機系統(tǒng)可視化建??梢暬>褪怯脴藴实膱D形表示法來建?!敖+@取系統(tǒng)的關(guān)鍵部分”uml可視化建模的作用(1)n可視化建模獲取業(yè)務流程n用例(use case)分析是一種從用戶的角度獲取業(yè)務流程的技術(shù)n使用相同的語言,不至于產(chǎn)生歧義n用例分
2、析能讓分析師在構(gòu)建系統(tǒng)之前理解要構(gòu)建什么可視化建模的作用(2)n可視化建模是一個交流工具業(yè)務領(lǐng)域計算機領(lǐng)域業(yè)務對象和邏輯業(yè)務對象和邏輯可視化建模的作用(3)n管理復雜性n把3000多個類放在一張圖中不好n可視化建模的“包”(package)n把元素模型化成有意義的組合n為不同的人提供不同級別的抽象n軟件構(gòu)架(architecture)logical viewphysical viewuser interfacebusiness logicdatabasevb javac+ javac+&sql可視化建模的作用(4)n促進復用(reuse)n復用是軟件的“圣杯”n不止是復用代碼,而是復用
3、建立原始工件時需要的所有分析、設(shè)計、實現(xiàn)、測試、文檔化n可以有一個類復用、多個類(或一個組件)的復用、應用模式等復用方式n可視化建模讓你從復用的角度看,如果想復用工件,什么是可用的什么是umlnuml(unified modeling language)是可視化、說明、構(gòu)建和文檔化軟件系統(tǒng)工件的標準語言numl可以做下面的建模n數(shù)據(jù)建模n業(yè)務建模n對象建模n組件建模numl可以用于可視化建模n系統(tǒng)與外界的交互n系統(tǒng)的行為n系統(tǒng)的結(jié)構(gòu)n系統(tǒng)的構(gòu)架n系統(tǒng)的組件視圖(views)n模型由不同的view和diagram構(gòu)建而成,描述了不同的視點和系統(tǒng)的構(gòu)建塊nview是一個對特定涉眾有意義的模型的視點
4、nview是模型的“碎片”nrose中的“4+1view”logical view分析師設(shè)計師structureprocess view系統(tǒng)集成員performancescalabilitythroughputimplementation view編程人員software managementuse-case view最終用戶functionalitydeployment view系統(tǒng)工程system topologydelivery installationcommunication圖(diagrams)n用例圖(use case diagram):模型化系統(tǒng)與外界的交互n類圖(class
5、diagram):模型化系統(tǒng)的結(jié)構(gòu)n時序圖(sequence diagram):模型化系統(tǒng)的行為n協(xié)作圖(collaboration diagram):模型化系統(tǒng)的行為n組件圖(component diagram):模型化組件的組織和依賴n部署圖(deployment diagram):模型化系統(tǒng)的硬件分布n活動圖(activity diagram):模型化系統(tǒng)內(nèi)的事件流n狀態(tài)圖(statechart diagram):模型化狀態(tài)相關(guān)的方面模型結(jié)構(gòu)view作用作用模型模型圖圖use case view是其他view的“心臟”,說明系統(tǒng)做什什么么use case modeluse case di
6、agramactivity diagram(可選)statechart diagram(可選)logical view支持系統(tǒng)的功能性需求analysis model(可選)design modelclass diagramsequence diagramcollaboration diagramactivity diagram(可選)statechart diagram(可選)process view闡述系統(tǒng)的性能、伸縮性和吞吐量process modelclass diagramimplementation view以分包、分層和配置管理的形式描述了靜態(tài)軟件模型的組織implementat
7、ion modelcomponent diagramdeployment view如何把執(zhí)行體和其他運行時組件映射到下層平臺或計算節(jié)點deployment modeldeployment diagramrational rose的界面nbrowser讓你可以文本化的查看和導航views和diagramsn不在browser中的元素就不是模型化系統(tǒng)的一部分ndiagram window讓你可以創(chuàng)建、修改和模型化當前模型的圖形化視圖ndiagram toolbarn包括構(gòu)建diagram的元素n每個diagram都有自己獨特的toolbarn只有顯示diagram時才是活動的ndocumentat
8、ion window用于創(chuàng)建、查看或修改解釋diagram中被選項目的文本nlog window報告進度、結(jié)果和錯誤ntitle組成nrational rose-模型名-xx diagram:diagram所在的package名/diagram名rational rose2. oo基礎(chǔ)對象n對象是一個有定義良好的邊界和標識,并封裝了狀態(tài)(state)和行為(behavior)的實體。可以是物理的(如一個卡車)、概念的(如一個化學過程)或軟件的(如一個鏈表)n狀態(tài)n是對象可以處于的狀況n對象的狀態(tài)隨時間變化n用屬性(attribute)和關(guān)系(relation)表示n行為n行為決定對象如何動作和
9、做反應n對象的可見行為用一系列它響應的消息來模型化n用操作(operation)、方法(method)和狀態(tài)機(state machine)表示n標識(identity)n每個對象有唯一的標識n例如,一個名叫j clark的教授對象的信息如下(她的狀態(tài)是tenured):nname: j clarknemployee id:567138(標識)nstatus: tenuredndiscipline: finance 類n類是對一系列具有相同屬性、操作、關(guān)系和語義的對象的描述n對象是類的實例n類定義了它的所有對象的結(jié)構(gòu)和行為的模板面向?qū)ο蟮幕疽?guī)則n抽象(abstraction)n對象區(qū)別于其他
10、對象的本質(zhì)特征n定義與使用者視點相關(guān)的邊界n不是具體的表現(xiàn),而是理想化的本質(zhì)n封裝(encapsulation)n對用戶隱藏了實現(xiàn),用戶只能通過接口與對象通信n封裝通常叫“信息隱藏”n封裝使對象的狀態(tài)不受用戶的影響,使用戶不受對象實現(xiàn)變化的影響n模塊化(modularity)n把復雜的東西分成可管理的小塊n幫助人們理解復雜的系統(tǒng)3. 需求建模需求流程用例模型n為什么要創(chuàng)建用例模型n用例模型允許顧客和系統(tǒng)開發(fā)者之間用一種用戶可以理解的語言交流系統(tǒng)要做什么n你可以認為用例模型是顧客和開發(fā)者之間的可視化契約n什么是用例模型n在use-case view中創(chuàng)建n用例模型代表了從最終用戶角度看的系統(tǒng)的功
11、能和環(huán)境n是顧客和開發(fā)者之間的契約n對于分析、設(shè)計和測試活動都是至關(guān)重要的n包括用例圖、用例規(guī)約和補充規(guī)約,也可以包括活動圖用例圖(use case diagram)n用例圖表示了用例和主角以及用例和用例之間的關(guān)系n可視化的表示出了客戶希望系統(tǒng)做什么n代表一些大的完整的功能n表示系統(tǒng)完成的有明確結(jié)果的對主角有價值的一系列動作n可以模型化n所有的主角和用例(global view)n某個選定主角的所有用例n一個用例以及它所有的關(guān)系n一個迭代的所有的用例用例圖的元素n主角n用例n關(guān)系registrationstudent主角(actor)n定義:系統(tǒng)外的與系統(tǒng)進行交互的人或事物n種類n人n外部系統(tǒng)
12、n外部設(shè)備或timern識別actor要依據(jù)actor的定義,可以這樣查找:n有哪些用戶使用系統(tǒng)?n系統(tǒng)會用到哪些外部的系統(tǒng)或設(shè)備?n有什么外部系統(tǒng)或設(shè)備會用到要開發(fā)的系統(tǒng)?n有沒有定時觸發(fā)的行為?主角(actor)n如何判斷一個事物是不是actorn首先它必須與系統(tǒng)有交互,如果與系統(tǒng)沒有交互則不是主角n其次它必須是系統(tǒng)外的,如果它是我們將要開發(fā)的系統(tǒng)或是系統(tǒng)的一部分則不是主角n其它n用戶如果通過標準的輸入和輸出設(shè)備與系統(tǒng)交互則用戶是actorn用戶如果通過特殊的設(shè)備與系統(tǒng)交互,則設(shè)備是actor用例(use case)n定義:是actor與系統(tǒng)的一系列交互n特點:n完成actor的某個目的(
13、不是功能),一般會給actor一個有價值的結(jié)果 n起始于actor的輸入 n其中,系統(tǒng)是一個黑盒n用于描述系統(tǒng)行為,但不描述如何實現(xiàn)n識別用例的依據(jù)就是用例的定義和特點 n識別用例時需要注意 n用例的粒度不要太大也不要太小n用例描述的是系統(tǒng)做什么,初始識別用例的時候不要過多考慮系統(tǒng)的實現(xiàn),即把系統(tǒng)作為黑盒n外部系統(tǒng)或設(shè)備的行為不是要開發(fā)的系統(tǒng)行為,不要識別出來用例用例( use case)n有些用例不代表系統(tǒng)的主要功能,因而通常會被大家忽視,這些用例可能屬于以下類型:n系統(tǒng)啟動和停止n系統(tǒng)的維護。例如,添加新用戶和建立用戶簡檔n維護在系統(tǒng)中存儲的數(shù)據(jù)。例如,所構(gòu)建的系統(tǒng)和遺留系統(tǒng)平行工作,所以
14、數(shù)據(jù)需要在兩個系統(tǒng)之間達到同步n修改系統(tǒng)行為所需的功能。例如創(chuàng)建新報告的功能,它不僅可以創(chuàng)建硬代碼,還可以對系統(tǒng)中存儲的數(shù)據(jù)創(chuàng)建一組特定報告actor和use case的關(guān)系nactor與use case之間的關(guān)系是association關(guān)系,含義是“觸發(fā)”,千萬不要理解成數(shù)據(jù)流 systemstartup(from system)driver(from actors)rose操作加入模型元素n從browser窗口中加入n選擇要加入模型元素所在的package,單擊鼠標右鍵,從彈出菜單中選擇new-模型元素種類(如class,package,use case diagram等),此時相應的包下
15、面就會加入一個新的元素,你可以為它命名n從diagram的toolbar中直接加入n從toolbar中選擇要加入的元素類型,單擊diagram窗口的某個位置,新的元素就會顯示到diagram窗口中,此時你可以為新元素命名。同時browser中也出現(xiàn)新的元素(新的模型元素會加入到相應的diagram所在的包中)。rational roserose操作更改模型元素n雙擊browser或diagram中的元素(或者單擊鼠標右鍵,從彈出菜單中選擇open specification)就會打開新建元素的specification,在specification對話框中,你可以更改名字以及做其他的設(shè)置n注意
16、:diagram沒有specificationn注意:雙擊diagram中的package,不會打開它的specification,而是進入package下的某個類圖rational roserose操作刪除模型元素ndelete from model:模型元素從模型中刪除(也從它參與的所有圖中刪除)n從browser中選擇要刪除模型元素,單擊鼠標右鍵,從彈出菜單中選擇delete,或者n從diagram中選擇要刪除模型元素,從菜單中選擇edit-delete from model(快捷鍵ctrl+d)ndelete from diagramn從diagram中中選擇要刪除模型元素,從菜單中選
17、擇edit-delete (快捷鍵del)rational rose實踐ndemon識別atm系統(tǒng)的主角和用例,并在rose中畫出用例圖詳細用例模型nactor之間的關(guān)系泛化(generalization)nuse case之間的關(guān)系n泛化(generalization):不常用n擴展(extend)n包含(include)super actorsub actor用例之間的擴展關(guān)系n擴展關(guān)系的雙方分別叫做基本用例(base use case)和擴展用例(extension use case)n擴展用例用來模型化基本用例中n有條件的部分,只在某些環(huán)境下執(zhí)行n復雜的或可選的路徑。n擴展關(guān)系用ste
18、reotype是“extend” 的association關(guān)系來表示extensivebasic用例之間的擴展關(guān)系n擴展用例和基本用例的關(guān)系n基本用例自身應是完整的,即基本用例在不必引用任何擴展用例的情況下,應該是可理解且有意義的 n基本用例可以不依賴于擴展用例而單獨的運行n擴展用例只有在基本用例中的某種條件滿足時才能執(zhí)行,如果沒有基本用例,擴展用例不能運行n擴展用例可以擴展多個基本用例n擴展點n定義在基本用例的哪些位置插入擴展用例 n包括一個名稱和對用例事件流中一個或多個位置的引用n一個擴展點可以引用基本用例內(nèi)的兩個行為步驟之間的單個位置,也可以引用一組不連續(xù)的位置 擴展關(guān)系的實例 n在電話
19、系統(tǒng)中,為用戶提供的主要服務通過用例“打電話”來表示??蛇x服務的示例包括n能讓第三方加入通話(召開電話會議)n允許接收方看到呼叫方的身份(顯示呼叫方身份)n我們可以將這些可選服務所需的行為表示為基本用例“打電話”的擴展用例,由于“打電話”本身就具有意義,您無需閱讀擴展用例的說明就可理解基本用例的主要目的 callercalleeplae conference callshow caller identifyplace call用例之間的包含關(guān)系 n包含關(guān)系的雙方分別叫做基本用例(basic use case)(或具體用例, concrete use case)和包含用例(included us
20、e case)(或抽象用例, abstract use case) n包含用例用來模型化基本用例中n多個用例都包含的路徑n復雜的路徑n包含用例要能生成一個有意義的結(jié)果n擴展關(guān)系用stereotype是“include” 的association關(guān)系來表示basic use caseincluded use case用例之間的包含關(guān)系n抽象用例和具體用例n抽象用例不能單獨執(zhí)行,必須與包括(也就是執(zhí)行)它的具體用例一起執(zhí)行 n抽象用例沒有特定的actor,它的actor實際上包括它的具體用例的actorn抽象用例可以被幾個其他的用例復用 n具體用例的基本流執(zhí)行時,抽象用例一定執(zhí)行擴展關(guān)系和包含關(guān)系
21、n共同點n擴展用例和包含用例都是基本用例的一部分n基本用例不執(zhí)行,擴展用例和包含用例都不會執(zhí)行n擴展用例可以擴展多個基本用例;包含用例可以被多個基本用例包含n區(qū)別n擴展關(guān)系中基本用例的基本流執(zhí)行時,擴展用例不一定執(zhí)行,即擴展用例只有在基本用例滿足某種條件的時候才會執(zhí)行n包含關(guān)系中基本用例的基本流執(zhí)行時,包含用例一定會執(zhí)行 包含關(guān)系的實例 n在 atm 系統(tǒng)中,用例 withdraw cash、deposit cash和 transfer funds都需要包含系統(tǒng)識別客戶的過程。可以將此行為抽取到一個名為 identify customer的新包含用例中n從基本用例的角度來看,識別客戶方法是讀取
22、銀行磁卡還是執(zhí)行視網(wǎng)膜掃描并不重要。它們僅依賴于 identify customer 的結(jié)果,即客戶的身份。n從 identify customer 用例的角度來看,基本用例如何使用客戶身份或者在執(zhí)行包含用例之前基本用例中發(fā)生了什么并不重要:識別方法都會完全相同 withdraw cashtransfer fundsdoposit cashidentify customerstereotype的作用n擴展模型元素n例如rose中沒有extend和include關(guān)系,于是用stereotype是“extend”和“include”的association關(guān)系來表示n給模型元素分類n例如將來把分析
23、類分成“boundary”、”entity”和“control”三種rational rose用例規(guī)約(use case specification)n用例名字(name)n簡要說明(brief description)n事件流(flows of events)n特殊需求(special requirements)n前置條件(pre-conditions)n開始用例前所必需的系統(tǒng)及其環(huán)境的狀態(tài)n后置條件(post-conditions)n用例結(jié)束后系統(tǒng)可能具備的狀態(tài)n擴展點(extension points)事件流n事件流用文本形式描述了用戶和系統(tǒng)之間如何進行交互n用例的執(zhí)行有很多種情況,每一
24、種情況就是一個場場景景 (scenario),用例的事件流應該描述出所有的場景 n事件流分成基本流(基本流(basic flowbasic flow)和備選流備選流(alternative flowalternative flow)兩種n基本事件流應包括在執(zhí)行用例時“通?!睍l(fā)生的事件,也叫happy flown備選事件流包括與正常行為相關(guān)的可選或異常特征的行為,同時也包括正常行為的各種變形n可以將備選事件流看作是基本事件流的“繞行道”,有些備選事件流將返回到基本事件流,而有些將結(jié)束此用例的執(zhí)行前置條件和后置條件n前置條件或后置條件所說明的狀態(tài)應該是用戶可以觀察到的狀態(tài) n前置條件是對用例何時
25、開始的約束,它并不是使用例開始的事件n雖然可以在分支流級別定義前置條件和后置條件,但是一個用例的前置條件并不只是一個分支流的前置條件n無論執(zhí)行了哪些備選流,用例的后置條件都應為“真”;它不能只對主事件流為“真”。如果可能出現(xiàn)故障,則應在后置條件內(nèi)包括“該動作已經(jīng)完成,或者,如果可能出現(xiàn)故障,則不執(zhí)行該動作”,而不只是“該動作已經(jīng)完成” 實踐ndemon描述withdraw用例的用例描述4. 基于團隊的建?;趫F隊的建模n受控的演化nrose通過使用uml包和子系統(tǒng)支持基于構(gòu)架的建模nrose幫助用戶在不影響其他人工作的情況下進行詳細設(shè)計nrose幫助用戶避免創(chuàng)建構(gòu)架單元之間不恰當?shù)穆?lián)系n把模型
26、劃分成在構(gòu)架上有重大意義的單元n可以分成叫做受控單元的單獨的文件n構(gòu)架上有重大意義的模型元素的復用rational rose受控單元n受控單元n是rational rose保存模型全部或一部分的文件n是能進行版本控制的模型元素n定義了單個開發(fā)人員可以操作模型的一部分n在團隊中共享n讓團隊可以平行開發(fā)n一定是包n下面元素可以作為受控單元n模型文件本身(.mdl)n邏輯視圖和用例視圖包(.cat)n組件視圖包(.sub)n部署視圖的圖(.prc)n模型屬性(.prp)rational rose受控單元n受控單元可以被loaded或unloadedn可以load模型的一部分,這樣就減少了啟動延遲、資
27、源消耗和維護對unloaded的單元的索引n可以被write enable或write protect(手動的或自動的)n子受控單元具有獨立于父受控單元的寫保護n即使有版本控制系統(tǒng),也可以對受控單元進行寫保護控制nreload模型后,寫保護失效n手動寫保護不影響文件系統(tǒng)的訪問權(quán)限nmodel workspace是當前裝載的受控單元和打開的diagram的快照nmodel包括組成完成模型的圖、元素和受控單元nmodel workspace包括某個model在某一點上的打開的圖和受控單元的實際狀態(tài)rational rose虛路徑n虛路徑使模型可以在不同的目錄結(jié)構(gòu)中移動,可以從不同的workspac
28、e上修改。rational rose虛路徑使model脫離物理位置虛路徑物理路徑5. 分析分析和設(shè)計流程分析和設(shè)計分析設(shè)計側(cè)重于理解問題側(cè)重于解決問題功能需求非功能性需求系統(tǒng)結(jié)構(gòu)行為(behavior)操作和屬性對象的生命周期小模型大模型用例實現(xiàn)n用例實現(xiàn)n對用例模型中的每個用例,在設(shè)計模型中都有相應的實現(xiàn)n提供從分析和設(shè)計到需求的可跟蹤性n用例實現(xiàn)結(jié)構(gòu)n用例實現(xiàn)包n是組織用例的類和交互圖的方式n每個用例都對應一個用例實現(xiàn)包n可跟蹤性圖n交互圖n時序圖(sequence diagrams)(動態(tài))n協(xié)作圖(collaboration diagrams) (動態(tài))n類圖(class diagra
29、ms) (靜態(tài))registration(from use case view)registration分析類 n分析類代表“系統(tǒng)中具備職責和行為的事物”的初期概念模型。這些概念模型最終將演進為設(shè)計模型中的類和子系統(tǒng)n分類n邊界類(boundary class)n接口與系統(tǒng)外部某些事物的媒介 n控制類(control class)n負責協(xié)調(diào)用例的行為 n實體類(entity class) n封裝了數(shù)據(jù)以及數(shù)據(jù)相關(guān)的操作邊界類n邊界類幫助系統(tǒng)接口與系統(tǒng)外部進行交互。邊界對象將系統(tǒng)與其外部環(huán)境的變更(與其他系統(tǒng)的接口的變更、用戶需求的變更等)分隔開,使這些變更不會對系統(tǒng)的其他部分造成影響 n分類n
30、用戶接口類n幫助與用戶進行通信的類,通過標準的i/o設(shè)備提供人機界面 n系統(tǒng)接口類n幫助與其他系統(tǒng)進行通信的類,系統(tǒng)接口對象隱藏如何與外部接口通信的細節(jié) n設(shè)備接口類或timer n提供對硬件設(shè)備的軟件接口 控制類n作用n用于對一個或幾個用例所特有的控制行為進行建模,控制類封裝了用例的特有行為n控制對象(控制類的實例)通??刂破渌麑ο螅虼怂鼈兊男袨榫哂袇f(xié)調(diào)性質(zhì)n控制類有效地將邊界對象與實體對象分開,讓系統(tǒng)更能適應其邊界內(nèi)發(fā)生的變更n控制類還將用例所特有的行為與實體對象分開,使實體對象在用例和系統(tǒng)中具有更高的復用性n控制類并不能處理用例需要執(zhí)行的一切事務。相反,它協(xié)調(diào)其他用來實施此功能的對象的
31、活動??刂祁悓⒐ぷ魑山o已被指定負責此項功能的對象??刂祁愅ǔ1豢闯梢粋€樂隊的指揮,它指揮(控制)參與use case的其它對象的行為,通知對象什么時候執(zhí)行以及執(zhí)行什么。 n有的用例沒有控制類,復雜的用例可以有多個控制類n控制對象的生命周期通常和用例實例的生命周期相同實體類n作用實體類是用于對必須存儲的信息和相關(guān)行為建模的類。實體對象用于保存和更新一些現(xiàn)象的有關(guān)信息,例如事件、人員或者一些現(xiàn)實生活中的對象n實體類的特點n實體類通常都是永久性的,它們所具有的屬性和關(guān)系是長期需要的,有時甚至在系統(tǒng)的整個生存期都需要n一個實體對象通常不是某個用例實現(xiàn)所特有的;有時,一個實體對象甚至不專用于系統(tǒng)本身n
32、屬性和關(guān)系的值通常由主角指定,執(zhí)行系統(tǒng)內(nèi)部任務時也可能要使用實體對象n實體對象的行為可以和其他類的對象的行為一樣復雜。但是,與其他對象不同的是,這種行為與實體對象所代表的現(xiàn)象具有很強的相關(guān)性n實體對象是獨立于環(huán)境(主角)的n實體對象代表了開發(fā)中的系統(tǒng)的核心概念 查找分析類n每個用例主角對都至少有一個邊界類n可以首先為每個用例實現(xiàn)確定一個控制類,接著,在確定了更多的用例實現(xiàn)并發(fā)現(xiàn)更多的共性后,再對其進行改進nactor的信息可以作為一個實體類n用過濾名詞方法尋找實體類n在use case flow of events中畫出名詞n去掉重復的候選n去掉含糊的候選n去掉actorn去掉實現(xiàn)結(jié)構(gòu)n去掉屬
33、性n去掉操作n此時剩下的名詞一般就是實體記錄分析類n在“design model”包中加入識別出來的分析類n分析類的類型用類的stereotype表示n如果能說明某個分析類的責任,就給該分析類加上說明 實踐ndemon識別課程注冊系統(tǒng)中register for course用例的分析類將行為分配給分析類n用時序圖和協(xié)作圖來描述用例行為n是動態(tài)建模的一部分n每個用例的每個事件流(基本流和備選流)建一個或多個時序圖和協(xié)作圖 n具有多個復雜時間點或者判定點的分支流通常需要用不同的圖來說明,而復雜流因為太長而無法用一個圖來把握時也需要用不同的圖來說明 n一般都是從時序圖入手,生成了時序圖之后,在 ro
34、se的browser中選擇時序圖,然后按“f5”鍵,就會生成該時序圖對應的協(xié)作圖 時序圖n時序圖表示如何一步步的完成系統(tǒng)的一個功能n時序圖是用于決定類責任和接口的主要信息來源n時序圖描述了對象間的交互模式n通過對象的“生命線”和他們相互發(fā)送的消息來顯示對象n時序圖與協(xié)作圖在語義上是相同的,只是時序圖中的消息是按時間順序分布的n時序圖表示的是一個場景(scenario)n組成n主角(actor)n對象(object)n消息(message):消息可以有sequence numbern生命線(lifeline):表示對象在特定時間的存在 nfocus of control:表示對象直接或通過子過程
35、執(zhí)行動作的一段時間時序圖的元素協(xié)作圖n協(xié)作圖顯示對象之間的交互n協(xié)作圖強調(diào)參與交互的對象的組織n適合分析活動,適合表示少數(shù)對象的簡單交互n協(xié)作圖很難顯示補充的說明性信息,例如時間、判定點或其他非結(jié)構(gòu)化的信息,而在序列圖中這些信息可以方便地添加到注釋中 n組成n主角(actor)n對象(object)nlinks:link是對象通信的途徑n消息(message)協(xié)作圖的元素實例ndemon課程注冊系統(tǒng)中register for course用例的用例分析類的職責n在開發(fā)初期,類的屬性和操作不一定被定義,但是我們知道了類的職責n類的責任就是類可以提供的事物的狀態(tài)或契約n類的責任用/表示類圖n類圖n
36、表示一系列類、接口和它們的關(guān)系n表示系統(tǒng)的靜態(tài)視圖,在logical view中n用例實現(xiàn)的類圖又叫vopc(view of participated classes)nvopc類圖表示用例實現(xiàn)的參與類以及這些類之間的關(guān)系n確??缭阶酉到y(tǒng)的用例實現(xiàn)的一致性n類圖的元素n類n關(guān)系類之間的關(guān)系ndependency(依賴)n體現(xiàn)“暫時使用”的含義,或者b的變更會導致a的變更n是一種暫時的關(guān)系n可以有以下幾種實現(xiàn)方式n對象具有“全局”范圍,系統(tǒng)中的任何對象都可以向它發(fā)送消息n一個對象可以作為一個參數(shù)傳遞給第二個對象n對象可以在操作內(nèi)創(chuàng)建和破壞(即“臨時”對象)nassociation(關(guān)聯(lián))n體現(xiàn)“
37、use ”的含義n實現(xiàn):類a的定義中有類b的指針變量abab類之間的關(guān)系naggregation(聚合)n體現(xiàn)“is a part-of”(包含、擁有)的含義ncomposition(組合)n體現(xiàn)“is a part-of”(包含、擁有)的含義n組合與聚合的區(qū)別是組合的整體和部分的object具有相同的生命周期,而聚合則不同ngeneralization(泛化) 或 inheritance(繼承)n體現(xiàn)“is a kind of”的含義n子類不僅繼承了超類的attribute和operation,同時還繼承了超類的relationship n類之間關(guān)系的強弱順序n依賴 關(guān)聯(lián) 聚合 組合 繼承
38、ababsuperclasssubclass類之間關(guān)系相關(guān)的其它概念 nrole(角色)表示參與關(guān)聯(lián)關(guān)系的對象在關(guān)聯(lián)關(guān)系中承擔的角色 nmultiplicity(多重性)表示類a的一個object對應類b的幾個object,代表的是business rulennavigability(導向性 )表示對象訪問的方向n右圖中n0.1表示一個類b的對象可以對應0個或1個類a的對象n0.n表示一個類a的對象可以對應類b的0個或多個對象n關(guān)系上的箭頭就是navigability,表示類a的對象可以訪問類b的對象,但是類b的對象不能訪問類a的對象,如果關(guān)系上沒有箭頭,表示navigability是雙向的識
39、別分析類之間的關(guān)系n識別分析類之間的關(guān)聯(lián)關(guān)系有兩個來源n協(xié)作圖:協(xié)作圖中對象之間有聯(lián)系,就意味著相應的類之間存在關(guān)聯(lián)關(guān)系n領(lǐng)域知識:從中得到實體類之間的聚合關(guān)系n注意:n不要添加您認為“或許”存在的關(guān)聯(lián)關(guān)系,除非協(xié)作圖要求添加這些關(guān)聯(lián)關(guān)系n在分析時不用識別出類之間的關(guān)系是關(guān)聯(lián)還是依賴,是聚合還是組合,因為我們還沒有作出明智決策所需要的足夠信息,我們將在類設(shè)計活動中改進n對于繼承關(guān)系,在分析時可以識別出來,但是不要求 n是關(guān)聯(lián)還是聚合 n選擇聚合只是為了闡明一種整體/部分的關(guān)系 n如果拿不準是什么關(guān)系,通常關(guān)聯(lián)關(guān)系更合適。聚合關(guān)系通常是很明顯的,聚合的語義應該很容易的從上下文中理解出來 n是聚合
40、關(guān)系還是關(guān)聯(lián)關(guān)系與開發(fā)的具體應用有關(guān)記錄類之間的關(guān)系n用類圖來表示類之間的關(guān)系 n用例實現(xiàn)的類圖又叫vopc(view of participated classes)實踐n方法n在用例實現(xiàn)包中建一個類圖,取名叫vopcn在類圖中表示參與用例的所有類及其關(guān)系ndemonatm系統(tǒng)的類圖6. 設(shè)計process modelndemon用類圖描述課程注冊系統(tǒng)的運行時結(jié)構(gòu)deployment modelndeployment model的模型元素nnodenphysical run-time computational resourcenprocessor noden運行系統(tǒng)軟件ndevice no
41、densupport devicentypically controlled by a processornconnectionn通信機制n物理媒介n軟件協(xié)議ndemo:課程注冊系統(tǒng)設(shè)計元素接口和包n接口n接口是定義行為集(即操作集)的模型元素n該行為集由classifier模型元素(即類、子系統(tǒng)或component)提供nclassifier可以實現(xiàn)實現(xiàn)一個或多個接口;一個接口可由一個或多個classifier實現(xiàn)n實現(xiàn)相同接口的那些classifier在系統(tǒng)中可以互換n每個接口應該是唯一且明確定義的操作集n設(shè)計包 n一個包中可以包含公有類,也可以包含私有類n公有類可以與任何其他類相關(guān)聯(lián)n私
42、有類只能與其所在包中包含的類相關(guān)聯(lián)n包接口由包的公有類組成,包接口隔離并實施對其他包的依賴關(guān)系 n包耦合的原則n不應對包進行交叉耦合(即互相依賴),例如兩個包不應互相依賴。n較低層中的包不應依賴于較高層中的包,包只應依賴于同一層及下一層中的包n通常,依賴關(guān)系不應跳層,除非依賴行為在所有層之間都是共同的設(shè)計元素設(shè)計子系統(tǒng)n設(shè)計子系統(tǒng)n設(shè)計子系統(tǒng)是一種模型元素,它具有包(其中可包含其他模型元素)和類(其具有行為)的語義n子系統(tǒng)的行為由它實現(xiàn)的一個或多個接口來定義 n子系統(tǒng)的行為由它所包含的類或其他子系統(tǒng)提供n子系統(tǒng)內(nèi)部的元素對外不可見n子系統(tǒng)的特點n可以獨立預定、配置或交付n可以獨立開發(fā)(只要接口
43、保持不變)n可以在一組分布式計算節(jié)點上獨立部署n可以在不破壞系統(tǒng)其他部分的情況下獨立地進行更改n可以將系統(tǒng)分為若干單元,以提供對關(guān)鍵資源的有限安全保護 n可以在設(shè)計中代表現(xiàn)有產(chǎn)品或外部系統(tǒng) 設(shè)計元素n子系統(tǒng)和包的區(qū)別n子系統(tǒng)比包封裝性好n子系統(tǒng)有接口,外部只能通過子系統(tǒng)接口訪問子系統(tǒng)內(nèi)部n包沒有接口,外部可以直接訪問包中公共的類n子系統(tǒng)具有行為,而包沒有n子系統(tǒng)是一種通過一個或多個它所實現(xiàn)的接口來提供行為的包n而包并不提供行為它們只是用來容納對象的容器n子系統(tǒng)依賴關(guān)系n子系統(tǒng)不應暴露自己的任何內(nèi)容;子系統(tǒng)外部的元素都不應依賴于子系統(tǒng)內(nèi)部特定元素的存在 n子系統(tǒng)只應依賴于其他模型元素的接口,因此
44、它不直接依賴于子系統(tǒng)外部的任何特定模型元素 。n例外情況n許多子系統(tǒng)共享一組類定義,因此這些子系統(tǒng)將“導入”包含公共類的包中的內(nèi)容。這只能用于位于構(gòu)架低層的包,并且原因只能是為了確保在子系統(tǒng)之間傳遞的公共類定義保持一致 創(chuàng)建初始的設(shè)計類n做設(shè)計類的設(shè)計時,將沒有分析類的類型,但是可以根據(jù)將要設(shè)計的分析類類型,采用不同的特定策略來創(chuàng)建初始設(shè)計類n需要多少類n大量的簡單的類意味著每個類:n封裝了整個系統(tǒng)邏輯的很小的一部分n更容易復用n容易實現(xiàn)n少量的復雜的類意味著每個類:n封裝了整個系統(tǒng)邏輯的很大一部分n不容易復用n實現(xiàn)困難n注意na class should have a single well
45、 focused purpose.a class should do one thing and do it well邊界類的設(shè)計策略nui邊界類n分析時識別出來了高層次的邊界類,設(shè)計時需要創(chuàng)建更多的類來支持實際的guii和外部系統(tǒng)交互n用戶接口邊界類的設(shè)計依賴與用什么ui開發(fā)工具,你只需要設(shè)計開發(fā)環(huán)境不能自己你創(chuàng)建的部分。n用戶界面的原型開發(fā)會使設(shè)計有一個良好的起點n系統(tǒng)邊界類n外部系統(tǒng)的接口通常有復雜的行為,所以通常模型化成子系統(tǒng)n如果接口不復雜,你可以用一個或多個設(shè)計類來表示,以后對于每個協(xié)議、接口或api使用一個單獨的設(shè)計類實體類的設(shè)計策略n實體對象經(jīng)常是被動的和持久化的n性能要求可能
46、會導致返工n例如,如果我們有一個包括5個屬性的類,一個屬性實際上不是持久化的,只是運行時的記錄,另外兩個屬性不常用,設(shè)計時,我們決定應該能立即查詢常用的屬性,而對于不常用的屬性只有當有人請求時才去查詢。我們不想為用戶做一個復雜的設(shè)計,因此,從數(shù)據(jù)的角度看,我們把fatclass作為兩個持久化數(shù)據(jù)類的代理,它被查詢時它就會從數(shù)據(jù)庫中查詢fatclassdatahelper,而只有用戶請求時才從數(shù)據(jù)庫中查詢fatclasslazydatahelper實體類的設(shè)計策略確定永久類n必需在永久媒介上保存狀態(tài)的類被稱為“永久類” n在分析的設(shè)計后,已經(jīng)為永久類標記了“永久性”的分析機制n設(shè)計之前構(gòu)架設(shè)計師
47、應該已經(jīng)選擇了設(shè)計機制和實現(xiàn)機制n提醒了數(shù)據(jù)庫設(shè)計員要特別注意類的物理存儲特征n告訴負責永久性機制的設(shè)計員,類的實例必需是永久性的n設(shè)計永久類是要應用構(gòu)架設(shè)計師選擇的實現(xiàn)機制控制類的設(shè)計策略n如果控制類只是邊界類和實體類的通路,就可以去掉n以下的控制類是必要的:n封裝了復雜的控制行為n封裝的行為可能會變化n性能必須分布在多個進程或處理器中n需要事務管理定義類的可見性n“公有”類可由它所在的包之外的類引用n“私有”類(或類的可見性是“實施”)只能由同一包內(nèi)的類引用。 定義操作n操作來源n交互圖中的messagen為與設(shè)計類相對應的分析類的每個責任定義一個操作n研究設(shè)計類參與的用例實現(xiàn),看操作是如
48、何被使用的細化操作、描述、返回值和參數(shù)n研究use-case特定的需求,確保沒有遺漏操作的隱含需求n其它n是否存在一種生成類實例的方式n是否有判斷兩個類實例是否相等的需求n是否有創(chuàng)建類實例拷貝的需求n為了應用機制是否需要新的操作定義操作n命名和說明操作 n在命名操作、返回類型和參數(shù)及其類型時,應該使用實現(xiàn)語言的命名約定 n操作名應該簡短,并可說明進行操作所得到的結(jié)果 n從操作用戶用戶的角度為操作編寫說明n定義操作可見性 (屬性和操作都有)npublic: +nprotected: #nprivate: -nscope(屬性和操作都有)ninstance:一個類實例對應一個屬性或操作實例ncla
49、ssifier:所有的類實例對應一個屬性或操作實例定義方法n方法說明了操作的實現(xiàn) n大多數(shù)情況下,方法是直接由編程語言實施的。如果實現(xiàn)操作需要采用特定算法,或需要操作說明之外的更多信息,則要采用單獨的方法說明 n需要考慮n特殊的算法n使用的其他對象和操作n屬性和參數(shù)如何被實現(xiàn)和使用n關(guān)系(relations)如何被實現(xiàn)和使用定義狀態(tài)n對于狀態(tài)相關(guān)的設(shè)計類,可以畫狀態(tài)圖來增加對類的理解n狀態(tài)圖中每一狀態(tài)轉(zhuǎn)移事件都與一個操作關(guān)聯(lián)關(guān)系n對象的操作根據(jù)狀態(tài)可以具有不同的行為,所以定義方法的時候應該參照狀態(tài)圖 n在處理一些異常事件時,狀態(tài)圖尤其有用n狀態(tài)通常采用屬性表示 狀態(tài)圖(statechart d
50、iagram)的組成狀態(tài)圖狀態(tài)(state)n狀態(tài)是對象生命中的一個情形,對象的狀態(tài)決定它能響應的事件n狀態(tài)具有以下特征 n初始狀態(tài)(start state)n狀態(tài)機或子狀態(tài)的默認起始位置 n有且只能有一個初始狀態(tài)n最終狀態(tài)(end state)n表示對象生命的結(jié)束n可以有一個以上的最終狀態(tài),也可以沒有最終狀態(tài)n初始狀態(tài)和終止狀態(tài)實際上是偽狀態(tài)n除了名稱外,它們都沒有常規(guī)狀態(tài)通常所具有的部分名稱名稱狀態(tài)的名字活動活動(activity)(activity)在進入或退出狀態(tài)時,或狀態(tài)持續(xù)過程中所執(zhí)行的操作。非原子的,可中斷的執(zhí)行體內(nèi)部遷移內(nèi)部遷移狀態(tài)不發(fā)生變更的情況下對事件的響應子狀態(tài)子狀態(tài)狀態(tài)
51、的嵌套結(jié)構(gòu),superstate時包括了嵌套的狀態(tài)(substate)的狀態(tài),substate的公共的遷移可以在superstate級表示,對嵌套的層數(shù)沒有限制延遲的事件延遲的事件 未在該狀態(tài)中處理但被延遲處理(即列隊等待由另一個狀態(tài)中的對象來處理)的一系列事件。狀態(tài)圖轉(zhuǎn)移(transition)n轉(zhuǎn)移:當發(fā)生指定事件并且滿足指定條件時,第一個狀態(tài)中的對象將執(zhí)行某些操作并進入第二個狀態(tài)n轉(zhuǎn)移具有以下幾項特征 n一個轉(zhuǎn)移可能有多個源狀態(tài),一個轉(zhuǎn)移也可能有多個目標狀態(tài)源狀態(tài)源狀態(tài)轉(zhuǎn)移前的狀態(tài)事件觸發(fā)器事件觸發(fā)器(event)使轉(zhuǎn)移滿足觸發(fā)條件的事件可能包括信號、調(diào)用、時間推移或狀態(tài)變更 警 戒 條
52、 件警 戒 條 件 ( g u a r d condition)一種布爾表達式。在接收到事件觸發(fā)器只有表達式求值結(jié)果為 true才發(fā)生轉(zhuǎn)移動作(動作(action)可執(zhí)行的、不可分割的計算過程目標狀態(tài)目標狀態(tài)在完成轉(zhuǎn)移后被激活的狀態(tài)。狀態(tài)圖歷史狀態(tài)n當轉(zhuǎn)移進入復合狀態(tài)時,嵌套狀態(tài)機的操作將從初始狀態(tài)開始重新執(zhí)行(除非轉(zhuǎn)移直接以子狀態(tài)為目標)。歷史狀態(tài)使狀態(tài)機可以重新進入在它退出復合狀態(tài)之前的最后一個活動子狀態(tài)狀態(tài)圖實例atm controlidleentry/ display welcomeejectingconfiscatingwaiting for passwordvalidating p
53、asswordwaiting for choicewaiting for passwordcard insertedvalidating passwordwaiting for choicecancelfirst invalid password,secondthird invalid password, stolen or expired cardvalid passwordpassword inputedstart up狀態(tài)圖練習openassignedunassignedassignedunassignedclosedcancelledfullcommiteddo/ generate c
54、lass rostercancelledfullcommiteddo/ generate class rostercancelcolseregistration has profesosr assigned close / numstudents = 0removeprofessorclosecloseregistrationcancle numstudents = 10 addprofessorclose numstudent = 3 close numstudents = 3 活動圖n活動圖可以表示系統(tǒng)內(nèi)的事件流ndemo:atm的控制過程create curriculumselect c
55、ourses to teachcreate catalogplace catalog in bookstoremail catalog to studentsopen registrationclose registration registratin time period expired 確定屬性n屬性來源n檢查方法描述n檢查狀態(tài)n類本身需要保存的任何信息n分析時可以只定義出屬性名就可以,設(shè)計時,對于每個屬性需要定義:n名字:要同時符合項目和編程語言的命名風格n類型n缺省或初始值n可見性n注意:類是持久化的,但不一定所有的屬性都是持久化的定義依賴關(guān)系nassociations和aggreg
56、ation是結(jié)構(gòu)的關(guān)系ndependencies是非結(jié)構(gòu)的關(guān)系n分析時,我們假設(shè)所有的關(guān)系都是結(jié)構(gòu)關(guān)系;設(shè)計時,我們必須決定需要哪種通信渠道n區(qū)分是關(guān)聯(lián)還是依賴n如果你總是需要一個關(guān)系,如果一個事物跨一個或多個操作的與另一個事物由關(guān)系,那么這個關(guān)系就是association;否則就是暫時的,就是local,parameter或全局的n如果許多運行時對象總是共享一個實例,也許這個實例應該作為參數(shù)來傳遞,如果這個實例自始至終只有一個,那么就可以作為全局變量n如果不需要共享一個實例,就作為local變量就可以了n如果每次需要時都要創(chuàng)建和銷毀對象,就可以定義成field,參數(shù)或全局定義關(guān)聯(lián)關(guān)系n需要n
57、區(qū)分組合(composition) vs. 聚合(aggregation)n區(qū)分attribute vs. associationn確定navigabilitynassociation class designnmultiplicity design區(qū)分組合和聚合n聚合nshared aggregation:一個part可以屬于多個wholennon-shared aggregation:一個part只能屬于一個wholen是組合還是聚合?n組合的whole和part具有相同的生命周期n所以只要看對象如何被創(chuàng)建和銷毀就行了區(qū)分組合和屬性nattributes vs. compositionn如
58、下情況用compositionnproperties需要獨立的身份,可以被多個對象引用n多個類具有相同的propertiesnproperties具有自己復雜的結(jié)構(gòu)以及propertiesnproperties具有自己復雜的行為nproperties具有自己的關(guān)系n其它情況用attributes 確定navigabilitynnavigability可以用以下方式來實現(xiàn)n直接的對象引用n樹組n哈希表n其它的允許一個對象引用其它對象的技術(shù)n分析時的association缺省的都是雙方向的,設(shè)計時必須定義navigability,以便只實現(xiàn)需要的通信n雙方向的比單方向更難實現(xiàn)n哪個方向是真正需要的n研究交互圖n即使兩個方向似乎都需要,也會有n一個方向上的navigability不頻繁n一個類的實例數(shù)目比較少association classnassociation class是與一個association相關(guān)聯(lián)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消化科醫(yī)師合同范本
- 礦山開采施工員勞動合同
- 礦業(yè)公司硬化地面工程協(xié)議
- 藝術(shù)品運輸貨車司機招聘合同
- 2025道具師合同范本
- 2025承包工地食堂合同書范文模板
- 超市一體保溫板施工合同
- 工業(yè)廠房改造私人施工合同
- 酒店衛(wèi)生管理保潔員合同
- 2025建設(shè)工程合同約定獎勵款項的相關(guān)問題
- 廣東省惠州市2024-2025學年高一上學期期末考試英語試題(含答案)
- 醫(yī)院骨科2025年帶教計劃(2篇)
- 銷售總監(jiān)年度總結(jié)規(guī)劃
- 生物安全柜的使用及維護培訓
- 機械制造企業(yè)風險分級管控手冊
- 地系梁工程施工方案
- 《NOIP圖的基礎(chǔ)算法》課件
- 《建筑工程QC課題》課件
- 病歷質(zhì)控流程
- 藏文基礎(chǔ)-教你輕輕松松學藏語(西藏大學)知到智慧樹章節(jié)答案
- 政府采購評審專家考試試題庫(完整版)
評論
0/150
提交評論