Posted at

[状態マシン図] 直交合成状態

More than 5 years have passed since last update.

状態は内部に領域を1つ以上持つことができる。以下の図で、状態2は領域を1つ持っていて、その領域には開始疑似状態があり、状態3から始まる。状態2にいるときには、状態3か状態4のどちらかの状態を取る。そのことを状態3 or 状態4という。状態3と状態4はどちらか一方しか取ることができないという意味で、このことを OR状態という。状態3 or 状態4である。

orth341.png

次の図では、状態2には2つの領域があり、状態2に遷移すると、2つの領域が同時並行して動作するようになる。直交合成状態と言い、2つの領域が直交している、という。

状態1からイベント2で状態2に遷移したときは、上側の領域は、状態3から始まり、下側の領域は、状態5から始まる。その状態を、状態3 and 状態5の状態という。つまり、状態3かつ状態5の状態であり、このことをAND状態という。

orth342.png

上の図と同じことを、直交状態を使わずに表現したのが次の図である。状態2は、状態3and5の状態から始まる。そこからイベント4が起きると、状態4and5の状態に遷移する。

上の図は、状態2の内部に、領域が2つあって、上の領域は2つ、下の領域は3つの状態を持っている。下の図は、状態2の内部に、領域が1つあって、状態が2x3=6つの状態がある。

このように、直交状態の複数の領域を1つの領域になおすと、それぞれの領域が持つ状態のかけ算だけ、状態があることがわかる。またこういうことも言える。上の図の状態マシンをテストする場合は、下の図のすべてを遷移するテストを書く必要がある、ということである。直交する領域が増えれば増えるほど、描くのは 簡単だが、テストがたいへんになる、ともいえる。

orth343.png

状態の外から、状態の中の領域の中の状態に直接遷移することもできる。下の図で、状態1にいるときに、イベント4がおきると、状態4に遷移する。そのときは、下の領域は、開始疑似状態から始まって、状態5になる。つまり、イベント4が起きると、状態2の、状態4and5から始まる。

入ることができれば、出ることもできる。下の図で、状態7にいるときに、イベント1が起きると、状態1に遷移する。そのとき上の領域は、状態3にいても、状態4にいても、状態2を退場して、状態1に遷移する。

orth344.png

このことを、直交状態を使わない図で描くと以下のようになる。合っているかどうか確かめてほしい。

orth345.png