タイムイング図とは何ですか?
A タイムイング図は、特定の行動的UML図は、線形タイムラインに沿って状態の正確な持続時間およびその状態が変化する正確な条件を可視化することを目的としています。統合モデル化言語(UML)仕様の重要な一部として、この特定のUML図タイプはハードタイム制約、クロックサイクル、波形信号に重点を置きます。波形またはステップラインを追跡して、外部のトリガーが状態を変化させる前に、オブジェクトが特定の状態にどのくらいの期間保持されるかを正確に示します。
タイムイングマップは、組み込みシステムエンジニア、ネットワークプロトコル開発者、ハードウェアアーキテクトが、レースコンディションをモデル化したり、スレッドのライフサイクルの変化を追跡したり、ハードウェアレジスタの遷移をマッピングするために広く使用されています。VPasCodeを使用すれば、ピクセル幅を手動で計算したり、タイムラインの座標をマッピングしたりする必要がありません。私たちのレンダリングエンジンは、プレーンテキストスクリプトに基づいて、すべての時間グリッドを自動的に処理します。
コア構文ガイド:要素と構造
PlantUMLで正確で標準準拠のUMLタイムイング図を設計するには、参加者タイプ、状態定義、時間間隔、同期制約を習得する必要があります。
1. 参加者の宣言(ロバスト vs. コンパクト)
システムに必要な詳細度に応じて、2つの異なる視覚スタイルを使ってタイムラインをモデル化できます。明示的なキーワードを使用して宣言する必要があります:
- ロバストタイムライン:状態を明確に分離された積み重ねられた行として表示します。高レベルのソフトウェアプロセスに適しています。
robust "アプリケーションスレッド" as Thread - コンパクトタイムライン:状態を単一の平らな線に沿って表示し、変化を示すために斜線のブロックを使用します。コンパクトなハードウェア信号マップに最適です。
concise "CPUレジスタ" as Reg
2. 状態遷移と時間ステップの定義
他の図とは異なり、時間のチェックポイントを宣言することで状態を変更します。@記号を使用し、参加者を参照し、isキーワードを使用します。スペースや特殊文字を含む状態名は、引用符で囲む必要があります:
@0
Thread is Idle
@10
Thread is "データ処理中"
3. クロック信号の生成
2値ハードウェアクロックをシミュレートするには、次の「clock」キーワードを使用してください。サイクル周期、オプションのデューティーサイクル、および内部名を指定する必要があります:
clock "System Clock" as CLK with period 2
4. 精度制約とタイムスケジュールの追加
厳格な実行デッドライン(たとえば、システム遷移が指定された期間内に行われるよう保証するなど)を記録するには、次の「<->」構文を使用して、説明ラベル付きの2つの時間座標を結びつけてください:
@10 <-> @40 : {30ms未満}
クリーンなタイミングレイアウトのためのベストプラクティス
- 時間単位を統一する:PlantUMLはタイムラインの整数を一般的な順次ステップとして扱います。プロジェクトに統一された時間単位(例:タップ、マイクロ秒、秒)を選択し、一貫して維持してください。
- 複雑な遷移にはラベルを使用する:状態割り当ての直後にコロンを追加することで、状態変化に直接テキストメッセージを付加できます(例:
@10nReg is Reading : "割り込みをトリガー"). - 宣言の順序を戦略的に配置する:PlantUMLはライフラインを、スクリプトで宣言された順序通りに垂直に積み重ねます。常にマスタクロックを最も上部に配置して、整列を容易にしてください。
実世界のPlantUMLタイミング図の例
例1:マイコンのキャッシュとレジスタ状態(簡潔かつクロック波形)
この実行可能なブループリントは、標準のシステムクロックと、ハードウェア状態を追跡する簡潔なデータストレージレジスタを併用する、古典的な組み込みハードウェアエンジニアリングのタイムラインを示しています。
@startuml
clock "System Clock (CLK)" as clk with period 2
concise "Data Bus Register" as Reg
@0
Reg is Empty
@2
Reg is Reading : "Fetch"
@6
Reg is Writing
@10
Reg is Locked
@14
Reg is Empty
@enduml 
構文の分解:「clock」ディレクティブは、リズミカルなハイ/ローの方形波を自動的に生成します。Reg 行は絶対タイムライングリッド上で複数の状態割り当てを順次処理します。コロン(例:)で終わるテキスト文字列は、遷移境界線の直上に整然とした呼び出しとして表示されます。: "Fetch") は遷移境界線の直上に整然とした呼び出しとして表示されます。
例2:非同期Webコンシューマーのトークン更新(強固なマルチスレッド制約)
この高度で完全に機能するソフトウェアアーキテクチャのブループリントは、強固なレイアウト形式を活用して、マルチスレッドWebアプリケーションのワークフローを追跡し、Webクライアントと認証ワーカーの間の正確なタイムラインデッドラインをマッピングしています。
@startuml
robust "Webブラウザクライアント" as Web
robust "認証トークンワーカー" as Auth
@0
Webはアイドル状態
Authはスリープ状態
@5
Webはトークン待機中
Authは検証中
@15
Authは生成中
@15 <-> @25 : {生成期間}
@25
Authはスリープ状態
Webはページレンダリング中
@40
Webはアイドル状態
@enduml 
構文の分解: 以下のrobust宣言を使用することで、各個別のライフライン行において、状態がY軸上に明確にリストアップされます。時間評価制約(@15 <-> @25 : {生成期間}) はタイムライングリッドの上部に標準的な両側寸法矢印を描画し、厳格な運用制限を示しています。