astah*

Japanese | English
Home チュートリアル astah* SysML チュートリアル

astah* SysMLチュートリアル

Eメール 印刷

Object Management Group (OMGR)によって策定されたSysML1.3仕様書に掲載されたサンプルの一部を課題として、ブロック定義図、内部ブロック定義図、パラメトリック図、要求図をastah* SysMLで描きながら、astah* SysMLの基本的な操作方法を身につけられます。ユースケース図、アクティビティ図、シーケンス図、状態遷移図の例もあります。


はじめに

システムモデリングツールastah* SysMLの基本的な操作方法をチュートリアル形式で易しく説明します。ぜひ実際に手を動かし、SysMLの各図を描きながら読み進めてください。

  1. システムモデリングツール astah* SysMLとは
  2. astah* SysMLのインストール
  3. astah* の画面構成と基本操作
  4. SysML1.2仕様書に掲載されたサンプルの概要
  5. ブロック定義図を描いてみる
  6. 内部ブロック図を描いてみる
  7. パラメトリック図を描いてみる
  8. ユースケース図を描いてみる
  9. 要求図を描いてみる
  10. アクティビティ図を描いてみる
  11. シーケンス図を描いてみる
  12. ステートマシン図を描いてみる
  13. astah* その他の機能

1. システムモデリングツール astah* SysMLとは

astah* SysMLは、システムモデリング言語SysMLでの分析・設計を支援するシステム設計ツールです。SysMLの各ダイアグラムを一つのツールで描画・作成でき、要求分析からシステム設計まで、様々なシーンで利用できます。

astah*シリーズとして「その場で使える直感的なGUIによって、ツール初心者でも各図をきれいにスイスイ描ける」などの特徴を活かし、導入後すぐに活用できます。

特徴:

  • SysMLの各図をサポート(要求図、ブロック定義図、内部ブロック図、パラメトリック図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図)
  • その場で使える直感的で分かりやすいGUIによって、インストール後すぐにスラスラと描けます
  • 要求収集に利用できるマインドマップを標準搭載。発想を描くマインドマップと連携することで、アイディアをトピックとして各図の要素とリンク可能

その他の特徴については、astah* SysMLの製品情報をご参照ください。

 


 

2. astah* SysMLのインストール

早速、astah* SysMLをインストールしましょう。(システム要件)

 


 

3. 画面構成と基本操作

まず、astah* SysMLの画面構成と基本操作を説明します。

Astah SysML overview

  • マネジメントビュー
    astah* のベースとなるビューです。メニューバーとツールバーを持ちます。
  • ダイアグラムエディタ
    図を表示、編集するビューです。図のアイテム作成用のツールボタン群(ツールパレット)を持ちます。複数の図を開いた場合は、上部のタブでアクティブなエディタを切り替えます。
  • 構造ツリー
    パッケージやクラスなどの入れ子構造をツリー形式で表示します。ポップアップメニューでパッケージや図、クラスなどの要素を追加・削除可能です。
  • 継承ツリー
    選択中のクラスやインタフェースの親や子をツリー形式で表示します。
  • マップビュー
    アクティブな図の全体を表示します。大きめの図の編集時にその全体を見渡すために利用します。 マウス操作により表示範囲を変更できます。
  • プロパティビュー
    選択されたアイテムの属性を編集するビューです。

新規プロジェクトを作成する

astah* SysMLでは、SysMLのデータをプロジェクトというxxx.asml ファイルに保存します。 起動後は何もプロジェクトを開いていませんので、まず新規のプロジェクトを作成します。 【ファイル】メニューの【プロジェクトの新規作成】を選択します。構造ツリーとプロパティビューが表示されます。

パッケージや図の作成

新規のパッケージは、主に構造ツリー上のポップアップメニューから追加します。 新しい図は、構造ツリー上のポップアップメニューから、または【図】メニューから選択して作成します。

アイテムの作成と編集

図を描くための基本的な操作方法は、一般的なドローイングソフトでの操作方法とそれほど変わりません。 ドローイングソフトに慣れている場合は、どんどん編集を進めてみてください。

 

4. SysML1.2仕様書に掲載されたサンプルの概要

サンプルは、SysMLを用いてハイブリッドSUV車の要件設計・分析を示すものです。 このチュートリアルは、あくまでツールを使ってastah*とSysMLに慣れることを目的とする為、掲載されたサンプルを一部抜粋しています。 それではSysML図を描き始めましょう。

 

5. ブロック定義図を描いてみる

次のブロック定義図を描いていきましょう。

Astah SysML Block Definition Diagram1

メインメニュー【図】-【ブロック定義図】 または構造ツリーでプロジェクトを右クリックして表示されるポップアップメニュー【図の追加】-【ブロック定義図の追加】を選択すると、ダイアグラムエディタが表示されます。

astah sysml_create_block_definition_dgm_from_diagram_menu astah sysml_create_block_definition_dgm_from_tree_popup_menu

ダイアグラムエディタには、開いた図を編集する為のツールボタンが並んでいます。

astah sysml_block_definition_dgm_tool_bar

各ボタンが何のためのボタンかは、マウスポインタをボタン上に止めると表示されるツールチップで確認できます。 これらのアイコンとツールチップは、SysMLの要素名と表記を覚えるのに有効です。

まず、[Automotive Value Types]パッケージと全バリュータイプを作成しましょう。パッケージは、ツールバーの左から2番目にあるパッケージボタンを押して、図上をクリックして作成します。続けてパッケージの名前に"Automotive Value Types"と入力してEnterを押します。

Tips: パッケージ名の本体表示

[Automotive Value Types]パッケージのコンテキストメニューからパッケージ名を本体に表示します。

astah sysml_block_definition_dgm_block_show_package_name_body

 

次にバリュータイプと[Automotive Units]パッケージを作成します。ツールバー上でバリュータイプボタンを押して、作成した[Automotive Value Types]パッケージをクリックします。すると、バリュータイプが [Automotive Value Types]パッケージ内に作成されます。 バリュータイプの名前に"Accel"と入力してEnterを押します。"Accel"バリュータイプの作成後、他の5つのバリュータイプを描いてください。同様に、ツールバー上でパッケージボタンを押して、作成した[Automotive Value Types]パッケージをクリックします。すると、パッケージが [Automotive Value Types]パッケージ内に作成されます。 パッケージの名前に"Automotive Units"と入力してEnterを押します。

図上の各アイテムは、ドラッグで移動可能です。 バリュータイプなどの名前を再編集したい場合は、名前の部分を2回クリックすることで、編集可能です。

さて、次にバリュータイプ間の継承を引きましょう。

継承のツールボタンを押し、継承作成モードにします。 継承を作成する場合は、2箇所クリックします。"Accel"バリュータイプをクリック後、"Real"バリュータイプをクリックしてください。 継承が引けました。同様に、他のバリュータイプ間の継承を作成してください。

全ユニットを作成してみてください。 ユニットの作成方法はバリュータイプと同様です。

さて、次にユニットに量種別を設定しましょう。

構造ツリーで[Automotive Value Types]パッケージを右クリックして表示されるポップアップメニュー【モデルの追加】-【量種別の追加】を選択すると、量種別が[Automotive Value Types]パッケージ下に作成されます。続けて量種別の名前を入力してEnterを押します。

今度は、ユニットのプロパティビューから量種別を設定してみましょう。ユニットを選択すると プロパティビューが次のようになりますので量種別を設定しましょう。

astah sysml_block_definition_dgm_unit_propertyview_quantitykind

ここまで、SUV車の設計に必要なバリュータイプとユニットを定義しました。これから次のようなブロック定義図でSUV車におけるPowerSubSystemの燃料供給システムを定義しましょう。

astah sysml_block_definition_dgm_block_flowProperty

PowerSubsystem Fuel Flow Definition”ブロック定義図を格納するHSUVをまず作成しましょう!

構造ツリーでプロジェクトを右クリックして表示されるポップアップメニュー【モデルの追加】-【ブロックの追加】を選択すると、ブロックがプロジェクト下に作成されます。続けてブロックの名前として”HSUV”を入力してEnterを押します。

“ブロック図をプロジェクトに追加します。 構造ツリー上で”HSUV”ブロックのポップアップメニューから、【図の追加】-【ブロック定義図の追加】を選択します。図名を”PowerSubsystem Fuel Flow Definition”とします。図が追加され、その図がダイアグラムエディタで表示されます。

さて、ブロックを描いてから細かいところを描きましょう。全てのブロックを作成してみてください。ブロックのツールボタンを押して、作成した[PowerSubsystem Fuel Flow Definition]ブロック定義図内をクリックするとブロックを配置できます。

全てのブロックを作成後は、各ブロック間に関連を作成しましょう。関連のツールボタンを押し、関連作成モードにします。 関連を作成する場合は、2箇所クリックします。"PowerSubsystem"ブロックをクリック後、"FuelTankAssembly"ブロックをクリックして"ください。 関連が引けました。同様に、"PowerSubsystem"ブロックと、"InternalCombustionEngine"ブロック間の関連を作成してください。

 

関連の端点に関するプロパティ設定

関連には、コンポジションや関連端名などそれぞれの端点に関するプロパティがあります。 ここでは"PowerSubsystem"ブロック側の端点にコンポジションを設定します。 今までと違う編集方法を使いますので、注意してください。

  • 方法1 :関連の端点に関するポップアップメニューで設定
  • 方法2 :関連のプロパティビューにおけるロールタブから設定
  • 方法3 :コンポジションのツールボタンから設定

方法1で、コンポジションをポップアップメニューから設定してみましょう。

astah sysml_block_definition_dgm_association_composite_popup

 

関連のポップアップメニューの表示位置で動作が変わります。 図のように関連の"PowerSubsystem"ブロック側でポップアップメニューを表示するとその端点に関する編集が可能です。

今度は、関連端名を、方法②のプロパティビューから設定してみましょう。"FuelTankAssembly"と”PowerSyvStsttem”ブロック間の関連線を選択して、プロパティビューの[関連端B]タブの”名前”から関連端名を設定しましょう。

astah sysml_block_definition_dgm_association_end_name_propertyview

 

関連端タブが二つの端点に対応して二つあるので、注意が必要です。 今は、ターゲットが"FuelTankAssembly"となっている方(関連端B)のタブで関連端名をftと設定します。

同様に、InternalCombustionEngine側の関連端名も”ice”と設定します。

後はブロックのフロープロパティの追加です。

 

ブロックのフロープロパティの追加

"FuelTankAssembly"ブロックに二つのフロープロパティを追加しましょう。追加するには、次の四つの方法があります。

  • 方法1:図上のポップアップメニューから追加
  • 方法2:図上のブロックのフロープロパティ区画のドロー・サジェストから追加
    Tips: ドロー・サジェスト機能

    ダイアグラムエディタ上で編集をサポートします。ツールバーやポップアップメニューを経由せず、アイコンのホバー表示からモデルを編集できます。図上でモデルを選択すると、そのモデルから作成・追加できるモデルがアイコン表示されます。

    astah sysml_block_definition_dgm_flowproperty_draw_suggest

  • 方法3:ブロックのプロパティビューにおけるフロープロパティタブから追加
  • 方法4:構造ツリーのブロックのポップアップメニューから追加

では、方法1で追加してみましょう。図上で"FuelTankAssembly"ブロックのポップアップメニューを表示し、【要素の追加】- 【フロープロパティの追加】 を選択します。 その後、フロープロパティ名として”fuelSupply”と入力します。 フロープロパティの削除はプロパティビューまたは構造ツリーから行います。方向はinがデフォルトです。ここでは"fuelSupply"フロープロパティのプロパティビューから方向をoutに変更します。

astah sysml_block_definition_dgm_flowproperty_propertyview_direction

さらに"fuelSupply"フロープロパティのプロパティビューから型を"Fuel"ブロックに変更します。

astah sysml_block_definition_dgm_flowproperty_propertyview_type

後はブロックにポートを追加します。

 

ブロックのポートの追加

ポートのツールボタンを押して、作成した[FuelTankAssembly]ブロックをクリックするとポートをブロック上に配置できます。

ポートのプロパティビュー[ベース]タブからポート名を"FuelTankFitting"に変更します。

さらにプロパティビューから型を"FuelFlow"ブロックに設定します。SysML1.2の仕様によって、"FuelFlow"ブロックは双方向のフロープロパティを保有しているため、”FuelTankFitting”上に双方向の矢印が表示されます。

 

ブロックのバリュープロパティの追加

"Fuel"ブロックに二つのバリュープロパティを追加しましょう。フロープロパティと同様、追加するには、次の四つの方法があります。

  • 方法1:図上のポップアップメニューから追加
  • 方法2:図上のブロックのバリュープロパティ区画のドロー・サジェストから追加
  • 方法3:ブロックのプロパティビューにおけるバリュープロパティタブから追加
  • 方法4:構造ツリーのブロックのポップアップメニューから追加

では、方法1で追加してみましょう。図上で"Fuel"ブロックのポップアップメニューを表示し、【要素の追加】- 【バリューの追加】 を選択します。その後、バリュープロパティ名として”temperature”と入力します。 バリュープロパティの削除はプロパティビューまたは構造ツリーから行います。"temperature"バリュープロパティのプロパティビューから型をを"Temp"バリュータイプに変更します。

あとは、"InternalCombustionEngine"ブロック上にICEFuelFittingを追加すれば、目的の図の完成です。

Tips: 関係作成途中のキャンセル

例えば、予定外のアイテムをクリックしてしまった場合など、関連作成途中でやり直したくなった場合は、 ESCキーまたは、マウスを右クリックすると始めの状態に戻ります。 関連以外の汎化や実現、依存など二つのアイテム間の関係線を編集する場合でも、操作方法は関連と同様です。

編集しながら気付いたと思いますが、作成したブロックやユニットは、構造ツリー上にも追加されています。 また、左下のプロパティビューには、図上やツリー上で選択したアイテムのプロパティが表示されます。 SysMLのデータをダイアグラムエディタ上や、構造ツリー上、そしてプロパティビュー上などから編集可能になっています。 場面に応じて、使いやすい編集方法を選択しましょう。

 

Tips: アイテム削除時の注意点

図上に追加したブロックやユースケースを削除するには、 ポップアップメニューから【図から削除】または【モデルから削除】を実行します。 削除メニューが二つあるのは、そのブロックやユースケースを、 モデルを共有したまま他の図にも配置できるためです。

  • 【図から削除】 : 現在の図上からのみ削除されます。モデルは削除されません。
  • 【モデルから削除】 : モデルが削除されます。そのアイテムが全図から削除されます。

 

Tips:ズームとスクロール

一つ目の図が描けたところで、表示に関する操作を確認しておきましょう。 今描いた図は小さいのであまり必要性はありませんが、 大きな図を描く場合は、表示領域を変えながら編集する必要があります。 astah* では、ダイアグラムエディタ上での右ドラッグで、図を描いた紙をドラッグできます。 斜め方向の移動も簡単です。
図の拡大・縮小は【表示】メニューまたはツールバーから行います。 図の表示に関しては、マップビューからも操作可能です。

 

Tips:UndoとRedo

astahは、しっかりしたUndo(編集の取り消し)・Redo(編集のやり直し)機構を持っていて、 100回前の編集まで取り消すことが可能です。 この回数はシステムプロパティから変更する事もできます。 (【ツール】-【システムプロパティ】-【その他】)
試しにマネジメントウィンドウの【Undo(編集の取り消し)】ボタンを押しっぱなしにしてみてください。 その後、【Redo(編集のやり直し)】ボタンで元の状態に戻ります。操作の間違いを恐れなくてもよさそうですね。

 

Tips:アイテムの連続作成
  • 方法1:ツールパレットの右から四番目のロックボタンでモードをロックする方法
  • 方法2:Shiftキーを押しながら描く方法
アイテムの連続作成は、慣れると非常に便利ですので、ぜひ習得しましょう

 

Tips:複数選択

図上でアイテムを複数選択するには、選択モードにおいて以下の方法があります。

  • 方法1:図上でのドラッグによる矩形領域での選択
  • 方法2:図上のポップアップメニューからの【全選択】
  • 方法2:Shiftキーを押したまま選択していくことによる追加選択

 

Tips:線のスタイル

線には四つのスタイルがあります。

  • 通常線 : 特別な制約なし。斜め方向の線を含めた自由な折れ線。
  • 直角線 : 水平方向または垂直方向の制約あり。折れ線は直角のみ。
  • 曲線
  • 直角曲線

 

6.内部ブロック図を描いてみる

次に"PowerSubsystem"ブロックについて内部構造を描いてみましょう。内部ブロック図をプロジェクトに追加します。 ブロック定義図上で”PowerSubsystem”ブロックのポップアップメニューから、【内部ブロック図の追加】を選択します。 内部ブロック図が追加され、その図がダイアグラムエディタで表示されます。コンポジション関連で接続されてる"FuelTankAssembly"ブロックなどは、パートとして配置されます。"ft"などの関連端名は、パート名となります。

astah sysml_block_definition_dgm_block_add_internal_block_definition

それでは、次の内部ブロック図を描きましょう。

astah sysml_internal_block_dgm

 

パートの追加

全パートを作成してみてください。パートのツールボタンを押して、作成した内部ブロック図エディタをクリックすると、[パートの追加]ダイアログが表示されます。パートを新規作成するので、了解を押してください。パートを配置できます。 続けて":"の前の部分にパート名として"epc"を入力し、":"の後の部分にパートの型として"ElectricalPowerController"を入力します。

astah sysml_internal_block_dgm_part_name_type_modification

"ElectricalPowerController"ブロックがプロジェクトに存在しないため、”ブロックになるElectricalPowerControllerを新規作成しますか”と質問されますので、"はい"ボタンを押します。構造ツリー上に"ElectricalPowerController"ブロックが作成されたことが確認できます。

リサイズ

図要素名が1行表示では長い場合、パートのサイズを変更して折り返してみましょう。 サイズ変更は、アイテムの外枠を選択後、四隅に表示されるノブをドラッグします。

astah sysml_internal_block_dgm_part_resize

残り3つのパートを作成しましょう。

 

ドラッグによる外部パートの追加

構造ツリーでプロジェクトを右クリックして表示されるポップアップメニュー【モデルの追加】-【ブロックの追加】を選択して、"BrakePadel"ブロックを新規作成します。

"BrakePadel"ブロックを内部ブロック図上にドロップするとパートの種類について質問されますが、ここで外部パートを選択します。図上でパート名をダブルクリックしてパートの編集方法と同様に、パート名を"bkp"に設定します。構造ツリーで複数のブロックを選択し、一度に図にドラッグすることも可能です。

 

ポートの追加

"epc:ElectricalPowerController"パートに"I_IEPC"ポートを追加します。

ブロック図上のポートの追加方法と同様、ポートのツールボタンを押して、作成した"epc:ElectricalPowerController"パートをクリックするとポートをパート上に配置できます。

ポートのプロパティビュー[ベース]タブからポート名を"I_IEPC"に変更します。すべてのポートをパート上に追加してみてください。

 

アイテムフローの追加

アイテムフローのツールボタンを押し、アイテムフロー作成モードにします。 アイテムフローを作成する場合は、2箇所クリックします。先にクリックされたポートは、アイテムフローの源となります。

"ElectricalPowerController"ブロックのポートをクリック後、"ElectricMotorGenerator"ブロックのポートをクリックしてください。"ElectricalPowerController"ブロックのポートから、"ElectricMotorGenerator"ブロックのポートへのアイテムフローが引けました。同様に、逆方向のアイテムフローを作成してください。

 

Conveyの追加

作成したアイテムフローにConveyを追加してみましょう。アイテムフローのプロパティビューからConveyを追加できます。

【追加】ボタンでConveyとなるブロックを追加します。ここでは、"ElectricCurrent"ブロックを選択します。【削除】ボタンは、選択されているConveyを削除します。

astah sysml_internal_block_dgm_item_flow_convey_add_property

 

インターフェースの追加

"epc:ElectricalPowerController"パートの"I_IEPC"ポートに提供インターフェースと要求インターフェースを追加しましょう。次の三つの方法があります。

  • 方法1:図上のポートポップアップメニューにおける、【要求インターフェースの追加】と【提供インターフェースの追加】から追加
  • 方法2:ポートのプロパティビューにおける要求インターフェースタブと提供インターフェースタブから追加
  • 方法3:要求インターフェースツールボタンと提供インターフェースツールボタンから追加

図上で"epc:ElectricalPowerController"パートの"I_IEPC"ポートのポップアップメニューを表示し、【要求インターフェースの追加】を選択します。 その後、インターフェース名として”I_IEPCData”と入力します。

 

ドラッグによるインターフェースの追加

次は、"I_IEPCCmd"インターフェースを要求インターフェースとして"epc:PowerControlUnit"パートの"I_IEPC"ポートに接続します。

要素間のモデル関連によって、”I_IEPCCmd”インターフェースを構造ツリーから内部ブロック図上にドロップすると、"epc:ElectricalPowerController"パートの"I_IEPC"ポートに提供インターフェースとして接続し、"epc:PowerControlUnit"パートの"I_IEPC"ポートに要求インターフェースとして接続します。提供インターフェースと要求インターフェース間を右クリックし、ポップアップメニューから分離します。

astah sysml_internal_block_dgm_required_interface_dnd_create

 

Tips:アイテム削除時の注意点

図上に追加したブロックなどのアイテムを削除するには、 ポップアップメニューから【図から削除】または【モデルから削除】を実行します。 削除メニューが二つあるのは、そのブロックを、 モデルを共有したまま他の図にも配置できるためです。

【図から削除】 : 現在の図上からのみ削除されます。モデル自体は削除されません。

【モデルから削除】 : モデルが削除されます。そのアイテムが全図から削除されます。

 

Tips:ブロックの内部ブロック図を開く

ブロックの内部ブロック図を開くには、以下の方法があります。

  • 方法1:構造ツリーでのブロックの配下にある内部ブロック図の選択
  • 方法2:図上のブロックのポップアップメニューからの【内部ブロック図を開く】

 

Tips:パートのネスト表現

パートをネストするには、まず親となるパートを作成します。(型名を持たないパートはネストを作れません)

次に、下のいずれかの方法で、子パートを追加します。

  • 方法1:ツールパレットから[パート]ボタンを選択し、図上の親パート内を直接クリックして、子パートを追加します。
  • 方法2:ツールパレットから[パート]ボタンを選択し、図上をクリックして、子となるパートを作成します。その後、子となるパートを親パート内にドラッグ&ドロップします。
  •  

    7.パラメトリック図を描いてみる

    次のパラメトリック図を描きましょう。"PowerSubsystem Fuel Flow Definition"ブロック定義図上で”PowerSubsystem”ブロックのポップアップメニューから、【パラメトリック図の追加】を選択します。 パラメトリック図が追加され、その図がダイアグラムエディタで表示されます。

    astah sysml_parametric_diagram

    さて、今まで描いてきた内部ブロックとは結構見た目が似てますね。

    パラメトリック図は、制限された内部ブロック図です。そのため、パラメトリック図の作成は、内部ブロック図の作成方法と同様です。さらに、制約プロパティを、内部ブロック図のパートと、制約パラメータをポートとを見直しながら作成できます。ただし、制約プロパティの型は、制約ブロックに制限されています。

    内部ブロック図の作成を思い出してください。"fuelflow:FuelFlow"制約プロパティと全制約パラメータを描いてみましょう。

     

    制約プロパティの制約の追加

    制約プロパティは、型となる制約ブロックの制約を表示します。

    "parametricDomain"パッケージにあるFuelFlow制約ブロックを構造ツリー上から選択します。そのプロパティビューにおける制約タブから制約を追加し、制約の編集区域に"flowrate=press/(4*injectorDemand)"を入力します。

    astah sysml_parametric_diagram_constraint_property_add_constraint

     

    バリュープロパティの追加

    さて、次に"ice.fi.fuelDemand"バリュープロパティを作成しましょう。バリュープロパティのツールボタンを押し、バリュープロパティ作成モードにします。 図上をクリックすると[バリューの追加]ダイアログが表示されます。デフォルトは、"パート階層上のブロックからValueを選択する"になっています。"Ice:InternalCombustionEngine"パートの配下を展開し、パート階層上の"fi:FuelDemand"パートの"fuelDemand:Real"を選択し、了解を押します。

    astah sysml_parametric_diagram_value_property_hierachy_structure

    astah sysml_parametric_diagram_value_property_create_dialog

    "ice.fi.fuelDemand"バリュープロパティが作成できました。他のバリュープロパティを作成してください。

     

    制約パラメータの追加

    制約パラメータのツールボタンを押して、作成した[fuelflow : FuelFlow]制約プロパティをクリックすると制約パラメータを制約プロパティ上に配置できます。制約パラメータ名を"injectorDemand"に変更します。

     

    バイディングコネクタの追加

    バイディングコネクタで、バリュープロパティと制約パラメータをつないでいきましょう。バイディングコネクタのツールボタンを押し、バイディングコネクタ作成モードにします。 バイディングコネクタを作成する場合は、2箇所クリックします。"ice.fi.fuelDemand"バリュープロパティをクリックして、"injectorDemand:Real"制約パラメータをクリックします。。"ice.fi.fuelDemand"バリュープロパティと、"injectorDemand:Real"制約パラメータをバイディングコネクタでつないました。"ice.fi.fuelFlowRate"バリュープロパティと、"flowrate:Real"制約パラメータをバイディングコネクタでつないでください。

     

    8.ユースケース図を描いてみる

    次のようなユースケース図を描きましょう。

    astah sysml_usecase_dgm

    ユースケース図をプロジェクトに追加します。 構造ツリー上で”parametricDomain”パッケージのポップアップメニューから、【ユースケース図の追加】を選択します。 ユースケース図が追加され、その図がダイアグラムエディタで表示されます。

    astah sysml_usecase_dgm_create_from_structure_tree

    アクターのボタンを押して、図上をクリックするとアクターを配置できます。 続けてアクターの名前である"Driver"と入力してEnterを押します。6つのユースケースも同様に作成しましょう。

    さて、次にアクターとユースケース間の線を引きましょう。 線にはいくつかの種類がありますが、ここでは関連です。関連のツールボタンを押し、関連作成モードにします。 関連を作成する場合は、2箇所クリックします。 "Driver"アクターをクリック後、"Park"ユースケースをクリックしてください。 関連が引けました。同様に、他の関連を作成してください。

    ユースケース間の線は包含と拡張です。関連の作成方法と同様になるので、すべての包含と拡張を作成してみてください。

     

    9.要求図を描いてみる

    astah sysml_requirment_diagram

    次は要求図です。"HSUV"に関する要求とテストケースを整理しましょう。

    要求図を"HSUVRequirements"パッケージに追加します。 構造ツリー上で”HSUVRequirements”パッケージのポップアップメニューから、【図の追加】-【要求図の追加】を選択します。 要求図が追加され、その図がダイアグラムエディタで表示されます。 まず矢印線以外の要求とテストケースを作成していきましょう。 作成方法は、ブロックの作成方法と同様で、 それぞれのモードにして作成したい位置をクリックするだけです。

     

    ドラッグによるユースケースの作成

    ユースケースは、要求図のツールバーから作成することができませんが、既存のユースケースを要求図にドロップ&ドロップで描画できます。"Accelerate"ユースケースを構造ツリーから、要求図上にドラッグ&ドロップします。

     

    ドラッグによるブロックの作成

    同様に、ブロックも要求図のツールバーからは作成できませんが、既存のブロックを要求図にドラッグ&ドロップで描画できます。"PowerSubsystem"ブロックを要求図上にドラッグ&ドロップします。

    さて、要求間の関連を表す導出で"Acceleration"要求と"Power"要求をつなぎましょう。 導出のツールボタンを押し、導出作成モードにします。 導出を作成する場合は、2箇所クリックします。 "Power"要求をクリック後、""Acceleration"要求をクリックしてください。 導出が引けました。同様に、他の導出や洗練、トレースを作成してください。

    10.アクティビティ図を描いてみる

    次に"PowerSubsystem"ブロックについて処理の流れを描いてみましょう。 アクティビティ図を"PowerSubsystem"ブロックに追加します。 構造ツリー上で”PowerSubsystem”ブロックのポップアップメニューから、【図の追加】-【アクティビティ図の追加】-【新規アクティビティ図の追加】を選択します。 アクティビティ図が追加され、ダイアグラムエディタで表示されます。

    astah sysml_activity_diagram_create_from_tree

    アクティビティ図の名前を変更しておきましょう。構造ツリー、又はアクティビティ図のプロパティビューから"PowerSubsystem Activities"という名前に変更します。

    それでは、次のアクティビティ図を描きましょう。

    astah sysml_activity_diagram

    アクティビティ図は、フローチャート図に近い図で動作の流れを表現しますので、分かりやすいですね。

    まず全ての縦パーティンションを作成していきましょう。縦パーティンションのボタンを押して、図上をクリックすると縦パーティンションを配置できます。

    パーティンションの名前を変更しておきましょう。 "pcu:PowerControlUnit"という名前にします。次に、右側の"Ice:InternalCombustionEngine"パーティンションを作成しましょう。作成方法は、"pcu:PowerControlUnit"パーティションと同様で、"pcu:PowerControlUnit"パーティションの右側をクリックすると作成できます。更に"epc:ElectricalPowerController"パーティションも作成してください。

    ここから、矢印線以外のアクション状態とパラメータノードを作成していきましょう。 作成方法は、ブロックやユースケースと同様で、 それぞれのモードにして配置したい位置をクリックするだけです。 パラメータノードに設定するブロック(ベースブロック)は、図上で編集するかプロパティビューで編集します。

    さて、次に入力ピンを作成しましょう。作成方法は、ポートと制約パラメータの作成方法と同様で、 入力ピンツールボタンを選択して、作成したいアクション状態をクリックするだけです。

    最後に、動作の流れを表す矢印で各アイテムをつないでいきましょう。この矢印は遷移です。 接続する二箇所をクリックしますが、今度はクリックする順序が違うと向きが逆になりますから注意します。

    11.シーケンス図を描いてみる

    次はシーケンス図です。 "HSUV"ブロックの発進・停車操作を中心とした処理の流れを描いてみましょう。アクティビティ図と同様で、シーケンス図も、構造ツリーにおいてユースケースの下や、ブロックの下に追加することができます。 "HSUV"ブロックのポップアップメニューを表示し、【図の追加】-【シーケンス図の追加】を選択してください。

    astah sysml_sequence_diagram_create_from_tree

    アクティビティ図でも似たような処理の流れを描けますが、シーケンス図ではオブジェクト間のメッセージのやり取りを時系列で表現しています。

    ドラッグによるオブジェクトの作成

    astah sysml_sequence_dgm_dnd_lifeline_create

    “ElectricalPowerCrontoller”ブロックを構造ツリーからドロップするとオブジェクトの名前が編集状態になります。ここでは特にオブジェクトを区別しませんので省略しています。この場合BackSpaseキーで名前を空にしてEnterを押します。構造ツリーで複数のブロックを選択し、一度に図にドラッグすることも可能です。

    次にメッセージを作成していきます。 サンプル図を見ると、フレームから"PowerControlUnit"オブジェクトへのメッセージは、非同期メッセージになっています。ツールパレットの左から4番目のボタンで、非同期メッセージ作成モードにしましょう。後は、フレーム上をクリックし、さらに"PowerControl"のライフライン上をクリックすれば、メッセージの矢印が引かれます。メッセージ0という名前を2回クリックして"Enable"に変更しましょう。今度は同期メッセージです。これは、"PowerControlUnit"オブジェクトから"ElectricalPowerController"オブジェクトへメッセージを送付しています。ツールパレットの左から3番目のボタンで同期メッセージ作成モードにしましょう。先ほどは、フレーム上の点をクリックしてメッセージを作成しましたが、今度は活性区間上をクリックするように注意してください。ツールパレットの左から7番目のボタンで、同期メッセージの"ready"Replyメッセージを作成しましょう。1点目も2点目も活性区間上をクリックしましょう。

    相互作用の利用の作成

    最後に相互作用の利用を作成しましょう。相互作用の利用のツールボタンを選択して相互作用の利用の作成モードにします。相互作用の利用となる長方形の左上の位置をマウスの左ボタンで選択し、左ボタンを放さずに"PowerControlUnit"ライフラインと"ElectricalPowerController"ライフラインを選択します。選択されたライフラインはハイライトされたはずです。マウスの左ボタンをリリースすると、相互作用の利用が作成され、名前が編集状態になります。"Park/ShutdownVehicle"を入力しましょう。

    astah sysml_sequence_dgm_create_interaction_use

    相互作用の利用が参照するシーケンス図を作成するには、次の三つの方法があります。

    • 方法1:図上の相互作用の利用のポートポップアップメニューにおける、【シーケンス図を作成する】から追加
    • 方法2:図上の相互作用の利用をダブルクリックすることで追加
    • 方法3:相互作用の利用のプロパティビューにおける参照先の新規作成ボタンから追加

    12.ステートマシン図を描いてみる

    このステートマシン図は、SUV運転操作に関する状態を描いたものです。

    astah sysml_statemachine_diagram

    まず矢印線以外の状態を作成していきましょう。 作成方法は、ブロックやユースケースと同様で、 それぞれのモードにして作成したい位置をクリックするだけです。

    さて、状態の遷移を表す矢印で各状態をつないでいきましょう。この矢印は遷移です。 接続する二箇所をクリックしますが、今度はクリックする順序が違うと向きが逆になりますから注意します。"start"などの名前は、遷移のトリガーにあたります。遷移の矢印をクリックして選択し、 プロパティビューで、トリガーの欄に遷移のトリガー名を入力しましょう。

    astah sysml_statemachine_diagram_property_view_trigger_item

    13. その他のastah* の機能

    astah*はこの記事で使った機能以外にも、以下の機能を持っています。今後の編集で利用してみてください。

    さいごに

    ここでは、皆さんと一緒にシステムモデリングツール astah* SysML を使っていくつかの図を描いてきました。 astah* で基本的なSysMLダイアグラムを描く ことができるようになったのではないでしょうか? 皆さんのSysMLとastah* SysMLについての理解がこの記事により、少しでも深まったなら幸いです。

    最後にastah* 開発者の1人である筆者から、皆さんにお願いがあります。 astah* SysMLは、ユーザの皆さんからの声を受けながら、手に馴染むツールへ向け日々改善されています。ぜひ要望やコメントなどをメール、又はコミュニティサイト経由でお寄せください。