0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

程序員都應(yīng)學(xué)習(xí)的語(yǔ)言:看25張圖學(xué)UML

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-14 23:09 ? 次閱讀
首發(fā):嵌入式客棧
作者:逸珺

[導(dǎo)讀] 作為程序猿都最好掌握的一門(mén)語(yǔ)言,那就是UML(Unified Modeling Language),統(tǒng)一建模語(yǔ)言(UML)是軟件工程領(lǐng)域中一種通用的開(kāi)發(fā)建模語(yǔ)言,旨在提供一種可視化系統(tǒng)設(shè)計(jì)的標(biāo)準(zhǔn)方法。是開(kāi)發(fā)人員、系統(tǒng)設(shè)計(jì)人員交流的有效工具。今天來(lái)分享一下UML的一些體會(huì),如有錯(cuò)誤請(qǐng)幫忙指正。

注:UML工具有很多,本文描述的基于Enterprise Architect。最近微信平臺(tái)排序規(guī)則升級(jí)了,如不想錯(cuò)過(guò)小號(hào)文章,建議給小號(hào)加下星標(biāo)。

UML前世今生

UML時(shí)間進(jìn)化線:


說(shuō)到UML不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是UML的創(chuàng)始人,均為軟件工程界的權(quán)威,除了著有多部軟件工程方面的著作之外,在對(duì)象技術(shù)發(fā)展上也有諸多杰出貢獻(xiàn),其中包括Booch方法、對(duì)象建模技術(shù)(OMT)和Objectory(OOSE)過(guò)程。三人被合稱為“UML三友”。

面向?qū)ο?a href="http://srfitnesspt.com/v/tag/1315/" target="_blank">編程方法以及描述符號(hào)進(jìn)化歷史:


然后逐步發(fā)展到UML2.5標(biāo)準(zhǔn)。

UML目前的官方組織是https://www.uml.org/

宏觀看UML

UML用圖去描述一個(gè)軟件系統(tǒng),從需求、設(shè)計(jì)、到部署的方方面面都以及覆蓋。那么從總體上先來(lái)看看UML有哪些圖呢?

從描述系統(tǒng)建模目的,UML圖可以分成下面4大類:

從建模的動(dòng)態(tài)視角/靜態(tài)視角,可以這樣去分類:

微觀看UML

UML由基本的組成可以從三大塊去了解:事物/關(guān)系/圖

事物(Things)

  • 構(gòu)件事物:UML模型的靜態(tài)部分,描述概念或物理元素
  • 類:具有相同屬性相同操作 相同關(guān)系相同語(yǔ)義的對(duì)象的描述
  • 接口:描述元素的外部可見(jiàn)行為,即服務(wù)集合的定義說(shuō)明
  • 協(xié)作 描述了事物間的相互作用的集合
  • 用例:代表一個(gè)系統(tǒng)或系統(tǒng)的一部分行為,是一組動(dòng)作序列的集合
  • 構(gòu)件:系統(tǒng)中物理存在,可替換的部件
  • 節(jié)點(diǎn):運(yùn)行時(shí)存在的物理元素
  • 另外,參與者、信號(hào)應(yīng)用、文檔庫(kù)、頁(yè)表等都是上述基本事物的變體
  • 行為事物:UML模型圖的動(dòng)態(tài)部分,描述跨越空間和時(shí)間的行為
  • 狀態(tài)機(jī):描述事物或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列
  • 交互:實(shí)現(xiàn)某功能的一組構(gòu)件事物之間的消息的集合,涉及消息、動(dòng)作序列、鏈接
  • 分組事物:UML模型圖的組織部分,描述事物的組織結(jié)構(gòu)
  • 注釋事物:UML模型的解釋部分,用來(lái)對(duì)模型中的元素進(jìn)行說(shuō)明,解釋

關(guān)系(Relationship)

下面是UML的基礎(chǔ)4大關(guān)系:

  • 實(shí)現(xiàn)(realization)是類元之間的語(yǔ)義關(guān)系,其中的一個(gè)類元指定了由另一個(gè)類元保證執(zhí)行的契約
  • 泛化(generalization)是一種特殊/一般的關(guān)系。也可以看作是常說(shuō)的繼承關(guān)系
  • 關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間的聯(lián)系
  • 依賴(dependency)是兩個(gè)事物之間的語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化,會(huì)影響到另一個(gè)事物(依賴事物)的語(yǔ)義

更為詳細(xì)的描述,看看下面這些表吧:

圖(Diagram)

  • 用例圖/Use Case Diagram:用于描述系統(tǒng)的參與者與用例間的關(guān)系
  • 類圖/Class Diagram:?類圖以反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系為主要目的,描述了軟件系統(tǒng)的邏輯結(jié)構(gòu),是一種靜態(tài)建模方法
  • 對(duì)象圖/Object Diagram: 描述系統(tǒng)類在某個(gè)時(shí)刻的具體實(shí)例化情況,類似系統(tǒng)某時(shí)刻對(duì)象角度的快照
  • 序列圖/Sequence Diagram:描述對(duì)象間動(dòng)態(tài)行為在一段時(shí)間的行為序列
  • 時(shí)序圖/Timing Diagram:描述對(duì)象在時(shí)間維度的動(dòng)態(tài)行為
  • 通訊圖/Communication Diagram:類似序列圖,相對(duì)序列圖強(qiáng)調(diào)時(shí)間維度,通訊著重描述協(xié)作的邏輯關(guān)系
  • 相互作用概視圖/Interaction Overview Diagram:系統(tǒng)高層級(jí)的交互描述,可以引用其他序列圖、時(shí)序圖、通訊圖、以及交互概視圖
  • 復(fù)合結(jié)構(gòu)圖/Composite Structure Diagram:復(fù)合結(jié)構(gòu)圖反映了類,接口或組件(及其組件)的內(nèi)部協(xié)作屬性來(lái)描述一個(gè)功能
  • 信息流圖/Info Flow Diagram:描述信息在對(duì)象間、構(gòu)件、包、參與者之間的流向
  • 狀態(tài)機(jī)圖/State Machine Diagram:用于描述元素在不同狀態(tài)間如何遷移的邏輯聯(lián)系
  • 活動(dòng)圖/Activity Diagram:常用于描述系統(tǒng)級(jí)行為的實(shí)現(xiàn)建模。需要考慮多種因素:邏輯條件、并發(fā)、中斷、數(shù)據(jù)訪問(wèn)等等
  • 封裝圖/包圖/Package Diagram:包圖描繪了將模型元素組織到包中以及它們之間的依賴關(guān)系(包括包導(dǎo)入和包擴(kuò)展等)。它們還提供相應(yīng)命名空間的可視化。
  • 構(gòu)件圖/Component Diagram:用于高層級(jí)描述系統(tǒng)的組成構(gòu)件,以及構(gòu)件間的依賴關(guān)系
  • 部署圖/Deployment Diagram:描述系統(tǒng)的部署方式(如何部署、部署在什么環(huán)境、硬件環(huán)境、軟件環(huán)境等等)
  • .....

用例圖

  • 參與者/Actor:圖中的小人,表示系統(tǒng)的用戶,如人/機(jī)器/內(nèi)部的其他子系統(tǒng)/硬件等
  • 用例/Use Case:圖中的橢圓框及描述,描述參與者與系統(tǒng)交互所實(shí)現(xiàn)的工作內(nèi)容經(jīng)常會(huì)配合附加文本進(jìn)行詳細(xì)描述。
  • 邊界/Boundary:方框,描述框里的都是屬于建模對(duì)象里的東東,建模的時(shí)候可以方便識(shí)別與其他系統(tǒng)交互的接口

用例圖在UML語(yǔ)言中處于至關(guān)重要的位置,所謂4+1架構(gòu)設(shè)計(jì),用例圖用于描述系統(tǒng)需求,處于核心位置。屬于Use-case drivering 大法的心臟。

類圖/ Class Diagram


這個(gè)類圖描述一個(gè)圖像管理系統(tǒng)。

對(duì)象圖/Object Diagram

描述一個(gè)圖書(shū)管理系統(tǒng)某時(shí)刻對(duì)象的快照。

序列圖/Sequence Diagram


此圖說(shuō)明了在交互中滿足視圖歷史用例所需的對(duì)象。對(duì)象之間的消息流為用戶提供了事務(wù)歷史信息。描述圖書(shū)管理系統(tǒng)如何查閱歷史的操作系列,反應(yīng)了客戶端與各對(duì)象間消息傳遞關(guān)系。

時(shí)序圖/Timing Diagram

這個(gè)類似于芯片的時(shí)序圖概念。下圖描述用戶在有卡/無(wú)卡對(duì)系統(tǒng)訪問(wèn)的時(shí)間線場(chǎng)景圖:

通訊圖/Communication Diagram


這是一個(gè)嵌入式系統(tǒng)的UML建模,該圖描述一個(gè)壓力控制系統(tǒng)兩個(gè)主要用例的實(shí)現(xiàn):

  • 壓力控制循環(huán),上面的數(shù)字以及箭頭表示消息傳遞流向
  • 通過(guò)HMI設(shè)置壓力

交互概視圖/Interaction Overview

描述了一個(gè)圖書(shū)管理系統(tǒng)如何從訂單發(fā)起后的所有交互概要圖,每個(gè)子圖上面的ref表示引用了一個(gè)更詳細(xì)的圖,比如Add to Shopping Basket 放入購(gòu)物籃的具體動(dòng)作:

復(fù)合結(jié)構(gòu)圖/Composite Structure

狀態(tài)機(jī)圖/State Machine Diagram


這是描述圖書(shū)訂購(gòu)系統(tǒng)如何登錄的狀態(tài)機(jī)圖

活動(dòng)圖/Activity Diagram

常見(jiàn)的活動(dòng)圖

帶泳道活動(dòng)圖

將活動(dòng)分組,明確該組活動(dòng)負(fù)責(zé)的對(duì)象,對(duì)象負(fù)責(zé)該組的全部活動(dòng)

子活動(dòng)圖


活動(dòng)圖中,某幾個(gè)活動(dòng)可以組成一個(gè)內(nèi)聚的子活動(dòng)。

可中斷活動(dòng)圖

這里的中斷并不嚴(yán)謹(jǐn),本圖中表示這個(gè)活動(dòng)事物是可以取消的。

封裝圖/包圖/Package Diagram

構(gòu)件圖/ Component Diagram

用以描述構(gòu)件之間的相互關(guān)系。

部署圖/Deployment Diagram

總結(jié)一下

本文走馬觀花的將UML大致梳理了一下,并結(jié)合EA的例圖,將常見(jiàn)的UML圖的作用大致描述一遍,供大家參考。對(duì)于軟件開(kāi)發(fā)人員而言,UML還是很有必要學(xué)習(xí)掌握的。

本文辛苦原創(chuàng)分享,如果覺(jué)得有價(jià)值也請(qǐng)幫忙點(diǎn)贊/轉(zhuǎn)發(fā)支持,不勝感激!

_END_—

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • UML
    UML
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    30837
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5449

    瀏覽量

    120815
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開(kāi)幕

    據(jù)官方媒體報(bào)道,10月24日;? 第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)在湖南湘江新區(qū)開(kāi)幕;本次中國(guó)1024程序員節(jié)以“智能應(yīng)用新生態(tài)”為主題。設(shè)置有岳麓對(duì)話、技術(shù)英雄會(huì)、主題峰會(huì)及賽事、展覽等活動(dòng),一場(chǎng)
    的頭像 發(fā)表于 10-25 15:42 ?59次閱讀

    AI入門(mén)之深度學(xué)習(xí):基本概念篇

    1、什么是深度學(xué)習(xí) 1.1、機(jī)器學(xué)習(xí) ?? ? 1:計(jì)算機(jī)有效工作的常用方法:程序員編寫(xiě)規(guī)則(程序),計(jì)算機(jī)遵循這些規(guī)則將輸入數(shù)據(jù)轉(zhuǎn)換為適
    的頭像 發(fā)表于 08-08 11:24 ?1804次閱讀
    AI入門(mén)之深度<b class='flag-5'>學(xué)習(xí)</b>:基本概念篇

    程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

    10月24日,程序員專屬的節(jié)日里,我們盛大開(kāi)啟“程序員節(jié)視頻創(chuàng)意大賽”特別活動(dòng)!這不僅是一場(chǎng)視覺(jué)的盛宴,更是智慧與創(chuàng)意的璀璨碰撞。我們誠(chéng)摯邀請(qǐng)每一位程序員及編程愛(ài)好者,拿起你的鏡頭,記錄下那些平凡日子中的不凡瞬間,讓編程的魅力與
    的頭像 發(fā)表于 07-08 10:38 ?72次閱讀
    <b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

    程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

    10月24日,程序員專屬的節(jié)日里,我們盛大開(kāi)啟“程序員節(jié)視頻創(chuàng)意大賽”特別活動(dòng)!這不僅是一場(chǎng)視覺(jué)的盛宴,更是智慧與創(chuàng)意的璀璨碰撞。我們誠(chéng)摯邀請(qǐng)每一位程序員及編程愛(ài)好者,拿起你的鏡頭,記錄下那些平凡日子中的不凡瞬間,讓編程的魅力與
    的頭像 發(fā)表于 07-04 09:00 ?67次閱讀
    <b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

    大模型時(shí)代,程序員當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)

    隨著 AI 技術(shù)的飛速發(fā)展,特別是大模型的出現(xiàn),傳統(tǒng)的程序員角色正在經(jīng)歷深刻的變革,我們不得不重新對(duì)自己進(jìn)行審視和思考。 通用領(lǐng)域大模型的“泛化能力” 在過(guò)去的二十年內(nèi),AI 領(lǐng)域的大部分研究
    的頭像 發(fā)表于 06-28 16:19 ?476次閱讀
    大模型時(shí)代,<b class='flag-5'>程序員</b>當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)

    適者生存,程序員最終會(huì)流向哪……

    程序員沒(méi)有永遠(yuǎn)的護(hù)城河??!就目前的互聯(lián)網(wǎng)大環(huán)境來(lái)看,it行業(yè)已經(jīng)是……
    的頭像 發(fā)表于 03-11 17:11 ?345次閱讀
    適者生存,<b class='flag-5'>程序員</b>最終會(huì)流向哪……

    薪資高、青春飯,是不是程序員=青樓?

    進(jìn)入裁員階段。所以我們程序員要做的只能是與時(shí)俱進(jìn)。 適者生存,程序員亦是如此 順應(yīng)時(shí)代發(fā)展,是我們必須跟緊的。就好比技術(shù)更迭我們就要學(xué)習(xí)更新。而現(xiàn)在我們程序員最好的賽道出路在哪? 目前
    發(fā)表于 03-06 21:32

    感覺(jué)我國(guó)的程序員前景一片灰暗,是這樣嗎?

    程序員也分為好幾等,在現(xiàn)在看來(lái)大部分的Android、Java、前端等等開(kāi)發(fā)。已經(jīng)看不到希望了,很多人都在邊緣掙扎;剛看到一位Android開(kāi)發(fā)者,過(guò)完年回公司就通知被裁;可見(jiàn)每年都會(huì)有很多互聯(lián)網(wǎng)
    發(fā)表于 02-20 20:52

    瑞薩Flash程序員V3 發(fā)布說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《瑞薩Flash程序員V3 發(fā)布說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 02-19 09:37 ?1次下載
    瑞薩Flash<b class='flag-5'>程序員</b>V3 發(fā)布說(shuō)明

    2024程序員的未來(lái)方向如何走?還看今朝

    這幾年的IT行業(yè)想必大家已經(jīng)感受到了,Android、Java、前端等等程序員都經(jīng)歷了大廠……
    的頭像 發(fā)表于 02-02 09:45 ?736次閱讀
    2024<b class='flag-5'>程序員</b>的未來(lái)方向如何走?還看今朝

    1月18號(hào)“純鴻蒙”千帆啟航,程序員預(yù)備!

    。 如何正確看待鴻蒙? 我作為程序員來(lái)說(shuō),首先是鴻蒙的發(fā)展、市場(chǎng)開(kāi)發(fā)崗位、薪資以及前景。 這幾年對(duì)鴻蒙的發(fā)展情況來(lái)分析,從2019年開(kāi)始鴻蒙的出來(lái)今天,華為鴻蒙取得了很大的成就。從“不兼容
    發(fā)表于 01-16 22:13

    誠(chéng)邀報(bào)名 | GPT驅(qū)動(dòng)的新程序員時(shí)代,開(kāi)發(fā)者如何編程?

    模式,開(kāi)發(fā)者們迎來(lái)了編程范式的全新變革。傳統(tǒng)的編程不再局限于編寫(xiě)線性代碼和優(yōu)化邏輯,自然語(yǔ)言取而代之,成為了編程的新工具,這大大降低了開(kāi)發(fā)的門(mén)檻。 如今,以ChatGPT、Copilot等為代表的AI工具,將全球的知識(shí)庫(kù)和代碼庫(kù)都呈現(xiàn)在用戶面前,只要有足夠的想象力,每個(gè)人都可以成為“新
    的頭像 發(fā)表于 12-11 22:20 ?484次閱讀

    程序員表白程序

    電子發(fā)燒友網(wǎng)站提供《程序員表白程序.rar》資料免費(fèi)下載
    發(fā)表于 11-21 10:41 ?16次下載
    <b class='flag-5'>程序員</b>表白<b class='flag-5'>程序</b>

    嵌入式程序員應(yīng)知道的幾個(gè)基本問(wèn)題

    電子發(fā)燒友網(wǎng)站提供《嵌入式程序員應(yīng)知道的幾個(gè)基本問(wèn)題.pdf》資料免費(fèi)下載
    發(fā)表于 11-20 11:21 ?0次下載
    嵌入式<b class='flag-5'>程序員</b>應(yīng)知道的幾個(gè)基本問(wèn)題

    智能低代碼洪流涌動(dòng)程序員節(jié),華為云 Astro 觸發(fā) 1024 的乘法效應(yīng)!

    ? 從人工智能至量子計(jì)算,再到最新的云原生技術(shù),越來(lái)越多的榮耀被程序員斬獲。今年 1024 程序員節(jié),華為云 Astro 向全民致敬:「低代碼高產(chǎn)出?拓荒數(shù)字化版圖——人人皆是程序員」,為全球工程師
    的頭像 發(fā)表于 11-13 09:39 ?417次閱讀
    智能低代碼洪流涌動(dòng)<b class='flag-5'>程序員</b>節(jié),華為云 Astro 觸發(fā) 1024 的乘法效應(yīng)!