「シーケンス図でループ処理ってどうやって書くんだろう?」
「まさか、ループの数だけ矢印を書くわけではないよね……?」と思い、少し調べてみたところ、シーケンスの繰り返しや分岐は「複合フラグメント」という要素を用いることで記述できることがわかった。
『複合フラグメント』を使う!
そういうわけで、シーケンス図におけるループ処理と、その他分岐処理などよく書きそうなシーケンスについて、書き方を調べてみた。
loop
メッセージが繰り返し送信されることを表現する複合フラグメント。イメージとしてはfor文やwhile文。
相互作用オペレータ(右上の枠)にloop(ループ回数の最小値,ループ回数の最大値)を書く。最小値は省略可で、()内に何も書かない場合は無限ループを表す。
また、相互作用制約(フラグメントを実行する条件)を書く場合は、ループの実行条件を書く。
alt
条件によってシーケンスが変わることを表現する複合フラグメント。イメージとしてはif-elseやswitch文。
相互作用オペレータにはaltと書く。点線で条件ごとのシーケンスを区切り、相互作用制約として実行条件をそれぞれの枠に書く。
opt
ある条件が成立する場合のみメッセージを送信することを表現する複合フラグメント
。イメージとしてはelseのないif文。
相互作用オペレータにはoptと書く。相互作用制約として実行条件を書く。
ref
複雑な相互作用を複数の相互作用に分けて表現する複合フラグメント。
相互作用オペレータにはrefと書き、枠内にシーケンスを分けた相互作用の名前を書く。
まとめ
複合フラグメントを活用できると、シーケンス図で表現できる処理の幅が増える。
今回はよく使いそうなものに絞ったが、複合フラグメントは他にも種類がある(parやbrakeなど)ようなので、機会があれば調べて使えるようにしたい。
参考
『かんたん UML入門 [改訂2版] (プログラミングの教科書)』