Otepipiです。本日はテキストベースでUMLを作成することができるツールPlantUMLを利用してSysMLのブロック定義図を書いていきたいと思います。
PlantUMLの概要
PlantUMLはプログラミング言語のようにプレーンテキストからダイアグラムを生成するツールです。
普通の描画ソフトと比較した利点は
- プレーンテキストなのでコピー&ペーストで再利用が用意
- オブジェクトの配置は自動でやってくれるので配置について考えなくても良い
- テキストベースなので修正が容易
- テキストなので差分管理が容易
などがあります。あくまでUMLを描画するものであり、SysMLには対応していません。ただガントチャートなどその他のダイアグラムも一部対応しています。
詳細は下記PlantUMLの本家WEBサイトでご確認ください。
またPlantUMLでSysMLを作図するにあたっては下の記事を大いに参考にさせていただいています。
qiita.com
ブロック定義図
今回練習するブロック定義図の題材として下記サイトの電光掲示板の論理構成構造をトレースさせていただきました。
https://www.ogis-ri.co.jp/otc/hiroba/technical/SysEngSysML/SysEngSysML3.htmlwww.ogis-ri.co.jp
PlantUMLで作成したブロック定義図
PlantUMLを利用してブロック定義図を作成したところ下記のようになりました。トレース元とほぼ一致していることがわかります。
この時のコードは下記になります。
@startuml hide circle hide empty members package "bdd 論理構成階層構造" <<Frame>> { class 電光掲示板 <<block >> class 通信ユニット <<block >> class グラフィック生成ユニット <<block >> class ドット列情報 <<data Type>> class 表示器制御ユニット <<block >> class フォント <<data Type >> class グラフィックジェネレータ <<block >> class スクロール制御 <<block >> class 表示コントローラ <<block >> class "Matrix LED" <<block >> } 電光掲示板 *-- 通信ユニット 電光掲示板 *-- グラフィック生成ユニット 電光掲示板 *-- ドット列情報 電光掲示板 *-- 表示器制御ユニット グラフィック生成ユニット *-- フォント グラフィック生成ユニット *-- グラフィックジェネレータ グラフィック生成ユニット *-- スクロール制御 表示器制御ユニット *-- 表示コントローラ 表示器制御ユニット *-- "Matrix LED" @enduml
またskinparam monochrome true
を追加することで図を白黒にすることができます。これでよりトレース元に近づけたかもしれません。
@startuml skinparam monochrome true hide circle hide empty members package "bdd 論理構成階層構造" <<Frame>> { class 電光掲示板 <<block >> class 通信ユニット <<block >> class グラフィック生成ユニット <<block >> class ドット列情報 <<data Type>> class 表示器制御ユニット <<block >> class フォント <<data Type >> class グラフィックジェネレータ <<block >> class スクロール制御 <<block >> class 表示コントローラ <<block >> class "Matrix LED" <<block >> } 電光掲示板 *-- 通信ユニット 電光掲示板 *-- グラフィック生成ユニット 電光掲示板 *-- ドット列情報 電光掲示板 *-- 表示器制御ユニット グラフィック生成ユニット *-- フォント グラフィック生成ユニット *-- グラフィックジェネレータ グラフィック生成ユニット *-- スクロール制御 表示器制御ユニット *-- 表示コントローラ 表示器制御ユニット *-- "Matrix LED" @enduml
PlantUMLはdraw.io等描画ソフトでUMLを書くよりかも早く快適にダイアグラムが生成できそうです。本格的なモデリングソフトと比べるとどうかわかりませんが、PlantUMLはフリーソフトという強みがありますね。ブロック定義図以外の他の図に関しても挑戦していきたいと思います。
本日はここまでです。