アクティビティ図を使用したシステムの動作の記述
アクティビティ図は System Composer™ 内の図の一種で、制御されたアクティビティのシーケンスによって動的なワークフロー、プロセス、システムの動作をモデル化します。アクティビティ図を使用して、システム内でデータがどのように移動し、判定がどのように行われるかを可視化できます。アクティビティ図モデルにより、システムの内容や時間の経過に伴う動作をより深く理解できます。
ソフトウェアのアルゴリズムを設計しているとします。アクティビティ図を使用すると、コードの記述に進む前に、動的なフロー チャートのようなワークフローの明確な視覚的表現を作成できます。それぞれのステップと判定をマッピングすることで、利害関係者がロジックを理解し、エッジ ケースを識別して、設計フェーズの初期段階であいまいな部分を特定するのに役立ちます。ワークフローの各部に要件を関連付けて、実装がそれらの要件を満たすかどうかをテストできます。たとえば、システム アーキテクチャが定義されたロボット コントローラーのコードを作成する場合、特定のコントローラー コンポーネントをアクティビティ図に割り当てることができます。このようにすることで、要件とアーキテクチャをリンクし、開発プロセス全体でトレーサビリティを向上させることができます。
アクティビティ図は、さまざまな種類のプロセスやワークフローのモデル化に使用できます。次に例を示します。
商品をカートに追加する、支払いを承認する、注文を行うなど、ショッピングのプロセスをモデル化する。
離陸、操縦、着陸など、UAV ミッションのワークフローをテストする。
従業員のオンボーディングなどの業務プロセスを解析し、改善の余地を特定して対応する。
基本的なアクティビティ図モデルには、フローの線で接続されたピンをもつアクション ノードが含まれています。次のアクティビティ図は、値を読み取り、値が 5 以上の場合にのみ処理を行う簡単なアルゴリズムを示しています。
アクティビティ図の作成に関連する概念は次のとおりです。
"トークン" は、アクティビティ図内を流れるオブジェクトです。構造体や整数などのデータを表すトークンと、単に制御を渡すだけのトークンがあります。オブジェクト トークンは、データの一部などのオブジェクトを表します。制御トークンは、データをもたない制御またはトリガー イベントを表します。
"フロー" は、アクティビティ図では 2 つのノードを接続します。破線は制御フローを表します。実線はオブジェクト フローを表します。オブジェクト フローのトークンには、アクションの対象となるトークン データが含まれます。オブジェクト フローを使用して入力トークンまたは出力トークンの経路を指定することにより、オブジェクト ノード間で情報や物理項目を伝達できます。制御フローのトークンは、アクションの実行をトリガーします。制御フローを使用して Action Node 間の制御の移行をモデル化できます。
"アクション ノード" は、アクティビティ図の主要な基本構成です。アクション ノードは、実行するアクションを表します。アクション ノードは、ピンで入力トークンを使用し、ピンで出力トークンを生成します。アクション ノードの動作の記述には、MATLAB® 関数または入れ子になったアクティビティ図を使用します。
"制御ノード" は、システムにおけるトークンの論理的なフローの経路を指定します。制御ノードと制御フローを使用してトークンの経路を指定します。制御ノードは、トークンのフローの初期化、分岐、合流、終了に使用できます。
アクティビティの制御ノードにはさまざまなタイプがあります。
Initial Node — アクティビティの開始点で制御トークンをディスパッチします。
Decision or Merge Node — デシジョン ノードは、入力トークンをガード式の評価に基づいて出力フローに経路指定します。マージ ノードは、複数の入力フローからのトークンを単一の出力フローに経路指定します。マージ デシジョン ノードは、複数の入力フローからのトークンをガード式の評価に基づいて特定の出力フローに経路指定します。
Join or Fork Node — ジョイン ノードは、各入力ピンでトークンが利用可能な場合に、複数の入力トークンを 1 つの出力フローに統合します。フォーク ノードは、各出力フローに 1 つの入力トークンを複製します。
Flow Final Node — アクティビティ全体ではなく、1 つのオブジェクト フローまたは制御フローを終了します。
Activity Final Node — 入力トークンとアクティビティ全体を終了します。
"ピン" は、オブジェクト トークンのバッファーとして機能し、アクション ノードに出入りするトークンを経路指定します。ピンの方向性により、入力であるか出力であるかが表されます。ピンはオブジェクト フローで接続できます。ピンは、Action Node に出入りするオブジェクト トークンの経路指定に使用します。また、ピンは、実行前または実行中のオブジェクト トークンの格納場所としても使用されます。ピンはオブジェクト フローに対してのみ使用できます。
"タイプ" は、ピンを流れるトークンの内容を定義します。タイプには、次元、単位、実数/複素数、最小値、最大値、および説明があります。値タイプ トークンは、単一の値に割り当てられるタイプです。複合タイプ トークンは、さまざまな値やデータ型のフィールドを含むバス構造に相当します。MATLAB クラス タイプのトークンは、プロパティとメソッドをもつ複合オブジェクトを定義するパス上の MATLAB クラスを参照します。組み込みの MATLAB クラスを使用することも、独自の MATLAB クラスを定義することもできます。
"パラメーター ノード" は、入れ子になったアクティビティ図に出入りするトークンの経路を指定します。ピンを作成すると、入れ子になったアクティビティ内に対応するパラメーター ノードが作成されます。パラメーター ノードは、入れ子になったアクティビティに対するトークンの出入りを定義するために使用します。パラメーター ノードには入力と出力の 2 種類があります。
新しいアクティビティ図の作成
System Composer のスタート ページを起動してアクティビティ図を作成します。MATLAB コマンド ウィンドウで次のコマンドを入力します。
systemcomposer
ダイアログ ボックスが開いたら、[アクティビティ図] を選択します。

あるいは、systemcomposer.createActivity 関数を使用して新しいアクティビティ図を作成することもできます。
アクティビティ図の作成、シミュレーション、可視化
アクティビティ図は System Composer のアーキテクチャ モデルと統合されています。システムを設計するときに、システムを概念化してアクションや判定のフローを可視化するためにアクティビティ図を使用できます。アクティビティ図は、システムの要素の相互作用を理解するのに役立ちます。System Composer では、システムの動作を検証するためにアクティビティ図をシミュレーションして可視化することもできます。
| トピック | 説明 |
|---|---|
| Author a Simple Activity Diagram | アクティビティ図を対話形式で作成および編集し、用語を学習する。 |
| Simulate, Visualize, and Validate Activity Diagrams | システムの動作を検証するためにアクティビティ図をシミュレーションして可視化する。 |
ヒント
System Composer の概念をシステムズ エンジニアリング設計に適用する方法の詳細については、System Composer Conceptsを参照してください。
参考
関数
systemcomposer.createActivity|addNode|addParameter|getNode|getNodes|getFlow|connect|getParameter|getParameters|getPin|getPins|addPin|getParentPin|applyStereotype|removeStereotype|getStereotype|destroy|setBehaviorType
オブジェクト
systemcomposer.activity.Action|systemcomposer.activity.Activity|systemcomposer.activity.ActivityNode|systemcomposer.activity.ActivityFinal|systemcomposer.activity.ControlNode|systemcomposer.activity.Flow|systemcomposer.activity.FlowFinal|systemcomposer.activity.Model|systemcomposer.activity.JoinFork|systemcomposer.activity.Initial|systemcomposer.activity.MergeDecision|systemcomposer.activity.Parameter|systemcomposer.activity.Pin
ツール
ブロック
- Initial Node | Action Node | Pin | Parameter Node | Decision or Merge Node | Join or Fork Node | Flow Final Node | Activity Final Node