ta_yano
@ta_yano

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

アクティビティ図の書き方

解決したいこと

組み込みなどで条件判定の無い無限ループの書き方

無限ループの条件判定の部分はどの様に書くのが一般的なのでしょうか?

最初条件判定を真にして、処理終了を下に書いたのですが
レビューで分かりづらいと指摘を受けました。

アクティビティ終了ノードを書かなければ良いのですが
アクティビティ図自体に終了が無いのは変に思い
どの様に書くのが一般的なのか教えてください。

発生している問題・エラー

該当するソースコード

@startuml
start
:初期化処理;
repeat :無限ループ開始;
:なんらかの処理;
repeat while (true) is (ループ継続)
stop
@enduml

自分で試したこと

stopを書かない

0

1Answer

割り込みや終了後の処理が一切存在しない、本物の無限ループである場合

例としてこんな感じになると思います。
普通は trueのみ、falseのみみたいな分岐(というか分岐してない)ものは記載しません。

<pre>
  ●
  │
 ┌┴┐
 │A│
 └┬┘
  ↓
  ◇←─┐
  ↓  │
 ┌┴┐ │
 │B│ │
 └┬┘ │
  │  │
  └──┘
</pre>

※AやBは処理なので本来は角丸の罫線です

※preが使えない(少なくとも私の環境ではプロポーショナル的に表示された)ようなので、ここはテキストエディタにコピペでもして見てください

実際は割り込み等によるループからの脱出を想定すべき場合

アクティビティ図はあんまり詳しくないのですが……
たぶんサブアクティビティと例外処理の記法を用いると良いんじゃないかと思います。

  1. 前述の部分をサブアクティビティとし、内部に一連の処理を記述
  2. サブアクティビティ内での例外処理として割り込み(Ctrl+C, 中断ボタン, 強制終了etc..)を記載し、そこからループ外→終了処理などへフロー

組み込み分野は全くの門外漢なんですが
現実的には一切の終了が発生しない真の無限ループとかはあんまり存在しないので
大概は何か処理が必要になるんじゃないかと思います。

何も無いなら無いで、仕様上本当に何も要らないことを明示するために
割り込み→なんの処理もなく終了ノードへ
とか私なら記載したくなります。


ただし、そういった特殊な制御は他でまとめて扱うとか上位の設計書に記載済みとかになっているかもしれないので
同じ粒度である他のアクティビティ図を参考にして記載レベルは合わせた方がよいです

1Like

Your answer might help someone💌