一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

為什么建立UML模型范例

jf_78858299 ? 來源:MBSE 基于模型的系統(tǒng)工程 ? 作者:俎濤 ? 2023-05-05 10:20 ? 次閱讀

1. 為什么建立UML模型范例

作為統(tǒng)一建模語言,UML可以幫助我們對很多業(yè)務(wù)、技術(shù)的知識進行梳理,從多個視角描述清楚,幫助讀者理解。另外因為UML的建模首先來自于軟件建模的需求,所以UML的模型很容易轉(zhuǎn)換為軟件的設(shè)計,這對于軟件開發(fā)者來說是一個天生的福利。

現(xiàn)在UML對于IT技術(shù)有關(guān)的建模已經(jīng)比較成功,例如:

  • 用類圖建模 數(shù)據(jù)模型、程序結(jié)構(gòu)。
  • 用活動圖建模業(yè)務(wù)流程、程序流程和運算過程等等。
  • 用順序圖建模人員交互、程序模塊交互等等。
  • 用狀態(tài)圖建??刂茖ο蟮臓顟B(tài)邏輯。

但是一個完整的應(yīng)用,最重要的往往是專業(yè)性強的領(lǐng)域知識的建模。而這方面,可以公開看到的UML范例卻不多,這也就造成了UML建模的價值還沒有被充分的挖掘出來。

所以我們嘗試采用UML對各個領(lǐng)域的專業(yè)知識建模,期望能夠讓大家看到邏輯建模的重要性,以及在邏輯建模方面以面向?qū)ο笏枷霝楹诵牡腢ML建模的強大表達(dá)力。進而更多的采用UML提高描述、分析和設(shè)計能力。

雖然UML對邏輯建模具有很大的表達(dá)能力,但是各個專業(yè)領(lǐng)域自身、以及人們自發(fā)的描述方式也是非常重要的,而且一般是各種專業(yè)知識的首要表達(dá)方式。所以UML的建模不應(yīng)該成為已有描述形式的顛覆者,而更應(yīng)該是對已有描述的梳理,以更簡潔、更加精確、更加抽象的方式進行邏輯化描述。這樣可以對知識進行多個維度、多個層次的更加充分的挖掘和展示。因為我們這里主要關(guān)注UML的建模,但是也不想損失已有的知識描述,所以在UML之前的各種已有的知識的描述和建模方式,我們這里稱之為 “原生圖”。

所以我們對專業(yè)知識的建模采用2種方式:

  • 原生圖:采用被建模領(lǐng)域的常見圖示,可以是專業(yè)圖,也可以是一些形象的示意圖。
  • UML圖:采用UML建模,重點是邏輯的描述,更強調(diào)建模的簡潔性和清晰度。

為了更加充分的描述被建模對象,這里采用4個視角進行建模:

  • 結(jié)構(gòu)視角:描述事物的構(gòu)成和關(guān)系,是一種靜態(tài)視圖。
  • 過程視角:描述一個事物的行為過程,是一種動態(tài)視圖。
  • 數(shù)據(jù)視角:描述行為過程中傳遞的數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)是靜態(tài)視圖, 數(shù)據(jù)的傳遞是一個動態(tài)視圖。
  • 狀態(tài)視角:描述各種對象和行為的狀態(tài)變化,狀態(tài)的數(shù)據(jù)結(jié)構(gòu)定義,屬于靜態(tài)視圖,狀態(tài)的轉(zhuǎn)換過程,是一種動態(tài)視圖。
    圖片

本文采用UML模型對TCP協(xié)議進行建模。主要涉及4個視圖:

  1. 結(jié)構(gòu)視圖:描述該協(xié)議的網(wǎng)絡(luò)通信相關(guān)的節(jié)點和鏈接。
  2. 過程視圖:描述基于該協(xié)議的網(wǎng)絡(luò)通信的過程。
  3. 數(shù)據(jù)視圖:描述通信相關(guān)的數(shù)據(jù)結(jié)構(gòu)和關(guān)系。
  4. 狀態(tài)視圖:描述通信過程中的對象狀態(tài)。
  5. TCP/IP協(xié)議簡介

TCP 協(xié)議是通信網(wǎng)絡(luò)傳輸層的網(wǎng)絡(luò)通信協(xié)議。為了充分的理解TCP按照TCP/IP的5層協(xié)議結(jié)構(gòu),我們看看各層通信協(xié)議的職責(zé),如下圖所示:

圖片

TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)是指能夠在多個不同網(wǎng)絡(luò)間實現(xiàn)信息傳輸?shù)膮f(xié)議簇。TCP/IP協(xié)議不僅僅指的是TCP 和IP兩個協(xié)議,而是指一個由FTP、SMTP、TCP、UDP、IP等協(xié)議構(gòu)成的協(xié)議簇, 只是因為在TCP/IP協(xié)議中TCP協(xié)議和IP協(xié)議最具代表性,所以被稱為TCP/IP協(xié)議。

TCP/IP五層模型說明:

職責(zé)
應(yīng)用層 應(yīng)用程序?qū)邮切枰W(wǎng)絡(luò)通信的應(yīng)用程序所在的位置。這些應(yīng)用程序的示例包括電子郵件客戶端和Web瀏覽器。這些應(yīng)用程序使用傳輸層發(fā)送請求以連接到遠(yuǎn)程主機。
傳輸層 在傳輸層建立在不同主機上運行的應(yīng)用程序之間的連接。它使用TCP進行可靠連接,使用UDP進行快速連接。它通過為其分配port號來跟蹤在其上方的應(yīng)用程序中運行的進程,并使用網(wǎng)絡(luò)層訪問TCP / IP網(wǎng)絡(luò)。
網(wǎng)絡(luò)層 該網(wǎng)絡(luò)層負(fù)責(zé)創(chuàng)建在整個網(wǎng)絡(luò)中的數(shù)據(jù)包。它使用IP地址來識別數(shù)據(jù)包的源和目的地。
數(shù)據(jù)鏈路層 該數(shù)據(jù)鏈路層負(fù)責(zé)創(chuàng)建跨網(wǎng)絡(luò)傳輸?shù)膸?。這些幀封裝了數(shù)據(jù)包,并使用MAC地址來標(biāo)識源和目的地。
物理層 所述物理層編碼和解碼數(shù)據(jù)鏈路層的一幀中的bit,它包括收發(fā)器,可以在網(wǎng)絡(luò)上發(fā)生和接收信號。

通信過程中最重要的數(shù)據(jù)就是在各個通信協(xié)議層次傳遞的數(shù)據(jù)。如下是一個要發(fā)送的消息通過各個網(wǎng)絡(luò)協(xié)議層的過程中被逐步添加相應(yīng)協(xié)議信息的示意圖:

圖片

較高的層將信息傳遞給較低的層。每一層都將被稱為header的信息添加到傳遞給它的數(shù)據(jù)中。此header包含圖層執(zhí)行其工作所需的信息。我們將從應(yīng)用程序?qū)娱_始。

我們更關(guān)注各個層次數(shù)據(jù)的逐步累加過程,為了讓表達(dá)累加過程中數(shù)據(jù)結(jié)構(gòu)的變化,采用UML的類圖,對各個層次的數(shù)據(jù)結(jié)構(gòu)進行建模如下:

圖片

各個網(wǎng)絡(luò)通信層次對消息的處理過程采用UML的活動圖描述其中的數(shù)據(jù)流如下:

過程的文本描述
應(yīng)用程序?qū)由梢粭l消息。在這種情況下,特定的應(yīng)用程序是請求網(wǎng)頁下載的Web瀏覽器。然后,此消息將發(fā)送到傳輸層。傳輸層添加了TCP 或者UDP 的header,其中包括源port和目標(biāo)port地址。其他信息(如用于TCP的數(shù)據(jù)包序列號)也將添加到header中。如果使用TCP,則由傳輸層生成的數(shù)據(jù)稱為段(segment),如果使用UDP,則稱為數(shù)據(jù)報(Datagram)。然后將該段發(fā)送到網(wǎng)絡(luò)層。網(wǎng)絡(luò)層添加了包含源IP地址和目標(biāo)IP地址的header以生成數(shù)據(jù)包(Packet)。然后將此數(shù)據(jù)包發(fā)送到數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層添加包含MAC地址信息的header以創(chuàng)建幀(Frame)。然后,將該幀發(fā)送到物理層以傳輸比特碼。

活動圖描述:

圖片

  1. UML建模圖例

下面采用UML的4個視圖建模TCP通信協(xié)議。

3.1 結(jié)構(gòu)視圖

主要描述TCP協(xié)議的網(wǎng)絡(luò)通信相關(guān)的網(wǎng)絡(luò)節(jié)點和連接,采用UML的復(fù)合結(jié)構(gòu)圖建模如下:

圖片

3.2 過程視圖

過程視圖主要描述2各層次:

  • 整個網(wǎng)絡(luò)通信的過程
  • TCP傳輸?shù)倪^程

TCP通信過程

圖片

建立連接

通過三次握手(3個消息)建立客戶端和服務(wù)端的連接:

  1. 客戶端發(fā)出建立連接請求,
  2. 服務(wù)端響應(yīng)
  3. 客戶端確認(rèn)收到響應(yīng)
過程的文本描述
段1 :客戶端發(fā)送一個連接請求消息SYN報文說明:在TCP頭部的SYN位字段置位的TCP/IP數(shù)據(jù)包,并指明自己想要連接的port號和它的客戶端初始序列號(記為ISN,圖中ISN=x)。段2:服務(wù)端響應(yīng)連接請求消息服務(wù)端收到請求后,也發(fā)送自己的SYN報文段作為響應(yīng),并包含了它的初始序列號(ISN(s)=y)。此外,為了確認(rèn)客戶端的SYN,SYN數(shù)據(jù)加1后作為返回的ACK數(shù)值。因此,每發(fā)送一個SYN,序列號就會自動加1。、段3:客戶端發(fā)送確認(rèn)收到響應(yīng)的消息為了確認(rèn)服務(wù)器端的SYN,客戶端將ISN(s)的數(shù)值加1后作為返回的ACK數(shù)值。這稱為段3。

順序圖描述:

圖片

傳輸數(shù)據(jù)

如下是傳輸數(shù)據(jù)的圖示:

圖片

關(guān)閉連接

通過四次握手(4個消息)關(guān)閉客戶端和服務(wù)端的連接:

  1. 客戶端發(fā)出關(guān)閉請求
  2. 服務(wù)端確認(rèn)
  3. 服務(wù)端發(fā)出關(guān)閉請求
  4. 客戶端確認(rèn)
過程的文本描述
1. 主動關(guān)閉者發(fā)送一個FIN,指明接收者希望看到的自己當(dāng)前的序列號。目的是告訴被動關(guān)閉方,我要關(guān)閉連接了。2. 被動關(guān)閉方收到 FIN包后,發(fā)送一個ACK給對方,將K的數(shù)值加1作為響應(yīng)的ACK值,以標(biāo)識該ACK對應(yīng)的FIN 。3. 被動關(guān)閉方發(fā)送一個FIN,用來告訴對方,我也可以關(guān)閉連接了。為了標(biāo)識這是自己發(fā)起的,有一個表示位seq =q,為了標(biāo)識該FIN對應(yīng)的主動關(guān)閉方發(fā)起的FIN,會有標(biāo)識符ack = p+1;4. 主動關(guān)閉方收到 FIN后,發(fā)送和一個ACK給對方,告知確認(rèn)關(guān)閉,用一個標(biāo)識位ack =q+1標(biāo)識對應(yīng)的請求。

順序圖描述:

圖片

如下是來自于一篇網(wǎng)絡(luò)文章的關(guān)閉連接的過程描述:

  • 第一次揮手:主動關(guān)閉方發(fā)送一個FIN,用來關(guān)閉主動方到被動關(guān)閉方的數(shù)據(jù)傳送,也就是主動關(guān)閉方告訴被動關(guān)閉方:我已經(jīng)不會再給你發(fā)數(shù)據(jù)了(當(dāng)然,在fin包之前發(fā)送出去的數(shù)據(jù),如果沒有收到對應(yīng)的ack確認(rèn)報文,主動關(guān)閉方依然會重發(fā)這些數(shù)據(jù)),但此時主動關(guān)閉方還可以接受數(shù)據(jù)。
  • 第二次揮手:被動關(guān)閉方收到FIN包后,發(fā)送一個ACK給對方,確認(rèn)序號為收到序號+1(與SYN相同,一個FIN占用一個序號)。
  • 第三次揮手:被動關(guān)閉方發(fā)送一個FIN,用來關(guān)閉被動關(guān)閉方到主動關(guān)閉方的數(shù)據(jù)傳送,也就是告訴主動關(guān)閉方,我的數(shù)據(jù)也發(fā)送完了,不會再給你發(fā)數(shù)據(jù)了。
  • 第四次揮手:主動關(guān)閉方收到FIN后,發(fā)送一個ACK給被動關(guān)閉方,確認(rèn)序號為收到序號+1,至此,完成四次揮手。

3.3 數(shù)據(jù)視圖

一個具體的TCP報文結(jié)構(gòu)如下圖所示:

圖片

可以用UML的類圖對報文結(jié)構(gòu)進行建模,圖示如下:

圖片

這個類圖對結(jié)構(gòu)的關(guān)系描述的更加清晰,也符合開發(fā)工程師的結(jié)構(gòu)化需要。當(dāng)然也比較抽象,應(yīng)該結(jié)合原生圖進行理解才好。

3.4 狀態(tài)視圖

通信協(xié)議因為存在狀態(tài)變遷,所以一般采用狀態(tài)圖建模協(xié)議的狀態(tài)機。下圖來自于一篇網(wǎng)絡(luò)是常見的TCP協(xié)議狀態(tài)機(來自于一篇網(wǎng)絡(luò)文章):

圖片

TCP狀態(tài)及其描述如下表。

狀態(tài) 描述
LISTEN 等待來自遠(yuǎn)程TCP應(yīng)用程序的請求
SYN_SENT 發(fā)送連接請求后等待來自遠(yuǎn)程端點的確認(rèn)。TCP第一次握手后客戶端所處的狀態(tài)
SYN-RECEIVED 該端點已經(jīng)接收到連接請求并發(fā)送確認(rèn)。該端點正在等待最終確認(rèn)。TCP第二次握手后服務(wù)端所處的狀態(tài)
ESTABLISHED 代表連接已經(jīng)建立起來了。這是連接數(shù)據(jù)傳輸階段的正常狀態(tài)
FIN_WAIT_1 等待來自遠(yuǎn)程TCP的終止連接請求或終止請求的確認(rèn)
FIN_WAIT_2 在此端點發(fā)送終止連接請求后,等待來自遠(yuǎn)程TCP的連接終止請求
CLOSE_WAIT 該端點已經(jīng)收到來自遠(yuǎn)程端點的關(guān)閉請求,此TCP正在等待本地應(yīng)用程序的連接終止請求
CLOSING 等待來自遠(yuǎn)程TCP的連接終止請求確認(rèn)
LAST_ACK 等待先前發(fā)送到遠(yuǎn)程TCP的連接終止請求的確認(rèn)
TIME_WAIT 等待足夠的時間來確保遠(yuǎn)程TCP接收到其連接終止請求的確認(rèn)

這個狀態(tài)圖涉及到了客戶端、服務(wù)端、網(wǎng)絡(luò)連接多個對象,所以看起來一頭霧水,很難理解。這樣的圖示對于用戶是不友好的,所以有必要用UML的狀態(tài)圖改進一下。

狀態(tài)圖的建模首先應(yīng)該識別持有狀態(tài)的對象,然后再建立它的狀態(tài)圖,TCP網(wǎng)絡(luò)通信過程實際上涉及到了3個對象:

  • 客戶端Client,
  • 服務(wù)端Host,
  • 網(wǎng)絡(luò)連接Connection 。

圖片

他們分別有各自的狀態(tài)圖,下面基于TCP的通信過程,對三個對象的狀態(tài)分別進行建模。

Connection的狀態(tài)如下

圖片

這樣看起來和通信過程完全映射,好理解多了。

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

    關(guān)注

    2

    文章

    881

    瀏覽量

    64068
  • 建模
    +關(guān)注

    關(guān)注

    1

    文章

    315

    瀏覽量

    61339
  • UML
    UML
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    31064
  • 開發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    611

    瀏覽量

    17320
收藏 人收藏

    評論

    相關(guān)推薦

    基于proe技術(shù)的平墊圈模型范例

    本文介紹了基于proe技術(shù)的平墊圈模型范例。
    發(fā)表于 11-17 17:14 ?0次下載
    基于proe技術(shù)的平墊圈<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的彈簧墊圈模型范例

    本文介紹了基于proe技術(shù)的彈簧墊圈模型范例。
    發(fā)表于 11-17 17:04 ?0次下載
    基于proe技術(shù)的彈簧墊圈<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的瓶蓋模型范例

    本文介紹了基于proe技術(shù)的瓶蓋模型范例
    發(fā)表于 11-17 17:21 ?0次下載
    基于proe技術(shù)的瓶蓋<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的曲面上的文字模型范例

    本文介紹了基于proe技術(shù)的曲面上的文字模型范例。
    發(fā)表于 11-17 17:21 ?0次下載
    基于proe技術(shù)的曲面上的文字<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的裝飾罩模型范例

    本文介紹了基于proe技術(shù)的裝飾罩模型范例。
    發(fā)表于 11-17 17:21 ?0次下載
    基于proe技術(shù)的裝飾罩<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的狼牙棒模型范例

    本文介紹了基于proe技術(shù)的狼牙棒模型范例。
    發(fā)表于 11-17 17:21 ?0次下載
    基于proe技術(shù)的狼牙棒<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的錘子手柄模型范例

    本文介紹了基于proe技術(shù)的錘子手柄模型范例。
    發(fā)表于 11-17 17:28 ?0次下載
    基于proe技術(shù)的錘子手柄<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的羊角錘錘頭模型范例

    本文介紹了基于proe技術(shù)的羊角錘錘頭模型范例。
    發(fā)表于 11-17 17:28 ?0次下載
    基于proe技術(shù)的羊角錘錘頭<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的風(fēng)扇模型范例

    本文介紹了基于proe技術(shù)的風(fēng)扇模型范例
    發(fā)表于 11-17 17:28 ?0次下載
    基于proe技術(shù)的風(fēng)扇<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的鼠標(biāo)下蓋模型范例

    本文介紹了基于proe技術(shù)的鼠標(biāo)下蓋模型范例。
    發(fā)表于 11-18 09:44 ?0次下載
    基于proe技術(shù)的鼠標(biāo)下蓋<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的油桶模型范例

    本文介紹了基于proe技術(shù)的油桶模型范例。
    發(fā)表于 11-18 09:47 ?0次下載
    基于proe技術(shù)的油桶<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的元件安裝殼模型范例

    本文介紹了基于proe技術(shù)的元件安裝殼模型范例。
    發(fā)表于 11-18 09:46 ?0次下載
    基于proe技術(shù)的元件安裝殼<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的加濕器噴嘴模型范例

    本文介紹了基于proe技術(shù)的加濕器噴嘴模型范例
    發(fā)表于 11-18 09:54 ?0次下載
    基于proe技術(shù)的加濕器噴嘴<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的加濕器水箱模型范例

    本文介紹了基于proe技術(shù)的加濕器水箱模型范例。
    發(fā)表于 11-18 09:54 ?0次下載
    基于proe技術(shù)的加濕器水箱<b class='flag-5'>模型范例</b>

    基于proe技術(shù)的加濕器底座模型范例

    本文介紹了基于proe技術(shù)的加濕器底座模型范例。
    發(fā)表于 11-18 09:54 ?0次下載
    基于proe技術(shù)的加濕器底座<b class='flag-5'>模型范例</b>