MBSE建模學習之三:系統功能--行為(Behavior)的說明

     

MBSE的模型中,行為(Behavior)是一個重要的概念。前面我們主要介紹的模塊、模塊的屬性是系統的結構模型,描述系統是如何構成的,各部分之間有什么關系。而行為是系統的功能模型,或稱之為動態模型,它描述的是系統及其各組成部分是如何動態變化的。

“行為”(Behavior)的概念

“行為”(Behavior)是一種通用的動態模型元素。具體的行為元素主要包括“活動”(Activity)、“狀態機”(StateMachine)和“交互”(Interaction),它們分別以“活動圖”、“狀態機圖”和“序列圖”的方式說明一個行為的過程。這三種圖的具體說明我們將在后期的文章中進行說明,這里先講講通用行為的概念,以及行為和作為系統結構說明的元素“模塊”、需求說明的元素“需求”之間的關系。

“行為”是系統狀態隨時間變化過程的描述。“行為”代表系統的一種功能,它有輸入、輸出,它的功能就是把輸入轉換為輸出。在這個轉換過程中,可能伴隨系統本身狀態參數的變化。在設計一個系統的時候,很重要的工作就是設計系統有什么功能、怎么實現這些功能。所以,進行系統行為模型的分析是建模工作的關鍵內容之一。在對一個新產品進行建模的時候,一般是遵從“需求分析”“功能分析”(行為分析)--“架構設計”這個大的基本過程。“需求分析”階段,通過建立系統“功能需求”元素(FunctionalRequirement,它是SysML標準中一個擴展的需求元素)確定功能目標。然后通過建立相應的行為元素及其圖形細化這些功能需求(功能需求只能通過一個行為元素來滿足)。最后在確定系統架構模型時,將這些行為分配給具體的“模塊”(作為模塊的“擁有行為”)。

“行為”元素可以放在模型中專用的一個包下面,也可以直接放在具體的某個“模塊”下面。

UML語言中,“行為”也是一個“類”(Class)。相應的在SysML語言中,具體的行為元素(活動、交互和狀態機)都是類的擴展元素“模塊”(Block)UML\SysML標準遵循了面向對象的設計概念,這世界上一切都是“對象”(Object)。“對象”是類的實例,也就是說世界上的一切對象都是某個類的實例。“行為”也是一個類,行為的一次“執行”就是這個類的實例。當然,行為是一種特殊的類,它有類的基本特征:可以有屬性和操作,而且它還多出來很多描述動態過程的東西(具體的行為元素描述動態過程的方法不同,具有的子元素不同)。可以說“行為”元素是在“類”的基礎上增加了描述動態過程的內容。

SysML標準中,三種具體的行為元素“活動”、“狀態機”和“交互”都是“模塊”,所以它們可以像模塊一樣進行分解,把一個復雜的行為分解成小的、局部的或共用行為元素。這個過程也可以對應為設計分析中的“功能分解”過程。上層的行為元素和下層的行為元素都有各自的圖形,例如在一個上層“活動圖”中,通過一個“調用行為動作”,調用下層的活動元素(或其它行為元素)。

“行為”(Behavior)的語法

前面我們說了,“行為”代表一種功能,有輸入、輸出,好似軟件中的一個“函數”或“過程”(UML本來是用于軟件建模的,在UML中一個行為確實對應編程語言中的一個函數或過程)。在定義一個行為元素的時候(例如,在模塊的擁有行為分區或類目行為分區中增加一個行為),它遵從以下語法:

<name>‘(’[<parameter-list>]‘)’[‘:’ [<return-type-list>]][<behavior-constraint>]

用中文把上面的語法翻譯一下如下:

<名稱>‘(’ [<參數列表>] ‘)’ [‘:’ [<返回參數列表> ] ] [ <行為約束>]

上面語法中各部分說明如下:

<name>:行為的名稱,不能為空。行為元素也是有命名空間的,如果行為直接定義在一個包下面,這個包就是它的命名空間;如果定義在一個模塊下面,模塊的名稱就是它的命名空間。

< parameter-list>:輸入參數的列表,每個參數用“,”分隔。每個參數的語法如下:

<parameter>::=[<direction>] <parameter-name> ’:’<type-expression> [’[’<multiplicity-range>’]’] [’=’<default>][’{’ <parm-property> [’,’ <parm-property>]* ’}’]

對應中文,每個參數用“方向 名稱:類型[多重性]=默認值{參數屬性}”這樣的格式。

<direction>’in’ | ’out’ | ’inout’ (默認’in’),表示參數是傳入、傳出或同時是,“無”的話默認是傳入。

<parameter-name>:參數名稱。

<type-expression>:參數類型。

<multiplicity-range>:集合參數的話參數的數量最少、最多多少個。

= <default>:參數默認值。

<parm-property>:參數屬性,有以下選項:

         <param-prop> ::= ‘ordered’ |‘unordered’ | ‘unique’ | ‘nonunique’ | ‘seq’ | ‘sequence’

         ‘ordered’ | ‘unordered’表示返回的集合參數中是否是有順序的;

         ‘unique’ | ‘nonunique’表示集合中每個參數是否是唯一、不唯一的;

       ‘seq’| ‘sequence’這兩個選項意義相同,‘seq’ ‘sequence’的縮寫,表示參數是一個有序的“袋”(bag),既有序但不唯一。

此外,參數還有以下屬性:

isStreaming:是否是“流”。如果是流,則在行為執行期間,這個參數可能一直有數據傳入、傳出,而不僅僅是在調用或完成時。

isException:是否異常值,只用于是“傳出”的參數。如果“是”,則如果這個參數有值,則其它參數不會有值。

effect:影響,取值范圍為“生成、讀取、更新、刪除”中的一種。

< return-type-list>:返回參數列表,每個返回參數用“,”分隔,每個返回參數的語法定義如下:

         <return-type-mult-prop> :=

             <return-type> [‘[‘ <multiplicity-range> ‘]’] [‘{‘<param-prop-list> ‘}’] ]

對應中文,每個返回參數用“類型[多重性]參數屬性”這樣的格式。

<return-type>:返回類型。和輸入參數不同,返回參數沒有名稱,直接“類型”開頭;

<multiplicity-range>:多重性,表示這個參數是個集合的話,集合中每個參數最少、最多的個數;

<param-prop-list>:參數的屬性,有以下選項:

         <param-prop> ::= ‘ordered’ |‘unordered’ | ‘unique’ | ‘nonunique’ | ‘seq’ | ‘sequence’

         ‘ordered’ | ‘unordered’:表示返回的集合參數中是否是有順序的;

         ‘unique’ | ‘nonunique’:表示集合中每個參數是否是唯一的;

         ‘seq’ | ‘sequence’:這兩個選項意義相同,‘seq’ ‘sequence’的縮寫,表示參數是一個有序的“袋”(bag),既有序但不唯一。

<behavior-constraint>:行為的約束,一般是“{}”中一個約束表達式。

另外,行為的屬性“isReentrant(是否可重入)表示這個行為在執行的時候,是否可以再次被調用。

在行為的語法中,每個輸入、輸出參數既可以是單一值,也可以是一個集合。也就是一個參數的一次傳遞,可以傳遞一個值,也可以傳遞一組值。所以每個參數才有多重性、是否唯一、有序等等這個集合的屬性。

在表示行為的語法前面,可能會有表示具體行為類型的構造型,如果?活動??狀態機??交互?

MBSES(智睿思維基于模型的系統工程軟件)中,行為的參數可以通過一個彈出窗口進行定義。參數的屬性通過屬性框定義。但是也可以直接在模塊的行為分區中按照簡化的語法“名稱( 參數名稱: 參數類型) 返回參數類型”定義一個行為。

行為和模塊的關系

在前面的文章中,我們說過“模塊”有兩種有關行為的分區,“擁有行為”分區和“類目行為”分區。“擁有行為”是當前這個模塊中定義的行為,這些“擁有行為”是這個模塊的功能,這個模塊是這些行為執行時候的語境(也叫上下文,Context)。在一個行為執行的時候,除了可以使用和修改行為的輸入、輸出參數,還可以使用或改變作為上下文的這個模塊的各種屬性。例如,一個柴油發電機,具有一個“發電”的行為,在這個行為中,消耗作為輸入參數的“柴油”,輸出作為輸出參數的“交流電”,同時會發熱,改變發電機的溫度。

“類目行為”是當前這個模塊從開始工作到停止工作過程的一個行為過程描述。一般用一個狀態機來描述。例如一個設備的“開機”、“運行”、“待機”、“停機”這些狀態形成的一個設備工作過程狀態機作為設備的“類目行為”。

當一個模塊向其它模塊提供功能的時候,必須通過這個模塊的“行為特征”(BehavioralFeature)來提供,而不是直接提供行為的調用。模塊的“行為特征”有“操作”(Operation)和“接收”(Reception)兩種。但是在UML/SysML語言中,行為特征本身沒有說明行為過程的能力,它的行為過程說明必須通過一個具體的行為元素的圖形來說明。說明“操作”或“接收”具體行為過程的行為元素稱為它們的“方法”(Method),同時,這個“操作”或“接收”稱為對應行為元素的“定義”(specification)。一個行為元素也可以沒有對應的行為特征,這時候它只能被當前這個模塊的其它行為調用,不能被外部模塊調用。行為和它對應的“操作”或“接收”必須參數完全對應。

下面用一個三綜合試驗箱功能分析的例子說明“行為”的定義和應用。

首先定義一個“三綜合試驗箱”的模塊,這個試驗箱有“震動”、“加熱”、“加濕”、“冷卻”的功能,當然主要的功能還是進行“三綜合試驗”這個功能。這些功能我們都定義為它的“擁有行為”。同時定義了一個“開始三綜合試驗”的操作,這個操作的“方法”對應“三綜合試驗”行為,它們都有一個參數“試驗程序號”。當人工的方式開始試驗,或者通過遠程控制的方式調用這個操作開始試驗,則試驗箱根據“試驗程序號”參數開始對應的試驗程序。“三綜合試驗箱”模塊定義如下:

MBSE建模學習之三:系統功能--行為(Behavior)的說明的圖1

“三綜合試驗”行為的流程用一個活動圖來說明。首先根據“試驗程序號”找到對應的試驗程序。正式開始試驗前,設備要先進行預試驗步驟,把箱內溫度、濕度控制到試驗程序規定的起始條件。然后根據試驗程序中的定義,進行“震動”、“加熱”、“加濕”,“保持”一定時間,根據程序定義可能進行“冷卻”。這個過程可能是個循環過程,用一個“循環節點”來表示。活動圖如下所示:

MBSE建模學習之三:系統功能--行為(Behavior)的說明的圖2

文章來源:智睿思維MBSE

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1