程序猿都應學習的語言:看25張圖學UML

2021-12-19 硬體攻城獅

[導讀] 作為程序猿都最好掌握的一門語言,那就是UML(Unified Modeling Language),統一建模語言(UML)是軟體工程領域中一種通用的開發建模語言,旨在提供一種可視化系統設計的標準方法。是開發人員、系統設計人員交流的有效工具。今天來分享一下UML的一些體會,如有錯誤請幫忙指正。

註:UML工具有很多,本文描述的基於Enterprise Architect。最近微信平臺排序規則升級了,如不想錯過小號文章,建議給小號加下星標。

UML前世今生

UML時間進化線:

說到UML不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是UML的創始人,均為軟體工程界的權威,除了著有多部軟體工程方面的著作之外,在對象技術發展上也有諸多傑出貢獻,其中包括Booch方法、對象建模技術(OMT)和Objectory(OOSE)過程。三人被合稱為「UML三友」。

面向對象編程方法以及描述符號進化歷史:

然後逐步發展到UML2.5標準。

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

宏觀看UML

UML用圖去描述一個軟體系統,從需求、設計、到部署的方方面面都以及覆蓋。那麼從總體上先來看看UML有哪些圖呢?

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

從建模的動態視角/靜態視角,可以這樣去分類:

微觀看UML

UML由基本的組成可以從三大塊去了解:事物/關係/圖

事物(Things)構件事物:UML模型的靜態部分,描述概念或物理元素類:具有相同屬性相同操作 相同關係相同語義的對象的描述接口:描述元素的外部可見行為,即服務集合的定義說明用例:代表一個系統或系統的一部分行為,是一組動作序列的集合另外,參與者、信號應用、文檔庫、頁表等都是上述基本事物的變體行為事物:UML模型圖的動態部分,描述跨越空間和時間的行為狀態機:描述事物或交互在生命周期內響應事件所經歷的狀態序列交互:實現某功能的一組構件事物之間的消息的集合,涉及消息、動作序列、連結分組事物:UML模型圖的組織部分,描述事物的組織結構注釋事物:UML模型的解釋部分,用來對模型中的元素進行說明,解釋關係(Relationship)

下面是UML的基礎4大關係:

實現(realization)是類元之間的語義關係,其中的一個類元指定了由另一個類元保證執行的契約泛化(generalization)是一種特殊/一般的關係。也可以看作是常說的繼承關係關聯(association)是一種結構關係,它指明一個事物的對象與另一個事物的對象間的聯繫依賴(dependency)是兩個事物之間的語義關係,其中一個事物(獨立事物)發生變化,會影響到另一個事物(依賴事物)的語義

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

圖(Diagram)

用例圖/Use Case Diagram:用於描述系統的參與者與用例間的關係

類圖/Class Diagram:•類圖以反映類的結構(屬性、操作)以及類之間的關係為主要目的,描述了軟體系統的邏輯結構,是一種靜態建模方法

對象圖/Object Diagram: 描述系統類在某個時刻的具體實例化情況,類似系統某時刻對象角度的快照

序列圖/Sequence Diagram:描述對象間動態行為在一段時間的行為序列

時序圖/Timing Diagram:描述對象在時間維度的動態行為

通訊圖/Communication Diagram:類似序列圖,相對序列圖強調時間維度,通訊著重描述協作的邏輯關係

相互作用概視圖/Interaction Overview Diagram:系統高層級的交互描述,可以引用其他序列圖、時序圖、通訊圖、以及交互概視圖

複合結構圖/Composite Structure Diagram:複合結構圖反映了類,接口或組件(及其組件)的內部協作屬性來描述一個功能

信息流圖/Info Flow Diagram:描述信息在對象間、構件、包、參與者之間的流向

狀態機圖/State Machine Diagram:用於描述元素在不同狀態間如何遷移的邏輯聯繫

活動圖/Activity Diagram:常用於描述系統級行為的實現建模。需要考慮多種因素:邏輯條件、並發、中斷、數據訪問等等

封裝圖/包圖/Package Diagram:包圖描繪了將模型元素組織到包中以及它們之間的依賴關係(包括包導入和包擴展等)。它們還提供相應命名空間的可視化。

構件圖/Component Diagram:用於高層級描述系統的組成構件,以及構件間的依賴關係

部署圖/Deployment Diagram:描述系統的部署方式(如何部署、部署在什麼環境、硬體環境、軟體環境等等)

用例圖

參與者/Actor:圖中的小人,表示系統的用戶,如人/機器/內部的其他子系統/硬體等用例/Use Case:圖中的橢圓框及描述,描述參與者與系統交互所實現的工作內容經常會配合附加文本進行詳細描述。邊界/Boundary:方框,描述框裡的都是屬於建模對象裡的東東,建模的時候可以方便識別與其他系統交互的接口用例圖在UML語言中處於至關重要的位置,所謂4+1架構設計,用例圖用於描述系統需求,處於核心位置。屬於Use-case drivering 大法的心臟。

類圖/ Class Diagram

這個類圖描述一個圖像管理系統。

對象圖/Object Diagram

描述一個圖書管理系統某時刻對象的快照。

序列圖/Sequence Diagram

此圖說明了在交互中滿足視圖歷史用例所需的對象。對象之間的消息流為用戶提供了事務歷史信息。描述圖書管理系統如何查閱歷史的操作系列,反應了客戶端與各對象間消息傳遞關係。

時序圖/Timing Diagram

這個類似於晶片的時序圖概念。下圖描述用戶在有卡/無卡對系統訪問的時間線場景圖:

通訊圖/Communication Diagram

這是一個嵌入式系統的UML建模,該圖描述一個壓力控制系統兩個主要用例的實現:

交互概視圖/Interaction Overview

描述了一個圖書管理系統如何從訂單發起後的所有交互概要圖,每個子圖上面的ref表示引用了一個更詳細的圖,比如Add to Shopping Basket 放入購物籃的具體動作:

複合結構圖/Composite Structure

狀態機圖/State Machine Diagram

這是描述圖書訂購系統如何登錄的狀態機圖

活動圖/Activity Diagram 常見的活動圖

帶泳道活動圖

將活動分組,明確該組活動負責的對象,對象負責該組的全部活動

子活動圖

活動圖中,某幾個活動可以組成一個內聚的子活動。

可中斷活動圖

這裡的中斷並不嚴謹,本圖中表示這個活動事物是可以取消的。

封裝圖/包圖/Package Diagram

構件圖/ Component Diagram

用以描述構件之間的相互關係。

部署圖/Deployment Diagram

總結一下

本文走馬觀花的將UML大致梳理了一下,並結合EA的例圖,將常見的UML圖的作用大致描述一遍,供大家參考。對於軟體開發人員而言,UML還是很有必要學習掌握的。

相關焦點

  • 程序猿都應學習的語言:看 25 張圖學 UML
    >作為程序猿都最好掌握的一門語言,那就是UML(Unified Modeling Language),統一建模語言(UML)是軟體工程領域中一種通用的開發建模語言,旨在提供一種可視化系統設計的標準方法。
  • 想當程序猿?想學C語言程序設計?那還不快來!
    那麼接下來黨哥就要來說一說如何學好C語言或是做好程式設計師了~首先對編程有興趣的話,沒必要學習C的,你可以玩玩java,php之類的語言,這類語言表現起來更直觀,更容易上手。 如果真的是對C語言感興趣的話,選一本大家都普遍認可的教材,然後去學習。 1.注意變量類型。 2.注意結構體的使用。 3.注意指針。
  • 猿編程,學完孩子會變成「程序猿」嗎?
    少兒編程不能光從字面意義上去理解,以為就是像成人學編程一樣,各種計算機語言,什麼Java、PHP、HTML等等,也像他們一樣學完就是大家口中的「程序猿」了。今天小馬給大家測評一下猿輔導旗下的少兒編程——猿編程,看看這個課程又適合哪些孩子選擇?課程體系猿編程得課程主要面向4-12歲的學生,走的是Python語言的程序設計路線。
  • 兒童學習編程可不是培養程序猿?
    「孩子學太早能好嗎?」「少兒編程是什麼?」「小孩子也要學編程?」「這麼複雜小朋友學的會嗎?」對於很多人來說,提起「少兒編程」這個詞,難免會有一些成見。但這是外界對編程的固有印象導致的,甚至有些程式設計師都不知道,編程早已不是黑乎乎的屏幕上敲著一串串複雜的代碼了。尤其是近年來,以scratch為代表的圖形化編程開始大行其道。
  • 不敢相信,看程序猿和工程師如何鬥圖?
    這種屬於比較含蓄的,不仔細看還真注意不到。一個工程師,將自己的情緒發洩到了程序猿身上,碼出一隻猴子來嘲諷程式設計師。這個工程師直接照著當紅表情包皮皮蝦我們走寫出了令人瞠目結舌的代碼:程序猿我們走!然而想不到的是,魔高一尺道高一丈,這位程式設計師可不是吃素的,這代碼已經不能用強來形容了。
  • 為什麼程序猿的孩子普遍學習比較好
    我打賭,提到「程序猿」你腦子裡想到的是穿著背心大褲衩,深夜加班擼代碼的宅男形象。
  • 關於第一個C語言程序 Hello world!
    一切準備就緒,程序猿提筆準備開始神奇的書法之旅,寫什麼呢?思索片刻,程序猿揮動毛筆,Hello world!躍然紙上... ...童鞋A:第一次上課,老師真狠,什麼都沒學,就寫了個程序,還要我們練習。童鞋B:就是,怎麼一開始就搞這麼難?
  • 程序猿必備證件!
    程序猿相關的有哪些證書?程序猿需要考證嗎?考證有用嗎?猿哥來談一談。1、程序猿主要的證書猿哥比較了解的有三個:全國計算機等級考試、計算機技術與軟體專業技術資格(水平)考試、思科認證。如果認真學習,價值是挺大的。但是這類證書目前基本上被培訓機構毀了,差不多隻要交錢和背題就可以考過。 總體上沒太大價值了,不過據說CCIE這個級別的能通過的人還是很少。④、大體上看,越難考的證含金量越大。3、證書有用嗎?
  • 地鐵站都比你努力什麼意思什麼梗? 程序猿梗了解一下
    地鐵站都比你努力什麼意思什麼梗? 程序猿梗了解一下時間:2020-03-25 15:36   來源:小雞詞典   責任編輯:沫朵 川北在線核心提示:原標題:地鐵站都比你努力什麼意思什麼梗? 程序猿梗了解一下 程序猿梗,源自知名網站Github(某開原始碼網站)。
  • 程序猿爸爸為了孩子教育,竟然這樣做…
    我是一個程序猿,也是兩個孩子的爸爸 或許,你眼裡的程序猿是這樣:又或許是這樣的:我也會在下班之後,陪孩子學習,陪孩子打籃球、下圍棋。現在家⻓對孩子的英語啟蒙越來越重視,我也不例外,我在網上也給我家孩子報了 線上英語課程,剛開始孩子還感興趣,學了沒幾堂課就不學了,而且價格還不低為了孩子,我也不能浪費自己程序猿的身份呀,於是我決定自己開發! ! !
  • 30 個跟程序猿有關的成語
    左右逢猿指需求評審會時,前後左右都是程序猿,舌戰群猿,以一敵多的場面。花好約猿指花兒開得正好,周末無比美妙,增長黑客卻約程序猿一起去公司加班。自猿其說指程序猿有一套自己的語言規範,和程序猿溝通時,必須按照其語言規範來說話。心火燎猿指程序猿內心憤怒,卻因口才有限,一時間無力反駁的場景。
  • 詳解:UML類圖符號、各種關係說明以及舉例
    點擊上方藍色「程序猿DD」,選擇「設為星標」
  • 程序'猿'的「hello,world!」是什麼梗?
    一日,飯後突生雅興,一番磨墨擬紙,並點上了上好的檀香,頗有王羲之風範,又具顏真卿氣勢,定神片刻,潑墨揮毫,鄭重地寫下:hello world很多人不了解程式設計師的人都覺得毫無笑點,其實如果你知道大多程式設計師學編程時第一課的內容時就明白了。
  • 看完這篇,不是程序猿也可以陪娃編程啟蒙(附超多利器)
    Scratch、Python、C++、java…這都是些什麼鬼?編程思維又是個什麼思維?學了編程,難道所有娃都要變成程序猿和碼農?相信很多媽媽跟小愛一樣,一肚子的疑問無處安放。  代碼太高深,小孩子如何學編程? 文科生小愛當年學foxbase,簡直是雲裡霧裡,落下了看代碼、語句就頭疼的後遺症。一套程序就是天書一部,小孩子哪裡學得會?
  • 97年小哥開發程序猿專屬約會社交軟體VSinder
    說起約會軟體,通過幾張照片左劃不喜歡,右劃喜歡的配對模式鼻祖是Tinder,國內的*探之流都是「借鑑」於此。近日,一位來自美國的程序猿小哥Ben Awad火了,他開發了一款程序猿專屬的社交軟體VSinder,靈感就來自於Tinder,但他認為約會交友更重要的是內在,而不是專注於外貌。Linux的創始人說過「Talk is cheap.
  • 學習筆記 UML圖類型解析
    學習筆記 UML圖類型解析 UML中有五類圖,共有九種圖形每種圖形都有各自的特點,你對它們是否比較熟悉,這裡就向大家簡單介紹一下UML圖類型,希望對大家學習有所幫助。
  • 免費且好用的UML工具推薦
    免費且好用的UML工具推薦1、引言統一建模語言(Unified Modeling Language,UML)是一種為面向對象系統的產品進行說明
  • 南京創業 扇貝網,程序猿血統的英語學習平臺
    若用戶不知道學哪些詞彙。登陸後,該網站根據之前設定的學習目標,每天最多推薦記憶50個單詞,用戶一步步根據舉例、解釋等方式記憶單詞。2. 若用戶難以長期堅持。該網站實行學習目標打卡制度,每打一次卡都是對當天的學習作一次記錄和總結;並且有自己的虛擬貨幣系統「貝殼」,如果用戶積極學習並打卡記錄,那麼他一般能夠掙到這些虛擬貨幣來支付詞彙學習的學費。反之,那麼他必須通過支付寶付費購買。3. 當做詞典日記本使用。
  • 說說少兒編程與猿編程
    讓孩子學編程,究竟有沒有用?編程鍛鍊了孩子的哪些能力?我家孩子適合不適合學編程?孩子最好幾歲學編程?孩子學編程需要注意哪些事項?許多家長面對這樣的形勢,不禁發出了以上的疑問。今天,我們在解決這些問題的同時,也將深入分析猿編程的課程,看看它的課程能給孩子帶來怎樣的改變與進步。
  • 「程序猿」的日常生活,了解後,你還想學軟體工程專業嗎?
    如果 你熱愛它,那麼就會在大量繁雜的學 習任務和枯燥的工作過程中獲得超 乎一般職業的成就感和樂趣。代 碼和程序只是一個工作手段,為了讓用 戶滿意,我們還需要在交付時做一項很重 要的工作,而這也是「程序猿」所必須具備 的重要能力之一:溝通。