SysML v2テキスト記法の決定版ガイド
システムモデリング言語バージョン2(SysML v2)は、システム工学における大きな転換を示す。SysML v1の厳格なUMLベースのグラフィカル制約から離れることで、SysML v2は言語駆動型のテキスト構文この構文は、構造、振る舞い、要件、分析を深く統合されたテキスト要素として扱う。
この包括的なガイドは、具体的なAutonomousDrone設計例を用いて、SysML v2のコアとなる柱、概念、構文を解説する。

1. コアパラダイム:定義と使用の違い
SysML v2における最も重要なアーキテクチャ的コンセプトは、定義(ブループリント)と使用(文脈的なインスタンス)の明確な分離である。
-
その
defキーワード:再利用可能な定義、型、または要素のブループリントを示す。使用されるまで物理的なオブジェクトとして存在しない。 -
ない
defキーワード:使用を示す。特定の親システム内の実際の発生またはコンポーネントインスタンスを表す。
// 定義:任意のバッテリー用の再利用可能なブループリント
part def Battery;
// 使用:ドローンシステム内の特定のバッテリーインスタンス
part powerSource : Battery;
この違いにより、エンジニアはコンポーネントを一度定義し、異なる名前、構成、内部接続を持つ複数のサブシステムで再利用できる。
2. 構造的アーキテクチャ:パーツ、アイテム、ポート
SysML v2は、物理的または論理的なアーキテクチャを、コンポーネント、それらを通過するもの、およびそれらを接続するインターフェースに分類する。
パーツとアイテム
-
part def(ブロック/コンポーネント):構造的、物理的、または論理的なシステムコンポーネントを定義する。 -
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;
}

トレーサビリティは satisfy
問題空間(要件)と解決空間(構造)の間の閉ループを閉じるために、SysML v2は明示的な関係キーワードを用い、satisfy を部品コンテキスト内に直接使用する:
part def AutonomousDrone {
// 要件の使用をインスタンス化して、定義のマッピングを明確に満足させる
satisfy requirement : RangeRequirement;
}

4. 挙動の柱(実行空間)
SysML v1では、構造(内部ブロック図)と挙動(アクティビティ図)の間に明確な分離が強制されていた。SysML v2では、アクションと制御フローをネイティブで、スコープ内構造要素として扱うことで、この障壁を完全に取り除く。.
順次アクションと制御フロー
を使用してactionキーワードを使用すると、入力を受け取る関数を宣言できます(in) そして出力を渡す(out). コントロールフローは、線形に記述され、 thenキーワードを使用することで、複雑なコントロールフローダイアグラムの必要性がなくなります。
action executeMission {
in targetCoordinates;
out missionStatus;
action sTakeoff;
then action sNavigate;
then action sLand;
}
5. 機能割当:振る舞いと構造の接続
割当 基本的なシステム工学の問いに答える: どのコンポーネントがどの機能を実行するか?
SysML v2 は、この問題を明快に処理するために performキーワードを部品使用ブロック内で使用します。 ドット表記(.)を使用することで、ネストされたアクションループの深部にまでアクセスし、操作を物理的なハードウェアに直接マッピングできます。
part def AutonomousDrone {
// サブパーツは、割り当てられたステップを明示的に「実行」することで振る舞いを割り当てる
part flightController : FlightController {
perform executeMission.sNavigate;
}
part propulsionSystem : PropulsionSystem {
perform executeMission.sTakeoff;
}
// 埋め込み振る舞い定義
action executeMission {
action sTakeoff;
then action sNavigate;
then action sLand;
}
}

主要キーワードの概要
| キーワード | 空間 | 目的 |
|---|---|---|
package |
構造的 | モデルを整理するためのコンテナ名前空間を定義します。 |
private import |
構造的 | 外部の標準ライブラリ(例: スカラ値またはSI単位単位)をスコープ内に導入するが、下流に漏らさない。 |
定義 |
パラダイム | 再利用可能なブループリントまたは型定義を示す。 |
部品 / 項目 |
構造的 | 物理的/論理的なコンポーネント、またはシステム内を流れている流体/データストリームを宣言する。 |
ポート |
構造的 | インターフェース境界を設定し、以下を定義する。入力および出力のフロー。 |
要件 |
問題 | 型付き属性と数学的目標を含むテキストベースの契約を定義する。 |
満たす |
関係 | 構造的要素を、それが満たす要件に直接接続する。 |
アクション |
実行 | 行動ステップまたは操作機能を定義する。 |
次に |
実行 | アクション間の実行順序を順次実行することを強制します。 |
実行 |
割当 | 行動的なアクションを、それを実行する責任を持つ物理的部分に直接マッピングします。 |
SysML V2の完全な例:三本の柱

パッケージドローンシステム例 {
プライベート インポート スカラー値::*;
プライベート インポート SI::*;
// ==========================================
// 基本のブループリント定義
// ==========================================
アイテム 定義 力;
ポート 定義 力出力ポート {
出力 アイテム 電力 : 力;
}
ポート 定義 力入力ポート {
入力 アイテム powerElec : パワー;
}
部品 定義 フライトコントローラ;
部品 定義 推進システム;
部品 定義 バッテリー;
// ==========================================
// 1. 要件の柱(問題空間)
// ==========================================
要件 定義 範囲要件 {
ドキュメント /* ドローンは少なくとも45分間の連続飛行持続時間を維持しなければならない。 */
属性 持続時間目標 : 実数 = 45.0;
}
// ==========================================
// 2. 構造と行動の柱
// ==========================================
部品 定義 自律型ドローン {
属性 耐久性Actual : 実数;
// サブパーツは、割り当てられたステップを明示的に「実行」することによって振る舞いを割り当てる
パーツ フライトコントローラ : フライトコントローラ {
実行 executeMission.sNavigate;
}
パーツ 推進システム : 推進システム {
実行 executeMission.sTakeoff;
}
パーツ 電源 : バッテリー;
// インターフェース接続
ポート pBatteryOut : 電力出力ポート;
ポート pPropulsionIn : 電力入力ポート;
// フィックス1: 定義マッピングを明確に満たすために要件使用をインスタンス化する
満たす 要件 : 範囲要件;
// ==========================================
// 3. 振る舞いの柱(実行空間)
// ==========================================
// 明確で順次的なアクション定義はネイティブにスコープ内
アクション executeMission {
in targetCoordinates;
out missionStatus;
action sTakeoff;
then action sNavigate;
then action sLand;
}
}
}














