3.1 版型
類型习贫、構(gòu)造型
“接口”、“邊界類”、“實(shí)體類”屯远、“控制類”等都是類的版型蔓姚,甚至“參與者”本身也是一個(gè)特殊的類的版型。
參與者
以人為本
3.2.1 基本概念
參與者在建模過程中是處于核心地位的慨丐。
UML官方文檔定義:actor是在系統(tǒng)之外與系統(tǒng)交互的某人或某事物坡脐。
3.2.1.1 參與者位于邊界之外
3.2.1.2 參與者可以非人
3.2.2 發(fā)現(xiàn)參與者
注意區(qū)分參與者與業(yè)務(wù)工人
3.2.3 業(yè)務(wù)主角
業(yè)務(wù)主角是參與者的一個(gè)版型,特別用于定義業(yè)務(wù)的參與者房揭,在需求階段使用备闲。
完全徹底地高清粗客戶的業(yè)務(wù),而不是預(yù)先假設(shè)已經(jīng)有了一個(gè)計(jì)算機(jī)系統(tǒng)捅暴,再讓客戶假想需要計(jì)算機(jī)系統(tǒng)幫他們做什么浅役。
3.2.4 業(yè)務(wù)工人
他是主動(dòng)向系統(tǒng)發(fā)出動(dòng)作的嗎?
他有完整的業(yè)務(wù)目標(biāo)嗎伶唯?
系統(tǒng)是為他服務(wù)的嗎觉既?
3.2.5 參與者與涉眾的關(guān)系
涉眾(stakeholder)也稱為干系人。
參與者是涉眾代表乳幸。
3.2.6 參與者與用戶的關(guān)系
用戶(user)是指系統(tǒng)的使用者拭嫁,通俗一點(diǎn)說就是系統(tǒng)的操作員限佩。用戶是參與者的代表,或者說是參與者的實(shí)例或代理。
3.2.7 參與者與角色的關(guān)系
角色(role)是參與者的職責(zé)署辉。
3.2.8 參與者的核心地位
系統(tǒng)是以參與者的觀點(diǎn)來決定的。
3.2.9 檢查點(diǎn)
您是否已找到所有的參與者篮愉?
每個(gè)參與者是否至少涉及到一個(gè)用例浮创?
您能否列出至少兩名可以作為特定參與者的人員?
是否由參與者擔(dān)任與系統(tǒng)相關(guān)的相似角色养筒?
是否有兩個(gè)參與者擔(dān)任與用例相關(guān)的同一角色曾撤?
特定的參與者是否將以幾種(完全不同的)方式使用系統(tǒng)?
參與者是否有直觀名稱和描述名稱晕粪?
3.3 用例
用例是UML建模中最重要的一個(gè)元素挤悉。其他元素都是“封裝”、獨(dú)立”的
3.3.1 基本概念
用例是一種把現(xiàn)實(shí)世界的需求捕獲下來的方法巫湘。
官方文檔定義:用例定義了一組用例實(shí)例装悲,其中每一個(gè)實(shí)例都是系統(tǒng)所執(zhí)行的一系列操作,這些操作生成特定主角可以觀測(cè)的值尚氛。
一個(gè)用例就是與參與者交互的诀诊。
一個(gè)場(chǎng)景就是一個(gè)用例的實(shí)例。
3.3.2 用例的特征
用例是相對(duì)獨(dú)立的阅嘶。
用例的執(zhí)行結(jié)果對(duì)參與者來說是可觀測(cè)的和有意義的属瓣。
這件事必須由一個(gè)參與者發(fā)起。
用例必然是以動(dòng)賓短語(yǔ)形式出現(xiàn)的。
一個(gè)用例就是一個(gè)需求單元奠涌、分析單元宪巨、設(shè)計(jì)單元、開發(fā)單元溜畅、測(cè)試單元甚至部署單元捏卓。
3.3.3 用例的粒度
原則:同一個(gè)需求階段,所有用例的粒度應(yīng)該是同一個(gè)量級(jí)的慈格。
粒度選擇問題本質(zhì)是因?yàn)檫吔缯J(rèn)定不同而產(chǎn)生的怠晴。
3.3.4 用例的獲得
主角是位于系統(tǒng)邊界外的。
主角對(duì)系統(tǒng)有著明確的期望和回報(bào)要求浴捆。
主角的期望和回報(bào)要求在系統(tǒng)邊界之內(nèi)蒜田。
3.3.5 用例和功能的誤區(qū)
用例 != 功能
3.3.6 目標(biāo)和步驟的誤區(qū)
兩個(gè)用例大小不同,邊界不同选泻,參與者也不同冲粤,它們顯然不應(yīng)該同時(shí)出現(xiàn)在同一個(gè)視圖里。
3.3.7 用例粒度的誤區(qū)
產(chǎn)生用例粒度錯(cuò)誤的原因首先是分不清目標(biāo)和步驟页眯。
3.3.8 業(yè)務(wù)用例
業(yè)務(wù)用例(bussiness use case)是用例版型中的一種梯捕,專門用于需求階段的業(yè)務(wù)建模。
3.3.9 業(yè)務(wù)用例實(shí)現(xiàn)
(bussiness use case realization)窝撵,也稱業(yè)務(wù)用例實(shí)例傀顾。專門用于需求階段的業(yè)務(wù)建模。
3.3.10 概念用例
概念模型中的核心元素碌奉。
3.3.11 系統(tǒng)用例
用來定義系統(tǒng)范圍短曾,獲取功能性需求的。
業(yè)務(wù)用例:業(yè)務(wù)視角
系統(tǒng)用例:系統(tǒng)視角
3.3.12 用例實(shí)現(xiàn)
用例實(shí)現(xiàn)是連接起用例模型和系統(tǒng)實(shí)現(xiàn)之間的橋梁赐劣。
3.4 邊界
邊界本質(zhì)上是面向?qū)ο蠓椒ǖ囊粋€(gè)很重要的概念嫉拐,與封裝的概念師出同源。
3.4.1 邊界決定視界
邊界是可大可小的隆豹,由建模者主管臆定椭岩。
3.4.2 邊界決定抽象層次
分治茅逮,劃分子問題璃赡。
3.4.3 靈活使用邊界
邊界是無形的,是一種分析方法献雅。
用邊界來決定抽象的層次和視角碉考。
3.5 業(yè)務(wù)實(shí)體
業(yè)務(wù)實(shí)體是類的一種版型。特別用于業(yè)務(wù)建模階段建立領(lǐng)域模型挺身。
官方定義:業(yè)務(wù)實(shí)體代表業(yè)務(wù)角色執(zhí)行業(yè)務(wù)用例時(shí)所處理或使用的“事務(wù)”侯谁。
3.5.1 業(yè)務(wù)實(shí)體的屬性
屬性是用來保存業(yè)務(wù)實(shí)體特征的一個(gè)記錄,業(yè)務(wù)實(shí)體的屬性集合決定了它的唯一性。
3.5.2 業(yè)務(wù)實(shí)體的方法
方法是訪問一個(gè)業(yè)務(wù)實(shí)體的句柄墙贱,它規(guī)定了外部可以怎樣來使用它热芹。
3.5.3 獲取業(yè)務(wù)實(shí)體
一個(gè)業(yè)務(wù)實(shí)體經(jīng)常代表某個(gè)對(duì)多個(gè)業(yè)務(wù)用例或用例實(shí)例有價(jià)值的事務(wù)。
3.6 包
包是一種容器惨撇,如同文件夾一樣伊脓,它將某些信息分類,形成邏輯單元魁衙。
使用包的目的是為了整合復(fù)雜的信息报腔。
UML認(rèn)為好的分包具有高內(nèi)聚,低耦合的性質(zhì)剖淀。
常見的包的版型:
領(lǐng)域包(domain package)
子系統(tǒng)(subsystem)
組織結(jié)構(gòu)(organization unit)
層(layer)
3.7 分析類
分析類用于獲取系統(tǒng)中主要的“職責(zé)簇”纯蛾。
分析類是從功能性需求向計(jì)算機(jī)實(shí)現(xiàn)轉(zhuǎn)化的“第一個(gè)關(guān)口”。
分析類可以產(chǎn)生系統(tǒng)的設(shè)計(jì)類和子系統(tǒng)纵隔。
分析類分為:邊界類(boundary)翻诉、控制類(control)和實(shí)體類(entity)
3.7.1 邊界類
邊界類是一種對(duì)系統(tǒng)外部環(huán)境與其內(nèi)部運(yùn)作之間交互進(jìn)行建模的類。
adapter捌刮?listener米丘?controller?
參與者與用例之間應(yīng)當(dāng)建立邊界類糊啡。前后端交互的controller接口
用例與用例之間如果有交互拄查,應(yīng)當(dāng)為其建立邊界類。退貨->退款通過消息的listener交互
如果用例與系統(tǒng)邊界之外的非人對(duì)象有交互棚蓄,例如第三方系統(tǒng)堕扶,應(yīng)當(dāng)為其建立邊界類。adapter
相關(guān)聯(lián)的業(yè)務(wù)對(duì)象有明顯的獨(dú)立性要求梭依,應(yīng)當(dāng)建立邊界類稍算。
3.7.2 控制類
控制類用于對(duì)一個(gè)或幾個(gè)用例所特有的控制行為進(jìn)行建模。
主要起到協(xié)調(diào)對(duì)象的作用役拴。
3.7.3 實(shí)體類
用于對(duì)必須存儲(chǔ)的信息和相關(guān)行為建模的類糊探。
3.7.4 分析類的三高
高于設(shè)計(jì)實(shí)現(xiàn)
高于語(yǔ)言實(shí)現(xiàn)
高于實(shí)現(xiàn)方式
3.8 設(shè)計(jì)類
設(shè)計(jì)類是系統(tǒng)實(shí)施中一個(gè)或多個(gè)對(duì)象的抽象。
3.8.1 類
類對(duì)對(duì)象進(jìn)行定義河闰,而對(duì)象有實(shí)現(xiàn)(實(shí)施)用例科平。
對(duì)象是類實(shí)例化的結(jié)果。
3.8.2 屬性
屬性是對(duì)象的特征姜性,表明了對(duì)象的唯一性瞪慧。
3.8.3 方法
原則:一個(gè)對(duì)象的屬性只應(yīng)該由他自己的方法來改變。
3.8.4 可見性
共有
保護(hù)
私有
實(shí)施
3.9 關(guān)系
3.9.1 關(guān)聯(lián)關(guān)系
無方向
3.9.2 依賴關(guān)系
3.9.3 擴(kuò)展關(guān)系
抽象性質(zhì)部念,表示了用例場(chǎng)景中的某個(gè)“支流”弃酌。
3.9.4 包含關(guān)系
3.9.5 實(shí)現(xiàn)關(guān)系
用例氨菇,用例實(shí)現(xiàn)
精化關(guān)系
用例實(shí)例,概念用例
泛化關(guān)系
不建議在用例中使用泛化關(guān)系妓湘。
3.9.8 聚合關(guān)系
整體和部分不是強(qiáng)依賴的
組合關(guān)系
強(qiáng)依賴的特殊聚合關(guān)系
3.10 組件
組件代表系統(tǒng)中的一部分物理實(shí)施查蓉。
UML中把組件定義為任何的邏輯代碼快。
完備性榜贴、獨(dú)立性奶是、邏輯性和透明性
3.10.1 完備性
不需要多個(gè)組件來完成一個(gè)業(yè)務(wù)請(qǐng)求。
3.10.2 獨(dú)立性
獨(dú)立部署
3.10.3 邏輯性
3.10.4 透明性
3.10.5 使用組件
分布式應(yīng)用
應(yīng)用集成
第三方系統(tǒng)
SOA 服務(wù)
3.11 節(jié)點(diǎn)
節(jié)點(diǎn)是帶有至少一個(gè)處理器竣灌、內(nèi)存以及可能還帶有其他設(shè)備的處理元素聂沙。
應(yīng)用程序的部署單元。