はじめに

今回も前回に引き続き動的構造を取り上げます。前回は動的構造の中心となる状態の話でしたが、今回は状態と同じく、動的構造を説明していく上でかかせない、イベントについて取り上げていきたいと思います。

イベントとは

イベントという言葉を聞いたことのある方は多いと思います。GUI周りのプログラムを書いたことがある方なら、マウスクリックやドラッグをプログラム上の機能と結びつけるところをこれでもかというほど書いたことと思います。

そうしたデスクトップやWeb系の世界では、イベントというと主にGUIのように画面に表示されているものに対する操作がそれにあたりますが、組込み系の世界ではこれが拡張され、システム外で起きた出来事がすべてイベントになります。例えば、気温が30度になりましたとか、荷物がベルトコンベアの端まで来ましたとか、システムの中で起きている出来事だけでなく、システムの外で起きている出来事もイベントになります。

そしてもうひとつ、馴染みが薄いかもしれませんが、時間に関係するものもイベントとなります。例えば「5秒後」や「処理Xの後に」にといったものです。こうした時間に関係したイベントのことを難しい言い方で、時相論理型イベントといいます。

組込み系のシステムはこれらのイベントの発生を検知して、それに対応する形でシステムが動作するというものがほとんどです。ちなみに、こうしたイベントに反応して動作を行うシステムのことをイベント駆動型システムといいます。

図:イベントとは

何をイベントにするのか

では、組込み系のシステムを作るとき、何をイベントとすれば良いのでしょうか。

システムの外で起きていることがイベントだとすると、現実世界で起きていることが全てイベントとなってしまいますが、それではシステムを作ることはできません。

ではどうするかというと「システムにとって関心のある出来事」をイベントとしていきます。
この「関心のある」というのが難しいところで、これは同じ出来事でもシステムによって、イベントにするのか、しないのかが変わってくるということを言っています。例えば、雨が降ってるかどうかは携帯電話のシステムにはあまり関係ないですが、ワイパーのシステムには大いに関係のある出来事です。

このことから、動的構造のモデル化では、モデル化を行う前に、そのシステムで取り扱うべきイベントは何なのかを把握しておくことが重要だということが分かります。 次回も引き続いてステートマシン図の話を取り上げていきたいと思います。