金成杰,俎濤,張宏亮,段博
(1.上海中廣核工程科技有限公司,上海, 200241;2.北京火龍果網絡技術有限公司,北京, 100088)
當前,隨著系統(tǒng)的復雜性越來越高,MBSE越來越被重視。MBSE講求在整個系統(tǒng)的開發(fā)過程中以模型描述各個階段的分析設計成果,并實現(xiàn)各個階段的模型的跟蹤。一個復雜系統(tǒng)的工程實踐中,一般存在三個分析設計:業(yè)務分析設計、系統(tǒng)分析設計、軟件設計。相應的也就需要建立三個模型:業(yè)務模型、系統(tǒng)模型、軟件模型。在實際項目中,很多人都存在這樣的困惑:
這些模型都有什么內容?
這些模型有哪些可以采用的建模語言?
這些模型如何緊密銜接,實現(xiàn)需求跟蹤?
本文將引入相關的建模規(guī)范,并結合工程范例研究相關的建模方法。
當前MBSE標準的最主要的建模語言是:
SysML:系統(tǒng)工程建模語言,用于對系統(tǒng)建模。
UML:軟件工程建模語言,用于對軟件建模。
但是缺乏明確的業(yè)務建模語言規(guī)范。而SysML和UML也是面向不同的層次,實際的系統(tǒng)分析設計中,系統(tǒng)和軟件都需要建模,而且還要緊密相關。所以,即使當前采用SysML和UML建模的工程師,也存在如下困惑:
業(yè)務建模都建模什么,用什么建模語言,如何建模?
SysML建立的系統(tǒng)模型和UML建立的軟件模型如何對接?
對于非功能需求(例如:性能)如何建模?
業(yè)務模型、系統(tǒng)模型、軟件模型如何緊密銜接?
下面提供MBSE的建模解決方案:
采用UML作為基礎建模語言,根據建模的需要擴展出業(yè)務建模語言BML。
把BML和SysML建立模型映射,實現(xiàn)業(yè)務模型到系統(tǒng)模型的緊密銜接。
把SysML和UML建立模型映射,實現(xiàn)系統(tǒng)模型到軟件模型的緊密銜接。
建模者可以根據自己的建模需要,基于UML擴展特定的建模形式規(guī)范。
MBSE過程可以描述為角色、活動和模型,如圖2所示[1]:
圖2 MBSE過程中的模型
說明如下:
業(yè)務分析師進行業(yè)務分析,建立業(yè)務模型;
系統(tǒng)工程師進行系統(tǒng)分析,建立系統(tǒng)模型;
軟件工程師基于軟件分析設計、軟件開發(fā)和軟件測試,建立了軟件模型;
測試工程師基于模型對系統(tǒng)進行測試。
下面以目前正在實施的某核安保監(jiān)控系統(tǒng)為例說明MBSE工程實踐中的建模方法。
在系統(tǒng)分析之前,應梳理清楚業(yè)務。這就需要通過業(yè)務模型對業(yè)務進行清晰地描述。業(yè)務模型的構成通常如表1所示[2]。
表1 業(yè)務建模的內容
業(yè)務建模目前可以采用BPMN進行工作流建模,但是對于如上的完整業(yè)務模型并沒有對應的建模規(guī)范。而對業(yè)務模型的構成和現(xiàn)有的建模規(guī)范進行對比,可以看到UML具有描述業(yè)務模型的所有基本形式。所以可以對UML進行擴展,建立業(yè)務建模語言。
業(yè)務域是指一個業(yè)務的問題空間,是邏輯層次的,其中含有業(yè)務人員、業(yè)務對象、系統(tǒng)。業(yè)務域的含義和UML包圖中的包含義一致,所以可以用包圖建模業(yè)務域。圖3是核安保系統(tǒng)的業(yè)務域模型。
圖3 業(yè)務域模型(UML包圖)
每個業(yè)務域都存在業(yè)務角色和業(yè)務服務。業(yè)務角色就是對業(yè)務中的人的抽象,可以采用UML中用例圖中的Actor,Actor就是主要用于描述角色的抽象。業(yè)務服務本質上是一種行為,所以可以采用UML的活動圖中的Activity來描述。這樣,核安保系統(tǒng)的《業(yè)務域:訪客服務》的業(yè)務服務的模型可以描述如圖4所示。
圖4 訪客服務的業(yè)務流程(UML活動圖)
業(yè)務服務通過業(yè)務流程來實現(xiàn),業(yè)務流程的建模要體現(xiàn)出:執(zhí)行者、活動、活動之間的對象流[3]。這些要素和UML的活動圖的Partition、Activity和Object對應。所以可以采用UML的活動圖建模業(yè)務流程,核安保系統(tǒng)的《業(yè)務域:訪客服務》的《業(yè)務服務:辦理通行卡和使用》對應的業(yè)務流程圖建模如圖5所示。
圖5 通行卡辦理及使用流程(UML活動圖)
在分析了業(yè)務并建立了相應的模型后,就需要對相應的系統(tǒng)建模。系統(tǒng)建模一般需要建模如表2所示[4]。
表2 系統(tǒng)建模的內容
系統(tǒng)建模一般采用SysML進行,下面以核安保系統(tǒng)為例說明。
定義一個系統(tǒng)的構成,需要二個視圖:物理視圖和邏輯視圖。物理視圖為客觀存在的對象及其關系圖,而邏輯視圖則存在于人的頭腦中,是對物體、行為、數據、關系進行了概念抽象,以便更好地理解系統(tǒng)。對于整個系統(tǒng)的理解,常常需要把這兩個視圖對照閱讀。這就產生了一種需要—建立能夠同時描述物理和邏輯的綜合視圖,方法如下:
首先建立物理視圖,描述系統(tǒng)的實體和關系;然后建立邏輯視圖,描述事物、行為、關系等概念。再后建立一個復合視圖,把物理元素和概念進行關聯(lián)。物理視圖可以采用SysML的模塊定義圖建模[5],邏輯視圖可以采用UML圖建模。復合視圖則需要做一些擴展:因為模塊(Block)和類(Class)在外觀上很像,所以對Block定義了一個新的構造型(Physical Block),并采用了能夠表達物理特點的長方體外形,這樣,就可以清晰地區(qū)分出物理模塊和邏輯類之間的外觀。圖6是核安保系統(tǒng)構成的復合視圖[6-7]。
圖6 系統(tǒng)構成復合視圖(SysML的BDD和UML的類圖)
系統(tǒng)構成復合視圖中的元素說明如表3所示。
表3 核安保系統(tǒng)的構成的復合視圖元素說明
系統(tǒng)的功能可以采用SysML的用例圖建模,每個Actor代表一個用戶角色的抽象,每個Use Case代表一個用戶使用系統(tǒng)執(zhí)行的功能[8]。應建立用例的逐級分解機制,頂級用例也稱為最大整體用例,是指一組完全獨立的功能,可以進一步分解為更小的功能用例;而最小用例是可以獨立執(zhí)行的最小功能。圖7是核安保系統(tǒng)的保安這個角色的頂級用例模型。
圖7 保安的頂級用例模型(SysML用例圖)
系統(tǒng)可以分解為子系統(tǒng),并把功能分配到各個子系統(tǒng)上,才能夠對系統(tǒng)的功能進行最終的定義。對子系統(tǒng)的建模,主要描述其提供的功能。可以采用SysML的模塊定義圖(BDD)進行建模。模塊表示子系統(tǒng),屬性(Property)表述子系統(tǒng)具有的功能[9]。圖8是核安保系統(tǒng)的子系統(tǒng)功能定義圖。
圖8 子系統(tǒng)功能分配(SysML模塊定義圖)
在定義了子系統(tǒng)后,應該對子系統(tǒng)之間的接口進行建模,然后對接口進行詳細描述:接口的歸屬、接口的通信屬性、數據流和非功能需求[10]。圖9是描述核安保系統(tǒng)子系統(tǒng)接口的模塊定義圖(BDD)。
圖9 子系統(tǒng)接口圖(SysML模塊定義圖)
而對于子系統(tǒng)的接口交互,可以采用SysML的順序圖進行描述,圖10是核安保系統(tǒng)的接口交互建模示例。
圖1 復雜系統(tǒng)的MBSE 相關的模型和建模語言
圖10 子系統(tǒng)接口交互圖(SysML順序圖)
非功能需求包含兩個視角:用戶視角和系統(tǒng)視角。非功能需求的分析過程是從用戶視角到系統(tǒng)視角逐步細化的過程。因為涉及2個視角,所以有必要建立一個上下文圖:用SysML的用例圖描述用戶視角,用模塊定義圖(BDD)描述系統(tǒng)視角。圖11是核安保系統(tǒng)中門禁控制器的性能上下文圖。
圖11 門禁控制器的性能上下文圖(SysML的用例圖+模塊定義圖)
對于用戶視角的性能需求,描述如表4所示。
表4 門禁控制器的性能需求
對于系統(tǒng)視角的性能需求,把用例的場景分解為子系統(tǒng)和設備的交互過程,可以采用SysML的順序圖建模,圖12是門禁控制的系統(tǒng)性能分析圖。
圖12 門禁控制器的系統(tǒng)性能分析圖(SysML順序圖)
軟件設計的建模包括如下表5所示[11]。
表5 軟件設計建模的內容
下面以核安保系統(tǒng)為例,說明軟件的建模方法。
數據設計是對系統(tǒng)使用和存儲的數據進行定義,這是從概念到邏輯、再到物理的逐步落地的過程,相應的數據模型包括概念視圖、邏輯視圖和物理視圖。概念視圖只關注數據對象,不關注數據屬性。邏輯視圖則進一步關注數據對象的屬性,二者都可以采用UML類圖建模[12],圖13是核安保系統(tǒng)的邏輯數據模型簡化示例。
圖13 核安保系統(tǒng)的邏輯數據模型—部分(UML類圖)
物理視圖關注數據的存儲空間及其網絡連接??梢圆捎肬ML的部署圖建模[13],圖14是核安保系統(tǒng)的物理數據模型示例。
圖14 核安保系統(tǒng)的數據物理模型(UML部署圖)
軟件層次框架設計的目的是把問題分解為不同的層次,分別進行處理,提高開發(fā)的復用性和效率。
核安保系統(tǒng)的多個上位機子系統(tǒng)(監(jiān)控子系統(tǒng),管理子系統(tǒng),服務子系統(tǒng))具有類似的層次:
應用層:為用戶或客戶端提供應用功能;
服務層:為應用層提供服務;
業(yè)務對象層:提供數據對象及其相關的數據處理;
數據資源層:提供數據資源及其訪問服務。
層可以用包建模,其中的邏輯模塊可以采用類建模、實現(xiàn)模塊可以采用組件建模,所以完整的層次框架視圖需要結合UML的包圖、類圖和組件圖才能進行完整建模[14]。核安保系統(tǒng)的軟件層次模型如圖15所示。
圖15 核安保系統(tǒng)的軟件層次框架視圖(UML包圖+類圖+組件圖)
對于軟件處理流程分析的時候,需要描述清楚:活動由誰執(zhí)行、活動的時序和數據流。采用UML的活動圖可以充分地描述以上流程信息[15]。圖16是核安保系統(tǒng)中非常復雜的一個功能“進門檢查”的處理流程的活動圖分解示例。首先是一級活動圖,描述進門檢查功能有哪些子系統(tǒng)協(xié)作,分別執(zhí)行什么活動、傳遞什么數據。
圖16 一級軟件處理邏輯流程圖(UML活動圖)
然后對于有必要細化的活動可以建立下級流程描述,編排為可編程的基本處理單元:順序處理、判定分支處理、循環(huán)處理。圖17是“讀卡器檢查”的二級處理流程描述。
圖17
圖17 二級軟件處理邏輯流程圖(UML活動圖)
MBSE是對復雜系統(tǒng)進行分析設計的有效方法,MBSE的全周期建模涉及業(yè)務、系統(tǒng)和軟件,需要建立三個層次建模規(guī)范,各種模型視圖建立映射關系,模型才能真正成為提高系統(tǒng)分析設計能力的載體。本文通過MBSE的業(yè)務、系統(tǒng)、軟件的建模需要,基于業(yè)界公認的建模規(guī)范UML和SysML,給出了業(yè)務、系統(tǒng)和軟件的建模方法和形式標準,并采用核安保系統(tǒng)為例,給出了具體的圖例和建模方法。這些可以為MBSE實踐者提供有意義的參考。
如上的MBSE建模方法已經通過實際工程項目—核安保系統(tǒng)的實施進行了驗證,相關的工作成果得到了用戶代表和開發(fā)代表的認可,一致認為提高了分析設計的能力和效率。
另外需要注意的是:在各個行業(yè)領域的建模內容會有所不同,所以本文提出的建模方法還可以結合具體行業(yè)應用的需要進一步具體化,使其對特定的領域更有針對性,這些工作可以作為后續(xù)研究的內容。