主頁 > 軟體工程 > 軟體工程 統一建模語言(Unified Modeling Language UML) 第4篇隨筆

軟體工程 統一建模語言(Unified Modeling Language UML) 第4篇隨筆

2022-08-31 09:13:06 軟體工程

4.1、統一建模語言(Unified Modeling Language UML)

是一種可視化的語言

  • 規約系統的制品
  • 構造系統的制品
  • 建立系統制品的檔案

UML應用范圍

  • 可用于物件方法和構件方法
  • 可用于所有應用領域和不同的平臺

1.面向物件方法術語/符號

主要有兩類術語:

  • 一種是表達結構化事物的術語
  • 一種是表達關系的術語

2. UML 術語表

一種是表達結構化事物的術語

  • 物件:是系統中用來描述客觀事物的一個物體,一個物件由一組屬性和對這組屬性進行操作一組方法組成,

  • 類:是具有相同屬性、操作、關系和語意的一組物件集合

  • 屬性:描述了物件的具體特征,屬性具有屬性名和屬性值(屬性狀態)

    語法:可見性 屬性名:型別 = 預設值 {性質串}

    可見性:public(+)、protected(#)、private(-)、包內的(~)

  • 操作(方法):一個操作抽象了一個物件所要做的事情,并且該類的其它物件也要做這件事

    語法:可見性 操作名(引數表):回傳型別{性質串}

    可見性:public(+)、protected(#)、private(-)、包內的(~)

  • 介面: 是操作的一個集合,其中每個操作描述了類、構件或子系統的一個服務

  • 協作:是一個互動,涉及互動的三要素:互動各方、互動方式以及互動內容

  • 用況:對一組動作序列的描述,系統執行這些動作應產生對特定參與者有值的、可觀察的結果

  • 主動類(類似java中的主啟動類的main方法):至少具有一個行程或執行緒的類,

    表示:兩條豎線

  • 構件:系統設計中的一種模塊化部件,通過外部介面隱藏了它的內部實作

  • 制品:系統中包含物理資訊、可替代的物理部件

  • 結點:運行時存在的物理元素,通常表示一種具有記憶能力和處理能力的計算機資源

  • 多型性(Polymorphism):是指一般了中定義的屬性或服務被特殊類繼承之后,可以具有不同的資料型別或表現出不同的行為

    多型性實作的方法:

    • 泛化
    • 定義一個抽象類或介面類
  • 細化:是類目之間的語意關系,其中一個類目規約了保證另一類目執行的契約

  • 包:是模型元素的一個分組,一個包本身可以被嵌套在其他包中,并且可以含有子包和其他型別的模型元素


一種是表達關系的術語

  • 關聯:反映了類與類之間的靜態關系

    • 關聯名(name):關聯可以有一個名字

    • 角色(role):一個類參與一個關聯時,有一個特定的角色

    • 多重性(multiplicity):類中物件參與一個關聯的數目

    • 聚合(aggregation):一種特殊形式的關聯,表達一種“整體/部分“關系,一個類是另一個類的一部分

    • 組合(composition):是聚合的一種特殊形式

    • 限定符:一個限定符是一個關聯的屬性或屬性表,這些屬性的值將對該關聯相關的物件集做了一個劃分

    • 關聯類:一種模型元素,它有關聯和類的特性

    • 約束

  • 泛化/繼承:特殊類(子類)的物件擁有其一般類(超類)的全部屬性和服務,稱作特殊類對一般類的繼承

    • 子類可繼承父類的屬性和操作,并可有更多的屬性和操作

    • 子類可以替換父類的生明

    • 若子類的一個操作的實作覆寫了父類同一個操作的實作,這就是多型性,但兩個操作必須具有相同的名字和引數

    • 一個類可以有0個、1個或多個父類,沒有父類且最少有一個子類的類被稱為根類或基類;沒有子類的類稱為葉子類

  • 依賴:是一種使用關系,用于描述一個類目使用另一類目的資訊和服務

    • 系結(bind):表明源的實體化是使用目標給定的實際引數來達到的
    • 匯出(derive):表明可以湊夠目標推匯出源
    • 允許(permit):表明目標對源而言是可見的
    • 實體(instanceOf):表明源的物件是目標的一個實體
    • 實體化(instantiate):表明源的實體是由目標創建
    • 冪型別(powertype):表明源的目標的冪型別
    • 精化(refine):表明源比目標更精細
    • 使用(use):表明源的公共部分的語意依賴于目標的語意
  • 實作(realization):是類目之間的一種語意關系,其中一個類目規約了保證另一個類目執行的契約


3.靜態模型表達工具 -- 類圖

類圖是給出一組類、介面、協作以及它們之間關系的圖

作用:

  • 可用于可視化地表達系統的靜態模型
  • 是構件圖和部署圖的基礎

類圖的內容:類、介面、依賴、泛化、關聯


類圖的一般用法

類圖主要用于對系統的靜態設計視圖(投影)進行建模,支持表達系統的功能需求,即系統提供給最終用戶的服務,

  • 對系統中的詞匯建模

    當需要決策:使用哪些類目和UML關系,作為系統的組成部分;哪些類目和UML關系,處于系統之外,

  • 對簡單協作進行建模

    當需要一組類來表達系統中的某一事物語意時,可使用類圖詳細描述這組類以及它們之間的關系

  • 對邏輯資料庫模式建模

    當需要給出資料庫概念設計的指導,可對要在資料庫中存盤的資訊,采用類圖相應的資料庫模式進行建模


系統行為(互動)的建模工具 -- 順序圖

順序圖是一種互動圖,即由一組物件以及這些物件之間的關系組成,其中還包含這些物件之間被發送的訊息

順序圖包含的內容:

  • 互動各方:角色或物件
  • 互動方式:通信或鏈
  • 互動內容:訊息

5點說明:

  • 順序圖包含了一些由時間定序的訊息

    • 如果訊息是異步的,用枝行箭頭線表示:

    • 如果訊息是同步的,

      則用實心三角箭頭線表示:

      同步訊息的回復用虛線枝行箭頭線表示:

  • 物件生命線,用于表示一個物件在一個特定的時間段中的存在

  • 控制焦點,表達一個物件執行了一個動作的時間段

  • 時序,一條生命線上的時序是非常重要的,使訊息集合形成了一個偏序關系,建立了一個因果鏈

  • 順序圖中的結構控制

    常見的控制型別:

    • 選擇執行(Optional execution):一種結構控制型別,標簽為opt
    • 條件執行(Conditional execution):一個結構控制型別,標簽為alt
    • 并發執行(Parallel execution):一個結構控制型別,標簽為par
    • 迭代執行(iterative execution):一個結構控制型別,標簽為loop

系統行為(生存周期)的建模工具 -- 狀態圖

狀態圖是顯示一個狀態機,其中強調了從一個狀態到另一個狀態的控制流

狀態圖包含:

  • 簡單狀態和組合狀態
  • 事件
  • 轉換

狀態:

一個狀態是類目的一個實體(簡稱物件)在其生存周期的一種條件(condition)或情況(situation),該期間該物件滿足這一條件,執行某一活動或等待某一訊息

表示:

狀態的分類:

  • 初態:表達狀態機默認的開始位置,用實心圓來表示:

  • 終態:表達狀態機的執行已經完成,用內含一個實心圓的圓來表示:

  • 正常狀態(中間態):既不是初態又不是終態

狀態的規約:

  • 名字:是一個標識狀態的文本串
  • 進入/退出效應(effect)
    • entry:該標號在進入該狀態時所需要執行的、由相應動作運算式規定的動作,稱為進入動作
    • exit:該標號在退出該狀態時所需要執行的、由相應動作運算式規定的動作,稱為退出動作
  • 狀態的內部轉移:值沒有導致該狀態改變的內部轉移;動作標號“do”
  • 子狀態:如果一個狀態機中引入了另一個狀態機,那么背引入的狀態機稱為子狀態機
    • 非正交子狀態機(順序子狀態機)
    • 正交子狀態機(并發子狀態機)

事件:

一個事件是對一個有意義的發生的規約,該發生有其自己的時空

  • 內部事件:是在系統內物件之間傳送的事件
  • 外部事件:是在系統和它的參與者之間傳送的事件

可模型化的4種事件

  • 信號(signal):是訊息的一個類目,是訊息的型別
  • 呼叫(call):一個呼叫事件表示物件接受到一個操作呼叫的請求
    • 可以使用在類的定義中的操作定義來規約呼叫事件
    • 該事件或觸發狀態機中的一個狀態轉換,或呼叫目標物件的一個方法
    • ”信號“是一種異步事件,而”呼叫“一般是同步事件,但呼叫可以規約為異步呼叫
  • 時間事件和變化事件
    • 時間事件:是表示推移一段時間的事件
    • 變化事件:是表示一個條件得到滿足或表示狀態的一個變化
  • 發送事件和接受事件
    • 發送事件:表示一個實體發送一個呼叫事件或信號事件
    • 接受事件:表示類的一個實體接受一個呼叫事件或信號事件

狀態轉換:

一個狀態轉換是兩個狀態間的一種關系

狀態轉換的規約,5個部分:

  • 源狀態:引發該狀態轉換的那個狀態
  • 轉換觸發器:在源狀態中由物件識別的事情,并且一旦滿足其監護條件,則使狀態發生轉換
  • 監護條件:一個布爾運算式,當某個轉換器觸發器接受一個事件時,如果該運算式有值為真,則觸發一個轉換;值為假,則不發生狀態轉換,并且此時如果沒有其它可以被觸發的轉換,那么該事件就要丟失
  • 效應:一個可執行的行為
  • 目標狀態:狀態完成后所處的那個狀態

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/503223.html

標籤:其他

上一篇:《低代碼發展白皮書(2022年)》&《2022低代碼·無代碼應用案例匯編》,發布了

下一篇:Matplotlib一個帶有多個子圖的圖邊

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more