UTI UML教育研究所
トップページ> 読み物> コラム> はじめるUML 第10回
はじめるUML(全12回)
  はじめてみよう!
  モデル要素の整理整頓
  システム全体の構造(1)
  システム全体の構造(2)
  システム全体の構造(3)
  システム化対象の業務(1)
  システム化対象の業務(2)
  システムの動き(1)
  システムの動き(2)
  状態の移り変わり
  OCUPにチャレンジ!
  UML2.0総括(最終回)
続はじめるUML(全10回)
  使ってみよう!
  UMLによる業務分析
  営業職のOCUP受験体験記
  UMLによる要求分析
  インターメディエイト受験体験記
  UMLによるシステム分析
  アドバンスト受験体験記
  UMLによるシステム設計
  情報システム管理者が利用するUML
  続はじめるUML総括
使えるUML(全10回)
  使いこなしてみよう!
  物事を分けてとらえる
  コンポーネント図のいくつかの表現方法
  枠組みを使用してとらえる
  内容とその表現方法をわける
  パターンの表現
  続・パターンの表現
  モデルのモデル
  あいまいさを排除する
  「どのように(How)」から「何を(What)」へ
  大人のオブジェクト指向(最終回)
資格取得までのステップ
FAQ
教育コンテンツ
キャンペーン
ブックプラス
パートナープログラム
認定ユーザープログラム
メールマガジン登録
お問合わせ
はじめるUML 第10回
2006.12.1 掲載
状態の移り変わりを把握しよう!
今回は、OMGのUML仕様書「UML2.0 Superstructure Specification」の中から、ステートマシン図(第15章State Machines)を取り上げます。
ステートマシン図は、UML1.x ではステートチャート図と呼ばれていました。一つのクラスに着目し、そのオブジェクトの生成から破棄までの状態の移り変わりを明確にします。特にオブジェクトの状態によって、その振る舞いに違いがあるものについて記述すると良いでしょう。
UML2.0では大幅な改善が加えられ、表現力が向上しています。状態について詳しく分析・設計を行なう必要があるシステム、例えば組込みシステムなどでも、さらに本格的に利用することができるようになりました。

具体的には主に次の点が変更されています。

変更点
概要
「入場点」「退場点」の追加 コンポジット状態やサブマシン状態の入退場が明確になった。
「ステートマシン図の再定義」の追加 継承はオブジェクト指向の重要な要素のひとつ。ステートマシン図にもこの考え方が取り入れられ、サブクラスのステートマシン図をスーパークラスのステートマシン図の差分で記述できるようになった。
「プロトコルステートマシン図」の追加 コンポーネントのインターフェースなどの操作手順をステートマシン図で記述するための記法。
メタモデルの大幅な改良 モデリングやMDAのツールおよび手法の開発者の助けとなり、より一層便利なものを利用できるようになることが期待できる。

このうち、最も利用する機会が多いと思われる「入場点・退場点の追加」について、例を踏まえて見ていきましょう。

◇例題について
例題は、前回のタイミング図の回で取り上げた「電動シャッター」を制御するオブジェクトです。

  • 部外者が開閉操作を行なうことができないように、ロックができる。
  • ロックを解除するのは、鍵やパスワード、指紋認証などを使用する。
  • 開閉操作中に故障を知らせるセンサーが反応すると稼動を中止する。
  • 故障の修理が完了すると、第一に通路を確保するために、全開になる。

◇入場点・退場点の追加
ステートマシン図の要素である「コンポジット状態」は、オブジェクトの状態の入れ子です。電動シャッターはロックを解除しなければシャッターを開けたり、下ろしたりすることができません。このことから、電動シャッターを制御するオブジェクトには、「ロック中」状態や「操作可能」状態などがあり、「操作可能」状態の中には、入れ子の状態として「待機中」や「開放中」などの状態が考えられます。
コンポジット状態と似たものにサブマシン状態があります。コンポジット状態の内容を、別のダイアグラムに記述し、それを参照するためのものです。複雑な入れ子の状態遷移が登場するシステムでは、サブマシン状態を利用して、ステートマシン図を整理することができます。UML2.0ではサブマシン状態の表記が変更されています。
UML1.x のコンポジット状態やサブマシン状態は、他の状態から遷移されるときに、内部のどの状態から途中開始できるのか、また、内部のどの状態から途中退場できるのかを記述することができませんでした。作成したステートマシン図が、後から作成されるステートマシン図から参照される場合に、作成者の意図に反して利用されないという保障がなかったのです。
UML2.0では入場点・退場点をコンポジット状態やサブマシン状態に定義することで、内部状態への入退場を明確にすることができます。電動シャッターの「操作可能」ステートマシン図の通常の遷移は、「認証が完了する」イベントから開始されて「待機中」状態になり、「ロックする」イベントが発生すると終了します。この遷移以外では、「開放中」状態と「下ろし中」状態で「異状が発生する」イベントが発生したときのみ退場することができ、「復帰する」イベントからの遷移は「開放中」状態から開始されることが明確になっています。

◇まとめ
ステートマシン図は、ひとつのクラスに着目して、状態の移り変わりを把握するのに適していることを説明しました。ステートマシン図だけではなく、他のダイアグラムと組み合わせて利用することにより、個々のオブジェクトの状態と、複数のオブジェクトによる相互作用を対応付けることができます。UML2.0で新たに追加されたタイミング図や機能強化された相互作用図によって、これをより一層明確に表現できるでしょう。

次回は、これまでの内容を生かして「OCUPにチャレンジしよう!」をお送りします。


■筆者紹介
照井 康真/Koma Terui
株式会社テクノロジックアート テクニカルデプト システムコンサルタント

パターンウィーバー(PatternWeaver) ver2.0

  • UML2.0 Superstructureの全てのダイアグラムに対応
  • Eclipse3.0にプラグインとして統合
  • 表現力の大幅な向上
  • 新規プラグインの追加

●商品に関するお問い合わせ
株式会社テクノロジックアート  
e-mail : pw@tech-arts.co.jp
http://pw.tech-arts.co.jp/pw/index.html