一文讀懂 UML:基礎概念與體系框架

UML 圖是一種標準化的建模語言,在軟件開發和系統設計等領域有著廣泛的應用。以下是對 UML 圖各類圖的詳細介紹:

1.用例圖

  • 定義:用例圖是從用戶角度描述系統功能的模型圖,展現了系統的參與者與用例之間的關系。
  • 作用:幫助開發團隊收集和明確系統的功能需求,確定系統的邊界和范圍,為后續的設計和開發工作提供依據。
  • 構成元素
    • 參與者:表示與系統進行交互的外部實體,可以是用戶、其他系統或設備等。
    • 用例:代表系統提供的一個完整的功能單元,通常用橢圓表示。
    • 關系:包括關聯關系(參與者與用例之間的連接)、包含關系(一個用例包含另一個用例的功能)、擴展關系(一個用例在特定條件下擴展另一個用例的功能)等。

2.類圖

  • 定義:類圖是對系統中類的結構和它們之間關系的靜態描述。
  • 作用:它是面向對象設計的核心工具,用于定義系統中的類、類的屬性和操作,以及類之間的各種關系,為系統的實現提供了藍圖。
  • 構成元素
    • :用矩形表示,分為三層,分別是類名、屬性和操作。
    • 關系:包括繼承關系(用空心三角形和實線表示,子類繼承父類的屬性和操作)、關聯關系(用實線連接兩個類,表示它們之間存在某種聯系)、聚合關系(用空心菱形和實線表示,整體與部分的關系,部分可以脫離整體存在)、組合關系(用實心菱形和實線表示,整體與部分的關系,部分不能脫離整體單獨存在)等。

3.對象圖

  • 定義:對象圖是類圖的實例化,展示了在特定時刻系統中對象的狀態和它們之間的關系。
  • 作用:用于分析系統在某一特定時刻的靜態結構,幫助理解系統中對象的具體情況以及它們之間的交互方式。
  • 構成元素
    • 對象:與類圖中的類相對應,是類的具體實例,對象名的表示形式通常是 “對象名:類名”,屬性值會顯示具體的取值。
    • 關系:與類圖中的關系類似,展示對象之間的連接和關聯關系。

4.順序圖

  • 定義:順序圖是一種交互圖,它按照時間順序展示了對象之間的消息傳遞過程。
  • 作用:用于描述系統中對象之間的動態交互過程,清晰地展示了對象之間的調用順序和消息傳遞的時間順序,有助于理解系統的行為邏輯。
  • 構成元素
    • 對象:用矩形框表示,位于順序圖的頂部,每個對象有一條垂直的生命線,表示對象的存在時間。
    • 消息:用帶箭頭的直線表示,從發送對象的生命線指向接收對象的生命線,箭頭的類型表示消息的類型,如同步消息、異步消息等。
    • 激活期:對象執行操作的時間段,用矩形條表示,位于對象的生命線上。

5.協作圖

  • 定義:協作圖也是一種交互圖,它側重于展示對象之間的協作關系和組織結構。
  • 作用:強調對象之間的交互關系和鏈接關系,用于描述系統中對象是如何相互協作來完成特定任務的。
  • 構成元素
    • 對象:與順序圖中的對象表示相同。
    • 鏈接:用直線表示,連接相關的對象,表示它們之間的關聯關系。
    • 消息:與順序圖中的消息類似,但在協作圖中,消息通常帶有順序編號,以表示消息的發送順序。

6.狀態圖

  • 定義:狀態圖用于描述一個對象在其生命周期內的狀態變化情況。
  • 作用:幫助開發人員理解對象的行為邏輯,以及對象在不同狀態下對事件的響應方式,對于處理具有復雜狀態轉換的對象非常有幫助。
  • 構成元素
    • 狀態:用圓角矩形表示,代表對象在某一時刻的狀態。
    • 轉換:用帶箭頭的直線表示,連接不同的狀態,箭頭旁標注觸發轉換的事件和條件。
    • 初始狀態和終止狀態:初始狀態用實心圓表示,是對象生命周期的起始點;終止狀態用同心圓表示,標志著對象生命周期的結束。

7.活動圖

  • 定義:活動圖是一種用于描述系統業務流程或操作步驟的圖形化工具,可以看作是狀態圖的擴展。
  • 作用:用于展示系統中各種活動的執行順序和邏輯關系,有助于分析和優化業務流程,也可用于描述軟件系統中的算法和操作流程。
  • 構成元素
    • 活動:用圓角矩形表示,代表一個具體的操作或任務。
    • 轉移:用帶箭頭的直線表示,連接不同的活動,表示活動的執行順序。
    • 分支和合并:用菱形表示,用于根據條件判斷來決定流程的走向。
    • 泳道:將活動圖中的活動按照不同的職責或參與者進行劃分,用矩形框表示,有助于清晰地展示不同角色在流程中的作用。

8.構件圖

  • 定義:構件圖描述了系統中的軟件構件及其之間的依賴關系,展示了系統的物理架構。
  • 作用:幫助開發人員理解系統的組成結構,以及各個構件之間的相互關系,便于進行系統的模塊劃分和架構設計。
  • 構成元素
    • 構件:用矩形框表示,帶有兩個小矩形作為其接口,代表系統中的一個可獨立部署的軟件單元,如模塊、類庫、組件等。
    • 接口:用小圓圈表示,位于構件的邊緣,定義了構件提供的服務和需要的服務。
    • 依賴關系:用帶箭頭的虛線表示,說明一個構件依賴于另一個構件的服務。

9.部署圖

  • 定義:部署圖用于描述系統的硬件架構,展示了軟件構件在硬件節點上的部署情況以及節點之間的連接關系。
  • 作用:幫助規劃系統的物理部署,確定硬件資源的分配和軟件系統的運行環境,對于系統的實施和運維具有重要的指導作用。
  • 構成元素
    • 節點:用立方體表示,代表系統中的硬件設備,如服務器、客戶端計算機、打印機等。
    • 構件:與構件圖中的構件表示相同,部署在節點上。
    • 連接:用直線表示,連接不同的節點,表示節點之間的通信鏈路。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/74132.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/74132.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/74132.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring 及 Spring Boot 條件化注解(15個)完整列表及示例

Spring 及 Spring Boot 條件化注解完整列表及示例 1. 所有條件化注解列表 Spring 和 Spring Boot 提供了以下條件化注解(共 15 個),用于在配置類或方法上實現條件化注冊 Bean 或配置: 注解名稱作用來源框架Conditional自定義條件…

【Kafka】深入探討 Kafka 如何保證一致性

文章目錄 Kafka 基本概念回顧?副本角色? 數據寫入一致性?同步副本(ISR)集合?數據讀取一致性?故障處理與一致性恢復?總結? 在分布式系統領域,數據一致性是至關重要的一環。作為一款高性能的分布式消息隊列系統,Kafka 在設計…

從入門到精通:SQL注入防御與攻防實戰——紅隊如何突破,藍隊如何應對!

引言:為什么SQL注入攻擊依然如此強大? SQL注入(SQL Injection)是最古老且最常見的Web應用漏洞之一。盡管很多公司和組織都已經采取了WAF、防火墻、數據庫隔離等防護措施,但SQL注入依然在許多情況下能夠突破防線&#…

【算法day27】有效的數獨——請你判斷一個 9 x 9 的數獨是否有效。只需要 根據以下規則 ,驗證已經填入的數字是否有效即可。

36. 有效的數獨 請你判斷一個 9 x 9 的數獨是否有效。只需要 根據以下規則 ,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。(請參考示例…

leetcode 2360. 圖中的最長環 困難

給你一個 n 個節點的 有向圖 ,節點編號為 0 到 n - 1 ,其中每個節點 至多 有一條出邊。 圖用一個大小為 n 下標從 0 開始的數組 edges 表示,節點 i 到節點 edges[i] 之間有一條有向邊。如果節點 i 沒有出邊,那么 edges[i] -1 。…

PySpur: AI 智能體可視化開發平臺

GitHub:https://github.com/PySpur-Dev/pyspur 更多AI開源軟件:發現分享好用的AI工具、AI開源軟件、AI模型、AI變現 - 小眾AI PySpur是一個開源的輕量級可視化AI智能體工作流構建器,旨在簡化AI系統的開發流程。通過拖拽式界面,用戶…

vcpkg安裝及使用教程,以安裝matio庫解析mat文件為例

vcpkg安裝及使用教程,以安裝matio庫解析mat文件為例 1. vcpkg安裝2 安裝matio三方庫3 將三方庫集成到VS中3.1 全局集成3.2 集成到特定工程4 結語Vcpkg 是微軟開發的一款開源的 C/C++ 包管理工具,旨在簡化 C/C++ 項目依賴庫的安裝和管理。它支持跨平臺(Windows、Linux、macO…

LLM架構解析:NLP基礎(第一部分)—— 模型、核心技術與發展歷程全解析

本專欄深入探究從循環神經網絡(RNN)到Transformer等自然語言處理(NLP)模型的架構,以及基于這些模型構建的應用程序。 本系列文章內容: NLP自然語言處理基礎(本文)詞嵌入&#xff0…

【Rtklib入門指南】2. 使用RTKLIB GUI進行觀測數據分析

數據準備 下載2025年1月1日的香港CORS站數據和觀測星歷,詳情參照如下博客: 使用GAMP_GOOD進行hk數據下載教程-CSDN博客 分析工具 RTKLIB 2.4.3 demo5(也可以選用RTKLIB2.4.2,但不建議使用RTKLIB2.4.3) 分析流程 …

suse15 sp1使用華為云軟件源yum源zypper源

登錄suse15終端, cd /etc/zypp/repos.d/進入目錄后執行以下命令: zypper ar -fcg https://mirrors.huaweicloud.com/opensuse/distribution/leap/15.1/repo/oss HuaWeiCloud:15.1:OSS zypper ar -fcg https://mirrors.huaweicloud.com/opensuse/distribu…

首屏加載時間優化解決

🤖 作者簡介:水煮白菜王(juejin/csdn同名) ,一位前端勸退師 👻 👀 文章專欄: 高德AMap專欄 ,記錄一下平時學習在博客寫作中記錄,總結出的一些開發技巧?。 感…

Sentinel[超詳細講解]-1

定義一系列 規則 &#x1f47a;&#xff0c;對資源進行 保護 &#x1f47a;&#xff0c; 如果違反的了規則&#xff0c;則拋出異常&#xff0c;看是否有fallback兜底處理&#xff0c;如果沒有則直接返回異常信息&#x1f60e; 1. 快速入門 1.1 引入 Sentinel 依賴 <depend…

02-Docker 使用

docker:快速構建、運行、管理應用的工具,可以幫助我們下載應用鏡像,創建并運行鏡像的容器,從而快速部署應用 1、部署mysql 先停掉虛擬機中的MySQL,確保你的虛擬機已經安裝Docker,且網絡開通的情況下,執行下面命令即可安裝MySQL(注意:若服務器上已經有mysql 占用了330…

@DeclareParents 注解實現接口功能增強:Spring中通過接口引入實現功能增強的完整示例

以下是Spring中通過接口引入實現功能增強的完整示例&#xff1a; // 1. 目標接口及實現類 package com.example;public interface Service {void doSomething(); }Component class ServiceImp implements Service {Overridepublic void doSomething() {System.out.println(&qu…

HTML中數字和字母不換行顯示

HTML中數字和字母不換行顯示的默認行為及如何通過CSS的word-wrap和word-break屬性進行調整。 在HTML中標簽中的數字和字母默認是不換行的&#xff0c;如果要將他們換行&#xff0c;在CSS中添加”word-wrap: break-word;” 即可解決 語法&#xff1a;word-wrap: normal|break-w…

Git團隊開發命令總結

簡易Git工作流 myname: 團隊成員個人分支dev: 團隊公共分支 個人獨立分支開發 同步最新的【dev公共分支】到本地。【重要】基于最新的【dev公共分支】&#xff0c;創建【個人功能開發分支】。在此基礎上開發。【個人功能開發分支】開發完成&#xff0c;推送到遠程庫。如果【…

Python人工智能大模型入門教程:從零構建高性能預測模型

引言&#xff1a;AI大模型時代的技術革命 在AlphaGo戰勝人類棋手的里程碑事件后&#xff0c;人工智能技術進入爆發式發展階段。本教程將帶您從零開始&#xff0c;使用Python構建一個工業級神經網絡模型。通過本教程&#xff0c;您不僅能掌握GPU加速訓練、混合精度計算等前沿技…

python-leetcode 61.N皇后

題目&#xff1a; 按照國際象棋的規則&#xff0c;皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。 n 皇后問題 研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊 給你一個整數 n &#xff0c;返回所有不同的 n 皇后問題 的解…

Mybatis_Plus中的常用注解

目錄 1、TableName TableId TableId的type屬性 TableField 1、TableName 經過以上的測試&#xff0c;在使用MyBatis-Plus實現基本的CRUD時&#xff0c;我們并沒有指定要操作的表&#xff0c;只是在 Mapper接口繼承BaseMapper時&#xff0c;設置了泛型User&#xff0c;而操…

JavaScript函數知識點總結

JavaScript函數是一種可重復使用的代碼塊,它接受輸入值(參數)、執行特定任務,并返回輸出值。 1. 聲明函數 function greet(name) {return "Hello, " + name + "!"; }console.log(greet("Alice")); // 輸出: Hello, Alice! console.log( t…