SysML v2 文本符號的權威指南
系統建模語言版本 2(SysML v2)標誌著系統工程的一次巨大轉變。透過擺脫 SysML v1 中僵化的、基於 UML 的圖形約束,SysML v2 引入了以語言為導向的文本語法。這種語法將結構、行為、需求和分析視為深度整合的文本元素。
本全面指南透過一個具體的自主無人機設計範例,剖析 SysML v2 的核心支柱、概念與語法。

1. 核心範式:定義與使用
SysML v2 中最重要的架構概念,是明確區分定義(藍圖)與使用(上下文實例)。
-
其中
def關鍵字:表示可重用的定義、類型或元件藍圖。它在被使用之前並不存在於物理實體中。 -
沒有
def關鍵字:表示使用。它代表特定父系統內的實際出現或元件實例。
// 定義:任何電池的可重用藍圖
part def Battery;
// 使用:我們無人機系統內特定的電池實例
part powerSource : Battery;
這種區分使工程師能夠僅定義一次元件,並在多個子系統中重複使用,這些子系統具有不同的名稱、組態和內部連接。
2. 結構架構:零件、項目與介面
SysML v2 將實體或邏輯架構劃分為元件、流經它們的物件,以及連接它們的介面。
零件與項目
-
part def(Block / 元件):定義一個結構性、實體性或邏輯性的系統元件。 -
item def(流動項目): 定義非固定元件——例如資料流、流體、力量或電力——在零件之間流動。
介面與埠
-
埠定義(介面規格): 定義介面邊界,明確指出哪些資料或項目可以進入(in)或離開(out).
以下是這些元件在系統命名空間中宣告與嵌套的方式:

package DroneSystemExample {
private import ScalarValues::*;
private import SI::*;
// 基礎藍圖(定義)
item def Power;
port def PowerOutPort {
out item powerElec : Power;
}
port def PowerInPort {
in item powerElec : Power;
}
part def FlightController;
part def PropulsionSystem;
part def Battery;
// 整合系統環境
part def AutonomousDrone {
// 屬性 / 值屬性
attribute enduranceActual : Real;
// 子元件使用(實例化定義)
part flightController : FlightController;
part propulsionSystem : PropulsionSystem;
part powerSource : Battery;
// 埠使用(實例化介面)
port pBatteryOut : PowerOutPort;
port pPropulsionIn : PowerInPort;
}
}
3. 要求支柱(問題空間)
在 SysML v1 中,需求通常是與工程數學分離的文字區塊。在 SysML v2 中,需求是 一等文字定義 包含元資料、描述性文字,以及強型別屬性,以支援自動驗證。
requirement def RangeRequirement {
doc /* 遙控飛機必須維持至少 45 分鐘的連續飛行續航力。 */
attribute enduranceTarget : Real = 45.0;
}

可追溯性透過 滿足
為了在問題空間(需求)與解決方案空間(結構)之間建立閉環,SysML v2 使用明確的關係關鍵字,例如 滿足 直接內嵌於元件環境中:
part def AutonomousDrone {
// 實例化需求使用,以乾淨地滿足定義對應
滿足需求 : RangeRequirement;
}

4. 行為支柱(執行空間)
SysML v1 強制將結構(內部區塊圖)與行為(活動圖)之間劃分得非常清楚。SysML v2 完全消除了這道障礙,透過將 動作與控制流程成為原生、在範圍內的結構元素.
順序動作與控制流程
使用 動作關鍵字,您可以宣告接受輸入(in) 並傳遞輸出(out)。控制流程使用 then關鍵字線性書寫,無需複雜的控制流程圖。
動作 executeMission {
in targetCoordinates;
out missionStatus;
動作 sTakeoff;
then 動作 sNavigate;
then 動作 sLand;
}
5. 功能分配:將行為連結至結構
分配 回答系統工程的根本問題: 哪個組件執行哪個功能?
SysML v2 使用 perform關鍵字在零件使用區塊中處理此問題。使用 點表示法(.),您可以深入嵌套的動作迴圈,將操作直接對應至實體硬體。
零件定義 AutonomousDrone {
// 子零件透過明確「執行」其分配的步驟來分配行為
零件 flightController : FlightController {
執行 executeMission.sNavigate;
}
零件 propulsionSystem : PropulsionSystem {
執行 executeMission.sTakeoff;
}
// 內嵌行為定義
動作 executeMission {
動作 sTakeoff;
then 動作 sNavigate;
then 動作 sLand;
}
}

核心關鍵字摘要
| 關鍵字 | 空間 | 用途 |
|---|---|---|
package |
結構 | 定義一個容器命名空間,用於組織您的模型。 |
private import |
結構 | 引入外部標準程式庫(例如 標量值或國際單位制單位)納入範圍,而不會使其向下游洩漏。 |
定義 |
範式 | 表示可重複使用的藍圖或類型定義。 |
零件 / 項目 |
結構 | 宣告一個物理/邏輯元件,或流經系統的流體/資料流。 |
埠 |
結構 | 建立一個介面邊界,定義輸入和輸出流。 |
需求 |
問題 | 定義一個包含類型屬性和數學目標的文字合約。 |
滿足 |
關係 | 直接將結構元件連接到其所滿足的需求。 |
動作 |
執行 | 定義一個行為步驟或操作功能。 |
然後 |
執行 | 強制在動作之間按順序執行。 |
執行 |
分配 | 將行為動作直接映射到負責執行它的物理部分。 |
SysML V2 的完整範例:三大支柱

套件 飛行器系統範例 {
私有 匯入 數值類型::*;
私有 匯入 SI::*;
// ==========================================
// 基礎藍圖定義
// ==========================================
項目 定義 電力;
埠 定義 電力輸出埠 {
輸出 項目 電力輸出 : 電力;
}
埠 定義 電力輸入埠 {
輸入 項目 powerElec : 電力;
}
部分 定義 飛行控制器;
部分 定義 推進系統;
部分 定義 電池;
// ==========================================
// 1. 需求支柱(問題空間)
// ==========================================
需求 定義 範圍需求 {
文件 /* 遙控飛機必須維持至少45分鐘的連續飛行續航力。 */
屬性 續航目標 : 實數 = 45.0;
}
// ==========================================
// 2. 結構與行為支柱
// ==========================================
部分 定義 自主無人機 {
屬性 enduranceActual : 實數;
// 子部件透過明確地「執行」其分配的步驟來分配行為
部件 flightController : FlightController {
執行 executeMission.sNavigate;
}
部件 propulsionSystem : PropulsionSystem {
執行 executeMission.sTakeoff;
}
部件 powerSource : 電池;
// 接口連接
埠 pBatteryOut : PowerOutPort;
埠 pPropulsionIn : PowerInPort;
// FIX 1:實例化一個需求使用,以乾淨地滿足定義映射
滿足 需求 : 範圍需求;
// ==========================================
// 3. 行為支柱(執行空間)
// ==========================================
// 清晰、順序的動作定義,原生在作用域內
動作 executeMission {
在 targetCoordinates;
out missionStatus;
action sTakeoff;
then action sNavigate;
then action sLand;
}
}
}














