UML語(yǔ)言建模

UML了解

為什么說(shuō)工程開(kāi)發(fā)交流的語(yǔ)言是UML

簡(jiǎn)單的圖形是不精確的

自然語(yǔ)言的描述是不精確的

溝通需要一門(mén)語(yǔ)言

工程化的過(guò)程我們需要用的不是容易引起歧義的自然語(yǔ)言弟翘,而是嚴(yán)謹(jǐn)統(tǒng)一的模型化語(yǔ)言即UML

UML讓我們用一種語(yǔ)言井誉,相同的方式進(jìn)行交流

作計(jì)劃泊交,做需求,我們不用中文泽铛,而用UML

UML我們用它的三個(gè)方面:草圖、藍(lán)圖、代碼設(shè)計(jì)圖

學(xué)好UML和看圖說(shuō)話的道理是一樣的胞四,記住兩個(gè)要素:節(jié)點(diǎn)和聯(lián)系

UML圖形架構(gòu)分三大類(lèi):

對(duì)象:類(lèi)圖、組件圖伶椿、部署圖

交互(行為):用例圖辜伟、時(shí)序圖氓侧、協(xié)作圖、活動(dòng)圖

狀態(tài):狀態(tài)圖

我們的世界是三維立體的导狡,我們需要從三個(gè)方向觀察物體约巷,才能有一個(gè)較好的理解。所以我們應(yīng)該學(xué)會(huì)從三個(gè)角度用UML來(lái)描述軟件旱捧。

可以通過(guò)三張圖來(lái)描述:用例独郎、類(lèi)圖、時(shí)序圖(或活動(dòng)圖)

UML入門(mén)

用例圖

用例(Use Case)是幫助角色確定系統(tǒng)使用情況的UML組件

用例組(UseCase Group)就是從用戶(hù)的角度出發(fā)對(duì)如何使用系統(tǒng)的描述

用例圖(Use Case Diagram)是用圖形的方式來(lái)描述場(chǎng)景

用例在最早是以表的形式展示廊佩,簡(jiǎn)稱(chēng)用例卡片

用例圖要素:參與者(主囚聚,附加,后臺(tái))标锄、假設(shè)條件顽铸、前置條件、場(chǎng)景中的步驟料皇、后置條件

在StarUml中用例圖的元素:包(Package)谓松、用例(UseCase)、角色(Actor)践剂、關(guān)聯(lián)(Association)鬼譬、定向關(guān)聯(lián)(DirectedAssociation)、泛化(Generalization)逊脯、依賴(lài)(Dependency)优质、包含(Include)、擴(kuò)展(Extend)军洼、系統(tǒng)邊界(System Boundary)

Package主要用來(lái)分類(lèi)巩螃、模塊、子模塊

用例是實(shí)際描述的一個(gè)具體動(dòng)作匕争,一般用動(dòng)賓短語(yǔ)

Association避乏、DirectedAssociation關(guān)聯(lián)就是陳述性語(yǔ)句,如小張喝水

Generalization就是繼承

依賴(lài)甘桑、包含拍皮、擴(kuò)展類(lèi)似

系統(tǒng)邊界就是劃分模塊區(qū)間

用例圖的作用

用例圖用來(lái)描述需求場(chǎng)景

在與用戶(hù)交流過(guò)程中快速建立用戶(hù)業(yè)務(wù)描述,并且跟用戶(hù)確認(rèn)

設(shè)計(jì)好的用例圖用來(lái)檢驗(yàn)程序?qū)崿F(xiàn)場(chǎng)景

用例圖示例:

用例圖相關(guān)疑問(wèn)

為何一定要使用用例圖概念跑杭,把用戶(hù)的需求描述記錄下來(lái)不可以么

這樣做在實(shí)際中往往行不通铆帽。對(duì)于用戶(hù)的描述,我們往往要用一種結(jié)構(gòu)組織起來(lái)德谅,用例就提供了這種組織結(jié)構(gòu)锄贼。在記錄客戶(hù)的交談結(jié)果以及將這些結(jié)果與開(kāi)發(fā)者溝通的時(shí)候,這些結(jié)構(gòu)尤為重要

我們和客戶(hù)交談的時(shí)候女阀,我們所做的僅限于他們告訴我們的用例么

當(dāng)然不是宅荤,事實(shí)上要搞清楚客戶(hù)告訴了你什么,還要發(fā)掘客戶(hù)沒(méi)有告訴你什么

獲取用例的難度有多大

列出系統(tǒng)的用例一點(diǎn)也不難浸策,但在深入研究每個(gè)用例冯键,并且讓用戶(hù)列出每個(gè)場(chǎng)景的步驟的時(shí)候,會(huì)需要經(jīng)驗(yàn)和技巧

在高層用例圖中庸汗,并沒(méi)有顯示出參與者和用例之間的關(guān)聯(lián)惫确,這是為什么

高層用例圖出現(xiàn)在與用戶(hù)會(huì)談的早期階段,這個(gè)階段它仍然是一個(gè)考慮不成熟的產(chǎn)物蚯舱,其主要目標(biāo)是找出系統(tǒng)的總體需求及系統(tǒng)的邊界和范圍改化,因此暫時(shí)不需要關(guān)聯(lián)

我們需要畫(huà)UML大圖么僅僅知道每種類(lèi)型的圖什么時(shí)候使用還不夠么

如果你理解了UML的組織結(jié)構(gòu),即使遇到前所未遇的問(wèn)題你也能處理枉昏,你可以重新組織UML元素以便適應(yīng)工作需要

針對(duì)商場(chǎng)購(gòu)物畫(huà)用例圖

狀態(tài)圖

狀態(tài)圖就是開(kāi)關(guān)陈肛,是描述狀態(tài)變化的圖形

狀態(tài)圖描述了一個(gè)對(duì)象狀態(tài)與狀態(tài)的轉(zhuǎn)變并且給出了狀態(tài)變化序列的起點(diǎn)和終點(diǎn)

狀態(tài)圖元素:狀態(tài)節(jié)點(diǎn)(Composite State)、狀態(tài)子節(jié)點(diǎn)(Submachine State)兄裂、初始狀態(tài)(Initial State)句旱、結(jié)束狀態(tài)(Final State)、交匯點(diǎn)(junction->一個(gè)口多輸入輸出)晰奖、選擇點(diǎn)(Choice->單輸入輸出)谈撒、淺層歷史狀態(tài)(Shallow History)、深層歷史狀態(tài)(Depp History)匾南、同步(Fork)啃匿、對(duì)象流程結(jié)束(Exit Point)、狀態(tài)傳遞(Transition)蛆楞、自我傳遞(Self Transition->入口動(dòng)作溯乒、出口動(dòng)作,中間動(dòng)作)

狀態(tài)圖相關(guān)疑問(wèn)

什么時(shí)候會(huì)用到狀態(tài)圖:需求過(guò)程臊岸,需要描述一個(gè)對(duì)象的狀態(tài)跟蹤的時(shí)候橙数,比如一個(gè)表單在不同環(huán)境審批的狀態(tài)

開(kāi)始建立狀態(tài)圖的最好方法:首先列出對(duì)象狀態(tài),然后將注意力集中在狀態(tài)的轉(zhuǎn)移上帅戒。當(dāng)研究每個(gè)轉(zhuǎn)移的時(shí)候灯帮,要估計(jì)是否觸發(fā)事件或者執(zhí)行某個(gè)動(dòng)作

狀態(tài)圖是否必須有終止?fàn)顟B(tài):不一定,有的狀態(tài)永遠(yuǎn)是活動(dòng)的

狀態(tài)圖的部圖技巧:圖要清晰逻住,回避交叉點(diǎn)

狀態(tài)圖示例:

時(shí)序圖

時(shí)序圖是描述一個(gè)時(shí)間段的不同角色之間的業(yè)務(wù)情況

我們通常用時(shí)序圖來(lái)畫(huà)出流程钟哥,時(shí)序圖和協(xié)作圖是類(lèi)似的,掌握一種即可

時(shí)序圖元素:對(duì)象(Lifeline)瞎访、對(duì)象消息傳遞(Message)腻贰、自我消息傳遞(Self Message)、組合碎片(CombinedFragment)扒秸、交互操作(Interaction Use)播演、框架(Frame)

時(shí)序圖多做分析圖:業(yè)務(wù)流程的分析圖和程序調(diào)用的分析圖

時(shí)序圖相關(guān)疑問(wèn)

我們?cè)谀挠脮r(shí)序圖:

需求階段-分析按照時(shí)間關(guān)系的流程的時(shí)候

設(shè)計(jì)階段-分析程序之間調(diào)用的時(shí)候

時(shí)序圖不僅可以用于系統(tǒng)分析冀瓦,還可以用來(lái)說(shuō)明一個(gè)組織中各種交互關(guān)系。把組織中的重要角色標(biāo)志為對(duì)象写烤,對(duì)象之間的消息就標(biāo)識(shí)了角色的控制轉(zhuǎn)移

時(shí)序圖示例:

協(xié)作圖

協(xié)作圖與時(shí)序圖類(lèi)似翼闽,協(xié)作圖也是展現(xiàn)對(duì)象交互的圖形

協(xié)作圖和時(shí)序圖的異同

同:協(xié)作圖和時(shí)序圖是語(yǔ)義等價(jià)的

協(xié)作圖強(qiáng)調(diào)的是交互語(yǔ)境和參與交互的對(duì)象整體組織

時(shí)序圖強(qiáng)調(diào)的是交互時(shí)間順序

協(xié)作圖和時(shí)序圖可互轉(zhuǎn)

協(xié)作圖相關(guān)疑問(wèn)

在UML建模時(shí)有需要包含時(shí)序圖和協(xié)作圖兩種圖嗎

兩種圖包含是個(gè)好主意。時(shí)序圖重在表示時(shí)間關(guān)系洲炊,協(xié)作圖重在描述對(duì)象之間的關(guān)系感局。不過(guò)二圖取其一也可以,因?yàn)樗鼈冋Z(yǔ)義相同暂衡,可以借助工具自動(dòng)互轉(zhuǎn)

協(xié)作圖示例:

活動(dòng)圖

活動(dòng)圖用來(lái)描述一個(gè)過(guò)程或者操作的工作步驟询微,類(lèi)似于流程圖

活動(dòng)圖元素:動(dòng)作狀態(tài)(Action)、子活狀態(tài)(StructuredActivity)狂巢、開(kāi)始狀態(tài)(inital)撑毛、結(jié)束狀態(tài)(Final)、同步(fork)隧膘、選擇(Decision)代态、流程結(jié)束(Flow Final)、對(duì)象流程(Object Node)疹吃、接收狀態(tài)(Accpet Signal)蹦疑、發(fā)送狀態(tài)(Send Signal)、狀態(tài)傳遞(Control Flow)萨驶、自我傳遞(Control Flow)歉摧、垂直泳道(Swimlane)、水平泳道(Swimlane)

活動(dòng)圖相關(guān)疑問(wèn)

活動(dòng)圖的必要與否

活動(dòng)圖就是用來(lái)描述流程的腔呜∪拢活動(dòng)圖能表現(xiàn)多個(gè)對(duì)象之間的復(fù)雜活動(dòng)關(guān)系,比時(shí)序圖更有表現(xiàn)力核畴。如收錄系統(tǒng)的流程圖時(shí)序圖就表現(xiàn)不出來(lái)膝但。我們?cè)谶x擇時(shí)優(yōu)先選擇時(shí)序圖,時(shí)序圖做不到的用活動(dòng)圖谤草。

活動(dòng)圖示例

類(lèi)圖

復(fù)雜的類(lèi)圖

類(lèi)圖是用來(lái)描述對(duì)象及對(duì)象之間關(guān)系的圖

類(lèi)圖在需求階段和設(shè)計(jì)階段有不同的含義

需求階段類(lèi)圖可以看做對(duì)象圖

MDA模型驅(qū)動(dòng)的基礎(chǔ)就是對(duì)象

類(lèi)圖用來(lái)描述實(shí)體對(duì)象的跟束,和用例圖同等重要

類(lèi)圖和設(shè)計(jì)的關(guān)系,類(lèi)圖和數(shù)據(jù)庫(kù)的關(guān)系

類(lèi)圖元素:子系統(tǒng)(Subsystem)丑孩、包(Package)冀宴、類(lèi)(Calss)、接口(interface)温学、枚舉(Enumeration)略贮、信號(hào)(Signal)、異常(Signal)、端口(Port)逃延、局部(part)览妖、關(guān)聯(lián)(Association)、定向關(guān)聯(lián)(Directed Association)真友、聚合(Aggregation)黄痪、組合(Composition)、泛化(Generalization)盔然、依賴(lài)等關(guān)系(Dependency)、實(shí)現(xiàn)(Realization)是嗜、關(guān)系類(lèi)(AssociationClass)愈案、連接(Connector)、對(duì)象(Object)鹅搪、鏈接(Link)

聚合是空心組合是實(shí)心站绪,組合是同生共死的,聚合如公司的組成丽柿,組合如房屋的組成

泛化就是繼承

依賴(lài)在類(lèi)中會(huì)有創(chuàng)建被依賴(lài)類(lèi)的方法恢准。如公司類(lèi)依賴(lài)用戶(hù)管理類(lèi)

關(guān)聯(lián)類(lèi)是中間關(guān)系類(lèi)

關(guān)聯(lián)就好比公司和員工的關(guān)系,鏈接就好比我們公司和我的關(guān)系

類(lèi)圖相關(guān)疑問(wèn)

不是程序員需要類(lèi)圖么:有必要甫题,類(lèi)圖其實(shí)是描述實(shí)體的對(duì)象圖馁筐。雖然它的類(lèi)、接口坠非、實(shí)現(xiàn)等特性在其它場(chǎng)景用不上敏沉。但是它們的屬性,操作等來(lái)描述對(duì)象是最清晰的炎码。

聚合具有傳遞性

類(lèi)圖的作用

需求階段定義對(duì)象屬性

定義數(shù)據(jù)庫(kù)關(guān)系

設(shè)計(jì)階段定義包盟迟、類(lèi)結(jié)構(gòu)和關(guān)系

組件圖

軟件組件可以是軟件系統(tǒng)的一個(gè)物理單元、數(shù)據(jù)文件潦闲、表格攒菠、可執(zhí)行文件、動(dòng)態(tài)鏈接庫(kù)等歉闰;這些都被定義為組件辖众。

定義系統(tǒng)組件,接口及關(guān)系的圖就是組件圖

組件元素:接口(interface)新娜、組件(Component)赵辕、組件實(shí)例(Component instance)、工件(Artifact)概龄、端口(port)还惠、部分(part)、關(guān)聯(lián)(Association)私杜、依賴(lài)(Dependency)蚕键、實(shí)現(xiàn)(Realization)救欧、鏈接(Link)、連接器(Connector)

組件圖示例:

部署圖

部署圖反應(yīng)了工件如何在系統(tǒng)硬件上發(fā)布

剪貼畫(huà)可以和UML混用锣光,來(lái)表達(dá)更明確的圖例

部署圖示例:

案例展示

移動(dòng)點(diǎn)菜系統(tǒng)

設(shè)計(jì)四要素

項(xiàng)目前提和評(píng)估

模塊子模塊,功能子功能

具體用例

界面原型

需求成文示例


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笆怠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子誊爹,更是在濱河造成了極大的恐慌蹬刷,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件频丘,死亡現(xiàn)場(chǎng)離奇詭異办成,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)搂漠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)迂卢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人桐汤,你說(shuō)我怎么就攤上這事而克。” “怎么了怔毛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵员萍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我馆截,道長(zhǎng)充活,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任蜡娶,我火速辦了婚禮混卵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窖张。我一直安慰自己幕随,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布宿接。 她就那樣靜靜地躺著赘淮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪睦霎。 梳的紋絲不亂的頭發(fā)上梢卸,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音副女,去河邊找鬼蛤高。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戴陡。 我是一名探鬼主播塞绿,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恤批!你這毒婦竟也來(lái)了异吻?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喜庞,失蹤者是張志新(化名)和其女友劉穎诀浪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赋荆,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笋妥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窄潭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酵颁,死狀恐怖嫉你,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躏惋,我是刑警寧澤幽污,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站簿姨,受9級(jí)特大地震影響距误,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扁位,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一准潭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧域仇,春花似錦刑然、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至垦细,卻和暖如春择镇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背括改。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工腻豌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓饲梭,卻偏偏與公主長(zhǎng)得像乘盖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子憔涉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 本文原創(chuàng):haorongrong 前言 最近在梳理項(xiàng)目订框,用到了UML, 對(duì)于這個(gè)工具可能有的人聽(tīng)過(guò)兜叨,或者有的人用過(guò)...
    jad_design閱讀 806評(píng)論 0 2
  • UML的歷史 面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&OOD)方法的發(fā)展在20世紀(jì)80年代中出現(xiàn)了一個(gè)高潮穿扳,UML就是這個(gè)高...
    oneape15閱讀 2,492評(píng)論 0 16
  • UML概述 UML簡(jiǎn)介 UML (Unified Modeling Language)為面向?qū)ο筌浖O(shè)計(jì)提供統(tǒng)一的...
    aron1992閱讀 513評(píng)論 0 0
  • UML9圖 https://blog.csdn.net/wxb141001yxx/article/details/...
    日瑕閱讀 2,700評(píng)論 0 0
  • 時(shí)間倒回到去年的11.11光棍節(jié)跪但,那個(gè)時(shí)候的我還是一個(gè)什么都不太懂的傻姑娘履羞,以為只要喜歡就可以天長(zhǎng)地久。事實(shí)上...
    微涼嵐煙閱讀 331評(píng)論 0 0