MBSE建模學習之一:有26種分區,先說說模塊(Block)建模
MBSE建模技術中最重要的方法就是面向對象(Object Oriented, OO)的方法。幾種不同技術路線中(OOSEM、Harmony-SE、RUP、OPM),主要的也都是把整個系統當作對象來建模。“模塊”(Block)是面向對象模型中最重要的概念。下面說說模塊是啥、怎么來的、怎么建模。先從面向對象技術的三大特征說起。
面向對象技術有三大特征,如下:
(1)抽象
抽象是將具有一致結構和行為的對象抽象成類。一個類就是一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。從某種意義上講,人類的知識體系就是不斷“抽象”世界中的各種物體(Object,對象)、進行分類、形成的各種概念。
(2)繼承
繼承是在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類(稱為“基類”或“父類”)所定義的內容作為自己的內容,并加入若干新的內容。繼承得到的新類稱為“子類”。繼承的過程是一個從一般到特殊的過程。
(3)多態
多態是指相同的操作或過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態性。多態是在子類繼承父類的基礎上,通過重定義方法過程從而實現不同的操作結果。
MBSE主要的建模語言UML/SysML是面向對象的語言。SysML(SystemsModeling Language,系統建模語言)是對UML(Unified Modeling Language,統一建模語言)的擴展。在UML中最重要的概念是“類”(Class)。SysML中,對“類”進行了擴展,稱為“模塊”(Block)。MBSE的建模工作,可以說就是把要設計的系統及其各部分抽象為“模塊”的過程。模塊的主要用途是說明系統的架構。這個“模塊”可以代表任何級別的產品。模塊與模塊之間可以有繼承關系(或稱泛化關系,父類泛化子類,子類繼承父類)、組合或引用關聯關系等等。
下面用一個簡單的例子說明一下用“模塊”實現面向對象技術的三大特征。在MBSES軟件中,建立一個模塊定義圖(如何建立解決方案、項目、包、模塊定義圖的軟件操作過程,可以參考用戶手冊“快速操作指引”)。圖中增加一個作為父類的模塊“計算機”。當定義一個具體的計算機型號的時候,可以從這個父類繼承,繼承類自動具有父類的所有屬性(在MBSES軟件中通過屬性框設置模塊節點“顯示繼承特征”可以在繼承類中顯示所有繼承父類的屬性,這些繼承屬性前面有一個特殊標志“^”)。還可以添加子類特有的一些屬性;或者通過“重定義”父類屬性,把父類通用的屬性轉成子類特有屬性。例如這個圖中,通過重定義父類的“mo:顯示器”屬性,確定子類的顯示器類型是更具體“24寸顯示器”。
模塊的各種屬性、操作、關系可以顯示在模塊節點中的一個方框內,這些方框稱為模塊節點的一個“分區”(Compartment)。在MBSES軟件中,模塊的視圖總共有超過26種分區。通過“模塊”節點的右鍵菜單添加各類屬性、操作,模塊就會顯示這些分區(沒有這類屬性,模塊節點是一定不顯示這個分區的;有的話,還可以通過節點對屬性框中的節點顯示屬性設置是否顯示)
模塊的標準分區
模塊的26種標準分區都有啥?列表如下:
序號 |
種類 |
分區名稱 |
|
| 1 |
結構特征 |
部件(parts) |
類型是“模塊”且聚合關系是“組合”的屬性 |
| 2 | 結構特征 |
引用(references) |
類型是“模塊”且聚合關系不是“組合”的屬性 |
| 3 | 結構特征 |
值(values) |
類型是值類型(ValueType)的屬性 |
| 4 |
結構特征 |
約束(constraints) |
類型是“約束屬性”的屬性 |
| 5 | 結構特征 |
連接器(connector properties) |
類型是關聯的屬性 |
| 6 | 結構特征 |
參與屬性 (participant properties) |
關聯模塊中,和兩端被關聯的模塊對應的屬性 |
| 7 | 結構特征 |
屬性(properties) |
任何類型的屬性 |
| 8 |
行為特征 |
操作(operations) |
類型為操作的行為特征 |
| 9 |
行為特征 |
接收(receptions) |
類型為接收的行為特征 |
| 10 |
行為 |
類目行為(classifier behavior) |
表示模塊開始工作,一直到結束的整個過程的行為。一個模塊只有一個類目行為,一般是一個狀態機。 |
| 11 |
行為 |
擁有行為(owned behaviors) |
模塊能夠提供的各種服務。擁有行為包括類目行為,但是在MBSES中擁有行為分區中不重復顯示類目行為。 |
| 12 | 結構特征 |
綁定引用(bound references) |
類型是綁定引用的屬性 |
| 13 | 構造型 |
構造型 (stereotypes) |
當構造型在分區中顯示的時候,顯示應用的構造型的屬性 |
| 14 |
端口 |
端口(ports) |
類型是端口的屬性 |
| 15 | 端口 |
完整端口(full ports) |
類型是完整端口的屬性 |
| 16 | 端口 |
代理端口(proxy ports) |
類型是代理端口的屬性 |
| 17 | 屬性 |
流屬性(flow properies) |
有方向、代表流元素的屬性 |
| 18 |
分配關系 |
分配從(allocatedFrom) |
分配關系的源端元素 |
| 19 |
分配到(allocatedTo) |
分配關系的目標端元素 |
|
| 20 |
需求關系 |
改善(refines) |
改善的需求 |
| 21 |
滿足(satisfies) |
滿足的需求 |
|
| 22 | 跟蹤從(tracedFrom) |
跟蹤的需求 |
|
| 23 | 驗證(verifies) |
驗證的需求 |
|
| 24 | 結構 |
結構(structure)分區 |
結構分區顯示一個局部的內部模塊圖,顯示模塊的結構 |
| 25 | 命名空間 |
命名(namespace)空間分區 |
命名空間分區顯示一個局部的包圖,命名空間分區中的模塊是當前模塊的嵌套類而已 |
| 26 |
圖形 |
圖形(image)分區 |
顯示一個代表模塊的圖形 |
這26種分區,意義和用途說明如下:
(1)部件(parts):
部件分區中屬性的類型也都是模塊,它表示父級模塊的組成部分。每個部件的工作過程在父級模塊開始之后才能開始。而在父級模塊工作結束后,所有部件屬性都不可能再工作。一個部件只能屬于某一個模塊,它表示模塊的內部結構。
(2)引用(references)
引用屬性的類型也是一個模塊,不過這個子模塊不是當前這個模塊內部的模塊。它可能位于另一個模塊內部,但是當前這個模塊的工作需要這個外部部件提供功能,或者向這個外部模塊提供數據或信息。
(3)值(vallues)
值屬性的類型是一個值類型(ValueTtype)。SysML的值類型在繼承UML數據類型的基礎上,增加了“單位”和“數量類型”屬性,更適合工程上的實際應用。
(4)約束(constraints)
約束分區中的約束一般是一個數學表達式,它表示模塊各屬性參數之間的數學關系。SysML擴展了約束的應用,約束分區中的“約束”也可以是一個“約束屬性”。約束屬性的類型是一個約束模塊,約束模塊中包含了可以重復使用的約束關系。也就是通過“約束屬性”,把通用的數學關系放到約束模塊中。進一步描述約束模塊中數學關系和模塊的參數之間的關系,可以用一個參數圖表示。
(5)連接器屬性(connectorProperties)
連接器(Connector)是對應各部件之間關聯關系的屬性。連接器的類型是一個關聯(Associattion)或關聯模塊(AssociationBlock)。連接器可能只是表示內部模塊之間數據或信息的傳送,也可以是具體的有實物的連接器產品,如電連接器、機械連接器等。
(6)參與屬性(participant properties)
當連接器的類型是一個關聯模塊的時候,連接器兩端連接的部件,對于連接器的類型:關聯模塊來說是“參與屬性”。下圖說明了一個關聯模塊中“參數屬性”的例子。
(7)屬性(properties)
這個普通屬性的分區可以顯示任何類型的屬性,也就是屬性的類型可以是任何類型,甚至可以為空。
(8)操作(operations)
操作表示模塊可提供的一個服務。對于軟件模塊,對應這個類提供的方法、過程或一個函數。對于硬件模塊,它表示模塊可提供的方法接口,可接收參數并完成一個功能。但是UML\SysML中操作只是一個方法接口,它的實現需要通過對應方法的行為圖來描述。
(9)接收(receptions)
接收表示模塊接收信號并進行處理的一個方法。接收一定對應在模型中某個地方定義的信號(Signal),它的參數和信號的屬性對應。接收的調用一定是異步的,也就是一個模塊向另一個模塊發送信號,是不等待返回消息就繼續其它工作或發送下一個信號。(同步的概念是調用另外一個模塊的操作的時候,會等待返回的消息,收到返回消息才繼續下面的工作)
(10)類目行為(classifier behavior)
一方面,行為表示模塊可提供的一種服務,輸入什么、輸出什么。另外,行為有對應的行為圖(活動圖、序列圖、狀態機圖)。在行為圖中詳細說明了模塊是怎么處理輸入信息(輸入參數)并加工、轉化為輸出信息(輸出參數)的。這里的“信息”表示任何物質,不止是數據。也可以沒有輸入、輸出信息,只是表示模塊的活動過程。
模塊的類目行為就是表示模塊從開始到結束的活動過程。一個模塊只能有一個類目行為。例如用一個狀態機表示設備的活動過程。這個狀態機有啟動、開機、待機、關機、停機等各種狀態。
(11)擁有行為(owned behaviors)
一個模塊擁有的所有行為。一個模塊可能提供多種服務或功能,每個可以對應一個行為。
(12)綁定引用(bound references)
綁定引用是一個引用屬性,同時這個引用屬性通過綁定連接器綁定到內部的一個部件。“綁定”的概念是兩個值始終相等,或者是同一個對象的意思。通過綁定關系,同一個對象在兩個地方使用。例如計算機中映射了另外一個計算機的一個存儲空間作為本地盤符。
(13)構造型(stereotypes)
構造型是一種擴展標準元素功能的機制。例如定義一個表示元素作者、版本的構造型。模塊構造型的屬性可以顯示在分區中,也可以顯示在頭部。通過模塊屬性框中節點顯示屬性設置。構造型屬性是在設計模型時輸入的,而模塊的屬性是在模塊實例化的時候才賦值的,這個也是區分構造型屬性和模塊自己屬性的一個方法。
(14)端口(ports)
端口是一個特殊的部件,它是專門用來和外界交換信息的。例如一個計算機的USB端口、提供顯示信號的HDMI端口。
端口一般表示為模塊邊框上的小方塊。也可以顯示在分區中。可以通過屬性框中模塊節點的顯示屬性設置。
(15)完整端口(full ports)
完整端口是我們把它當作一個獨立的部件來看待的,這個部件也是一個可能具有各種屬性、功能行為的一個模塊。可以說完整端口是自己直接處理輸入的信息、輸出處理后的信息(當然處理過程也是可以調用其它內部模塊的功能的)。
(16)代理端口(proxy ports)
代理端口的類型一定是一個接口模塊。代理端口通過一個綁定連接器綁定到一個內部的模塊。可以說代理端口自己并沒有處理信息的功能,處理信息的其實是另外一個內部模塊。
(17)流屬性(flow properties)
流屬性是具有方向的屬性。流屬性的方向有“進”“出”或“進出”(in, out, inout)。流屬性的類型可以是值類型、模塊或信號。
(18)分配從(allocatedFrom)
“分配”是SysML中定義的一個表示兩個元素之間特殊關系的元素。例如可以為結構分配行為、為物理結構分配邏輯結構,為結構分配資源。
“分配從”表示一個元素被分配到了這個模塊。例如一個一個活動被分配到這個模塊。
(19)分配到(allocatedTo)
“分配到”表示這個模塊分配到了另外一個元素。例如一個邏輯模塊分配到一個物理模塊。
(20)改善(refines)
“改善”是表示模塊和需求之間的關系,意思是這個模塊的說明更詳細的說明了需求。
(21)滿足(satisfies)
“滿足”表示模塊滿足了某個需求。
(22)跟蹤從(tracedFrom)
“跟蹤從”表示這個模塊跟蹤回某個需求。通過跟蹤關系可以知道模塊設計和需求之間關系。
(23)驗證(verifies)
“驗證”表示模塊驗證了某個需求。作為驗證關系的模塊,一般是一個“測試案例”元素。
(24)結構(structure)分區
結構分區顯示了一個模塊的內部結構。在模塊節點中要顯示結構分區,可以把圖形工具切換到內部模塊圖,然后拖拽一個屬性節點到模塊節點上,這時候模塊節點會顯示結構分區。
結構分區提供了一個把內部結構和模塊定義同時顯示的機制。
(25)命名(namespace)空間分區
命名空間是一個有名稱屬性的元素的命名空間。可以把命名空間和磁盤中的“目錄”作用類似看待,不同命名空間下面的元素名稱可以重復。一個元素完整的名稱包括“完整的命名空間”+“::”+“名稱”,這個完整的名稱稱為元素的“完全限定名稱”。作為命名空間的元素一般是包,但是模塊也可以作為命名空間元素。但是在模塊命名空間下面定義的模塊元素只是表示是上層模塊的“嵌套類”元素,它并不表示“組成”關系。
如果把一個模塊拖拽到另外一個模塊上面,上層的模塊會顯示命名空間分區。
(26)圖形(image)分區
模塊節點也可以顯示一個代表模塊的圖片。通過節點的右鍵菜單“選擇圖片”,可以選擇一個圖片文件,顯示在節點下方。
結構分區、命名空間分區、圖形分區的示例如下(涂個顏色):
模塊的自定義分區
模塊節點除了顯示上述標準的26種分區,用戶還可以添加多個自定的分區。每個自定義分區的名稱和分區中顯示的屬性都可以自定義。而且自定義分區開可以通過泛化關系繼承。通過這個功能,用戶可以定義一個“基類”作為模板,然后需要的模塊從這個模板類繼承,可以立即為這些繼承類增加標準化的屬性。如下定義了一個“六性”基類模塊,在另外一個模塊繼承它、應用的例子。
文章來源:智睿思維MBSE
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















