状態遷移表設計手法の概要:状態遷移表による設計手法(1)(3/3 ページ)
組み込みソフトウェアには、さまざまなイベントに対し、その時の状態に応じた処理を行わせる必要がある。そのため「状態遷移表」を用いた設計が適している。本連載では、状態遷移表による設計手法について解説していく。
状態の考え方
状態遷移系モデルの基本をお話する前に、“状態”とはどのようなものなのかということを簡単な例で説明したいと思います。
まず、テレビとリモコンをイメージしてください。リモコンの電源ボタンを押した場合、テレビの電源が「ON」の状態であれば、「OFF」になります。また逆に、電源が「OFF」の状態であれば、「ON」になります(図8)。
同じ電源ボタンを押した場合でも、その時のテレビの状態が「ON」であるか「OFF」であるかによって、“OFFになる”“ONになる”といった結果が異なります。つまり、テレビはその状態を保持しており、同一のイベントに対して、状態に応じた処理を行っているということが分かります。
状態遷移系モデルの名称
次に、状態遷移系モデルの名称を説明します。状態遷移系の名称には、「イベント」「状態」「遷移」の3つが存在しています(図9)。
イベントは、遷移をもたらす外的刺激や内的変化などを表すもので、「入力」もしくは「事象」とも表現されます。先ほどのテレビとリモコンの例で説明すると、テレビに対してリモコンの“電源ボタンを押す”ことが、テレビに対するイベントということになります。
状態は、システムの状況や特性を表すものです。先ほどのテレビとリモコンの例で説明すると、今現在テレビが“ON”であるか、“OFF”であるかが状態になります。そして、遷移は、ある状態からある状態へと移り変わることを表すもので、“OFF→ON”や“ON→OFF”のように移り変わることを示します。
状態遷移系モデルの表現
状態遷移系モデルの表現は、大きく2種類に分けられます。
1つは、さまざまなイベントによって、状態が移り変わる様子を表現した「状態遷移図」です。もう1つは、イベントと状態において、全ての組み合わせを表形式で表現した「状態遷移表」です(図10)。
状態遷移図と状態遷移表についてのそれぞれのメリットや特徴については、後ほど説明します。
状態遷移図の表記
ここでは、状態遷移図の表記を説明します(図11)。なお、UML 2.0でも「状態マシン図」が定義されていますが、ここで紹介する表記は、UML 2.0の標準化以前から状態遷移表設計手法で定義している表記なので、UML 2.0とは一部異なることをご了承ください。
まず、状態は角の丸い四角で表現します。図11では“OFFの状態”と“ONの状態”の2つが記されています。そして、遷移は矢印(→)で表現し、遷移前の状態から遷移後の状態を矢印(→)でつないで表現します。
“ON状態”から“OFF状態”への遷移と、“OFF状態”から“ON状態”への遷移の2つが記されており、その遷移を行うためのイベントを遷移線の横に記述します。ここでは“電源ボタン”というイベントが2つ記されています。
状態遷移表の表記
続いて、状態遷移表の表記を説明します(図12)。まず、状態は表の上部に記述します。図12では“OFFの状態”と“ONの状態”の2つが記されています。そして、その遷移するためのイベントを左横に記述します。ここでは“電源ボタン”というイベントが2つ記されています。
遷移は矢印(→)で表現し、遷移前の状態から遷移後の状態を矢印(→)でつないで表現します。図12では“ON状態”から“OFF状態”への遷移と“OFF状態“から“ON状態”への遷移の2つが記されています。
動作(アクション)記述について
動作(アクション)記述については、「ミーリー(Mealy)型」と「ムーア(moore)型」が存在します。ここでは、ミーリー型の表記を説明します。
ミーリー型は、イベント入力部分に“アクション”を記述する型で、イベントが入力されるとアクションを実行し、状態が遷移するという表記になります(図13)。
状態遷移表でアクションを表現すると図14の通り、遷移部分のセルに記述します。
状態遷移図と状態遷移表の特徴
状態遷移図と状態遷移表には、それぞれ特徴があります(表1)。
まず、状態遷移図は、状態の流れを表現したもので、概要を見やすく表現できるというメリットがあります。直観的に概要を把握できるため、分析効率が向上します。このことから、要求を分析する際などの“要求分析フェーズ”に適しています。
一方、状態遷移表は、全ての状態の組み合わせを表現したもので、制御の前提条件や異常ケースを含めて、その全てを網羅的に表現できるというメリットがあります。全ての組み合わせを表現するため、「モレ」「ヌケ」を発見でき、設計品質が向上します。また、状態遷移表は修正・変更が容易に行えるという優位性もあります。
状態遷移図 | 状態遷移表 | |
---|---|---|
表現概要 | 状態の流れを表現 | 全てのイベントと状態の組み合わせを表現 |
メリット | 概要を見やすく表現できる | 制御の前提条件、異常ケースを含めて全てを網羅的に表現できる |
効果 | 直観的に概要を把握できるため、分析効率が向上する | 「モレ」「ヌケ」を発見することができるため、品質が向上する |
適合プロセス | 要求分析フェーズに適している | 設計フェーズに適している |
その他の優位性 | ― | 修正・変更が容易に行える |
表1 状態遷移図と状態遷移表の特長 |
今回のまとめ
現在、組み込みソフトウェアの市場はほぼ上昇傾向にあるといえますが、設計品質の向上が課題となっています。
設計品質の向上には、モデルベース設計を行うことが有効であり、数あるモデルの中でも、状態遷移系モデルが最も多く使われています。状態遷移系モデルには、状態遷移図と状態遷移表が存在します。
状態遷移図は、直観的に概要を把握することが可能であるため、効率の良い要求分析が可能となります。また、状態遷移表は、イベントと状態を全て網羅的に表現できるため、設計の「モレ」「ヌケ」の発見・防止に効果があります。
また、状態遷移表を使用することにより、品質の良い設計が可能となります。その詳細については、次回「なぜ状態遷移表を使うと、品質の良い開発ができるのか」で紹介したいと思います。お楽しみに! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.