🌈?個人主頁:十二月的貓-CSDN博客
🔥?系列專欄:?🏀軟件開發必練內功_十二月的貓的博客-CSDN博客💪🏻?十二月的寒冬阻擋不了春天的腳步,十二點的黑夜遮蔽不住黎明的曙光?
目錄
1. 前言
2. UML概述
2.1?UML的分類與功能
2.2 UML的語法與各圖關系??
3. 四種圖的概述
3.1 狀態圖
3.2?活動圖(Activity Diagram)
3.3?構件圖(Component Diagram)
3.4 部署圖(Deployment Diagram)
4. 狀態圖
4.1?狀態圖概要
4.2?狀態圖中的事物及解釋
4.3?狀態的可選活動表?
4.4 實例?
(1)網上銀行登錄系統?
5. 活動圖?
5.1?活動圖概要
5.2 活動圖和狀態圖的關系
5.3?活動圖事物?編輯
5.4?活動圖關系
5.5?實例
?編輯
6.?構件圖
6.1?構件圖概要
6.2?構件圖中的事物及解釋
6.3?構件圖中的關系及解釋
6.4 實例
實例1
實例2
7.?部署圖
7.1?部署圖概要
?7.2?部署圖中的事物及解釋?編輯
7.3?部署圖中的關系及解釋
7.4 實例
實例1
實例2
7.5??部署圖與構件圖的關系
8. 總結?
1. 前言
2. UML概述
所謂UML(Unified Modeling Language,統一建模語言),一種用來對軟件密集系統進行可視化建模的語言。
這樣的概念大概解釋了UML是什么,不過還不夠直觀。
我們可以換個問題,UML做到了什么,讓人們愿意為之喝彩?
答案就是,它統一了各種方法對不同類型的系統、不同開發階段以及不同內部概念的不同觀點,從而有效的消除了各種建模語言之間不必要的差異。它是一種通用的建模語言,可以為許多面向對象建模方法的用戶廣泛使用。
如此一來,UML的本質也就呼之欲出了。UML的本質就是為了交流。
一句話:一個UML就能完成整個軟件開發中的交流需要
2.1?UML的分類與功能
UML2.0一共有12種圖形(UML1.5定義了9種,2.0增加了3種)。
分別是:用例圖、類圖、對象圖、狀態圖、活動圖、順序圖、協作圖、構件圖、部署圖9種,包圖、組合結構圖、交互概覽圖3種。
?
“UML無用論”在很多年前就被提了出來,更是引發了業內不少爭議。有用戶將它捧上天,甚至“封神”,也有人斥之為垃圾,甚至稱其“反人類”。
那么問題來了,UML 真的無用嗎?或者用題主的話來說,UML 還有用嗎?
我想先說自己的判斷:UML 依然有用。
之所以這么判斷,主要基于以下三點事實:
第一,圖比代碼更清晰
在復雜需求中,UML圖是非常必要的。
用例圖描述系統的外部交互、序列圖描述系統的內部交互、狀態圖描述系統的動態特性、部署圖描述系統的物理節點、類圖與對象圖描述依賴關系......
所有的圖都是協助團隊策劃稿能源更高效地厘清問題,掌握知識,高效解決問題的。
試問下,在敏捷開發中,如果沒有流程圖、序列圖、狀態圖進行輔助,你如何在代碼過程中保證業務流程、系統前后端、多個系統切換開發做到敏捷高效?
在敏捷開發時,面對稍復雜點的需求,如果要求團隊提前用UML圖厘清問題,后續填坑可以少很多。
?
第二,“假敏捷開發”太多
正如@蘿魏紫 所言,中國假敏捷太多了,以敏捷為借口少寫甚至不寫文檔,以至于大量項目在本不應出問題的溝通層面出現大量問題,沒有統一的標準,溝通不出問題才怪。
UML統一了各種方法對不同類型的系統、不同開發階段以及不同內部概念的不同觀點,從而有效的消除了各種建模語言之間不必要的差異。
不過,我們也必須注意到,UML不是萬能的,但是在系統研發中的溝通作用,效果還是比較好的。
第三,UML 在業界依然在被應用
UML的實際應用例子,大家在這個問答中可以找到不少:
比如,@Milo Yip 表示,“騰訊沒有統一、從上而下的軟件工程方法論,畢竟業務差異很大。但在各種文檔及簡報中也經常以 UML 圖來呈現一些信息,算是一種輔助溝通的方法。”另外,“我在面試時會讓候選人做一些簡單設計,用 UML 最好,不會的也可用他熟悉的編程語言表示。”
@fantiny 也舉了自己前公司產品ExchangeUSE的例子,據介紹,當時UML在前期需求分析和架構設計階段起到一定的作用,包括需求分析與共通化整理,系統模塊化分析工具,架構設計的交流工具,實現合理性的分析工具。?
2.2 UML的語法與各圖關系?
各圖關系:?
?
UML語法描述:?
3. 四種圖的概述
? ? ? ?這一部分先對 狀態圖、活動圖、構件圖和部署圖 做一個簡單的概述。
3.1 狀態圖
? ? ? ?狀態圖是一個類對象所可能經歷的所有歷程的模型圖。狀態圖由對象的各個狀態和連接這些狀態的轉換組成。
狀態圖描述對象:一個類對象
狀態圖組成:一個類對象的各種狀態、狀態轉化動作
?
3.2?活動圖(Activity Diagram)
- 活動圖是狀態圖的一個變體,用來描述執行算法的工作流程中涉及的活動
- 活動圖描述了一組順序的或并發的活動
?
狀態圖和活動圖:
? ? ? ? 1、狀態圖針對每一個類
? ? ? ? 2、活動圖針對整合算法系統
3.3?構件圖(Component Diagram)
? ? ? ?構件圖為系統的構件建模型—構件即構造應用的軟件單元—還包括各構件之間的依賴關系,以便通過這些依賴關系來估計對系統構件的修改給系統可能帶來的影響。?
?
構件圖(Component Diagram) 是 UML(統一建模語言)中用于描述系統物理構件及其相互關系的圖。它展示了系統中各個“構件”(如可執行程序、庫、模塊等)之間的關系,以及它們如何通過接口進行交互。構件圖通常用于描述系統的靜態結構,尤其是關注系統的物理實現層次。
構件圖的主要元素:
構件(Component):表示系統中的一個物理模塊或部件,它是一個可執行的或可部署的單位。構件可以是程序文件、庫文件、Web 服務、數據庫、或者任何其他具有獨立功能的部分。
- 符號:構件通常用一個矩形表示,矩形的右上角有一個小的折角。
接口(Interface):構件之間的交互通常通過接口完成。接口定義了構件提供的服務或其所需的服務。
- 符號:接口通常是一個小圓圈或帶有名字的“半圓”。
依賴關系(Dependency):構件圖中,構件之間可能有依賴關系,這表示一個構件依賴于另一個構件的功能或服務。
- 符號:依賴關系通常用帶箭頭的虛線表示,箭頭指向被依賴的構件。
端口(Port):端口是構件和外界進行交互的地方,通常用來定義通過接口暴露的功能。
- 符號:端口通常表示為構件矩形的一部分,形狀如小小的矩形或圓圈。
3.4 部署圖(Deployment Diagram)
? ? ? ?部署視圖描述位于節點實例上的運行構件實例的安排。節點是一組運行資源,如計算機、設備或存儲器。這個視圖允許評估分配結果和資源分配。?
4. 狀態圖
4.1?狀態圖概要
- 說明對象在它的生命期中響應事件所經歷的狀態序列,以及它們對那些事件的響應。
- 揭示Actor、類、子系統和組件的復雜特性。 為實時系統建模。
- 對象的狀態是指在這個對象的生命期中的一個條件或狀況,在此期間對象將滿足某些條件、執行某些活動,或等待某些事件。
- 轉移是由一種狀態到另一種狀態的遷移。這種轉移由被建模實體內部或外部事件觸發。
- 對一個類來說,轉移通常是調用了一個可以引起狀態發生重要變化的操作的結果。
4.2?狀態圖中的事物及解釋
?
4.3?狀態的可選活動表
?
4.4 實例?
(1)網上銀行登錄系統
?
5. 活動圖?
5.1?活動圖概要
- 描述系統的動態行為。
- 包含活動狀態(ActionState),活動狀態是指業務用例的一個執行步驟或一個操作,不是普通對象的狀態。
- 活動圖適合描述在沒有外部事件觸發的情況下的系統內部的邏輯執行過程;否則,狀態圖更容易描述。
- 類似于傳統意義上的流程圖。
- 活動圖主要用于:
+ 業務建模時,用于詳述業務用例,描述一項業務的執行過程;
+ 設計時,描述操作的流程。
5.2 活動圖和狀態圖的關系
- 活動圖和狀態圖都體現狀態在活動中變化。
- 狀態圖是一個類對象在活動中狀態發生變化。
- 活動圖是整個系統在活動中狀態發生變化。
5.3?活動圖事物
5.4?活動圖關系
5.5?實例
-
本活動圖描述一個處理訂單的用例執行過
(1)執行setup order
(2)根據order的類型是執行不同的分支:
- single order:執行assign seat、charge credit card
- subscription:同時執行assignseats、debit account或 award bonus
- single order與subscription兩步可同時進行(3) 最后mail packet。
6.?構件圖
6.1?構件圖概要
- 構件圖用于靜態建模,是表示構件類型的組織以及各種構件之間依賴關系的圖。
- 構件圖通過對構件間依賴關系的描述來估計對系統構件的修改給系統可能帶來的影響。
6.2?構件圖中的事物及解釋
- 可替換的物理部分包括軟件代碼、腳本或命令行文件,也可以表示運行時的對象,文檔,數據庫等。
- 節點(node)是運行時的物理對象,代表一個計算機資源。具體請參見教程“部署圖(deployment diagram)”部分。
6.3?構件圖中的關系及解釋
6.4 實例
實例1
- 圖中的構件名稱是Dictionary字典。
- 該構件向外提供兩個接口,即兩個服務Spell-check拼寫檢查、Synonyms同義詞。
實例2
- 圖中“Planner計劃者”構件向外提供一個“update更新”接口服務。
- 同時,該構件要求外部接口提供一個“Reservations預定”服務。
7.?部署圖
7.1?部署圖概要
- 部署圖用于靜態建模,是表示運行時過程節點結構、構件實例及其對象結構的圖。
- 如果含有依賴關系的構件實例放置在不同節點上,部署視圖可以展示出執行過程中的瓶頸。
- 部署圖的兩種表現形式:實例層部署圖和描述層部署圖(會在后面的實例中給出)。
?7.2?部署圖中的事物及解釋
7.3?部署圖中的關系及解釋
7.4 實例
實例1
- 實例層部署圖描述各節點和它們之間的連接。
- 本圖中的信息與上張描述層部署圖中的內容是相互對應的。
- 圖中的關系是各個節點之間存在的通信關系。
實例2
- 描述層部署圖表示了系統中的各節點和每個節點包含的構件。
- 圖中包括的各種關系如下:
- 通信鏈關系(不帶箭頭的直線)
- TicketServe票服務器與Kiosk信息廳之間存在一對多的通信關聯;與SalesTerminal售票終端也存在一對多的通信關聯;
- 依賴關系(帶箭頭的虛線)
- TicketSeller售票構件依賴CreditCardCharges信用卡付款構件和TicketDB票數據庫構件提供的服務。
- 通信鏈關系(不帶箭頭的直線)
7.5??部署圖與構件圖的關系
部署圖(Deployment Diagram) 和 構件圖(Component Diagram) 都是 UML 中用于描述系統的靜態結構,但它們關注的層次不同,功能上也有所區別。
-
構件圖 主要關注系統的邏輯結構和軟件層面,描述系統中的各個構件(如模塊、庫、服務等)及其相互關系,強調模塊間的依賴、接口和交互。
-
部署圖 主要關注系統的物理部署和硬件層面,展示節點(如服務器、工作站、設備等)之間的關系,并標明哪些構件部署到哪些節點上。
關系:
- 構件圖?描述的是系統的軟件組件及其內部結構,而?部署圖?描述的是這些組件如何在物理硬件上部署和運行。
- 構件圖?中的構件通常會在?部署圖?中被映射到一個或多個節點上,顯示它們的實際部署情況。
- 例如,構件圖中的業務邏輯組件可能會被部署到一個服務器節點上,而數據庫組件則可能被部署到另一臺數據庫服務器節點。
8. 總結?
本文到這里就結束啦~~
目前已經完成:
【軟件工程】一篇入門UML建模圖(類圖)_uml圖教程-CSDN博客
【軟件工程】一篇入門UML建模圖(用例圖、對象圖、順序圖與協作圖)-CSDN博客
本篇講述:狀態圖、活動圖、構件圖、部署圖
如果覺得對你有幫助,友友們可以點個贊,收個藏呀~