ロボコンで学ぶUMLモデリングETロボコン2009、挑戦記(4)

気が付くと地区大会がすぐそこまで迫っています。今回はETロボコンの主要審査項目の1つである、UMLモデルの描き方をまとめました。

» 2009年07月16日 00時00分 公開
[上口翔子,@IT MONOist]

 説明会から含めるとほぼ通年で行われているETロボコンですが、参加者の皆さんが最も時間を費やすのは7〜9月の、この夏真っ盛りの時期ではないでしょうか(チャンピオンシップ大会へ進む方は、その後もまだまだ続きます)。業務の傍らモデルを考えてみたり、ロボットの見てくれを良くしようと試みている筆者も、気がつくと地区大会(予選)がすぐそこまで迫ってきていることに、焦りを感じています。

 今回は、前回からだいぶ時間が空いてしまいましたが、ETロボコンの審査項目の1つである「モデル」の描き方についてまとめてみたいと思います。ETロボコン参加者の方々は組み込み業界に属している方が主ですので、すでにご存知の言語かと思いますが、ETロボコンではUML(Unified Modeling Langage)という統一モデリング言語が推奨されています。

 UMLについては@IT MONOistでもこれまでに多くの記事を掲載してきましたので、細かい記述方法についてはそちらを参照いていただければ幸いです。


モデルの必要性、UMLとは何か?

 本連載の第2回で、ロボット(ハードウェア)を動かすためにはプログラムが必要だといいました。ETロボコンで作成するプログラムとは、例えば“黒いライン上をトレースしながら、場合によってはショートカットなどの難所をクリアして進む”というような指令をロボットに下すものです。

 上記のような指令であれば、プログラミング能力にたけている方ならばほんの数時間で書けてしまうかもしれません。しかし、要求(ゴールラインでストップするなど)を増やし、複雑な指令をすればするほど、プログラムも肥大になってしまいます。よってプログラムを書いた本人がソースコードの内容を把握していても、それを人に伝えようとしたときに、初めてそのコードを見た人は、何が何だか分からなくなってしまいます。そうした場合に活用されているのが、誰が見ても解釈できる世界共通の言語(記号)=UMLです。

 近年ではUMLをデジタルデータとして記述できるツールや、作成したモデルをプログラム(ソースコード)に落とし込むことができるツールなど、さまざまな便利ツールが開発されています。つまりUMLに従ったモデルを描くことで、従来よりもよりスマートなプログラムを簡単に作成できるというわけです。

UMLモデルの描き方

 それでは早速、UMLを用いたモデルの描き方を紹介します(なお、本文は5〜6月に開催されたETロボコン参加者向けの技術勉強会の内容を基に、『ETロボコンで学ぶUMLモデリング』と称して、筆者がまとめたものです)。

 UMLでは、モデル作成の手順として以下3つの視点(工程)を設けています。また、各工程には、それぞれの目的に応じた図があります。

  • 機能(実現したいこと) 
    ユースケース図
  • 構造(実現するために必要なもの) 
    クラス図、オブジェクト図
  • 振る舞い(実現するための方法) 
    状態マシン図、シーケンス図(相互作用図)、コミュニケーション図

 以下、各工程における主要な図の描き方を簡単に紹介します。

ユースケース図

 ユースケース図は、システムを利用する(またはシステムから利用される)人“アクター”とアクターが利用する機能“ユースケース”、ユースケースを実装しているシステム“サブジェクト”、そしてアクターとユースケース間の関連機能“関連”の4つで構成されています。

 例えばライントレースロボットのユースケース図は、図1のようになります。

ユースケース図の例 図1 ユースケース図の例

 図1は簡単な例ですので関連やアクター、ユースケースがそれぞれ1つずつしかありませんが、複雑なシステムになればなるほど、各要素数も増えていきます。

オブジェクト図

 オブジェクト図は、あるオブジェクトの実体を示した“インスタンス仕様”と、物事や情報からその性質や特長を抽出した“分類子”、インスタンス仕様間の関連を定義した“リンク”で構成されています。ある瞬間におけるオブジェクトの状態と各オブジェクト間の関連を表現しています。

オブジェクト図の例 図2 オブジェクト図の例

クラス図

 クラス図は、UMLの中で代表される図の1つです。ある問題領域に存在する複数の概念(クラス)とそれらの関係を表現しています。共通の状態と振る舞いに着目して抽象化した集まり“クラス”と、クラスの特徴を示した“属性”、クラスの機能“操作”、クラス間の関係を示す“汎化”、ある意味を持たせたクラス間のつながり“関連”、一方向のクラスから見たあるクラスの役割“関連端名”、複数のクラスが関係を持つ場合に、1つのクラスが同時に関係を持つことができるクラスの数“多重度”により構成されています。

クラス図の例 図3 クラス図の例

状態マシン図の描き方

 状態マシン図は、オブジェクトの状態とそのライフサイクルに着目して、状態の変化を表したものです。オブジェクトが持つライフサイクルの中で取り得る1つの状態を表現した“状態”、ある時点で起きる出来事の遷移を示した“遷移”、イベントが発生したときの動作“振る舞い”、最初の状態を示した“開始擬似状態”、動作終了時の状態“終了状態”により構成されています。

状態マシン図の例 図4 状態マシン図の例

シーケンス図(相互作用図)

 シーケンス図は、オブジェクト同士のやりとり(メッセージや順序)を時系列で表したものです。やりとりを行う実体やそれらを抽象化した分類子“ライフライン”とライフライン間のやりとりを表した“メッセージ”、ライフラインがメッセージを受け取ってから処理が終了するまでの仕様“実行仕様”、繰り返し動作を表現する“ループ”、条件分岐を表現する“オルタネイティブ”、条件分岐を表す“ガード”で構成されています。

シーケンス図の例 図5 シーケンス図の例

 以上、例を示した5つの図を使用して、モデルを作成します。


 なお、ETロボコンのモデル審査では、機能、構造、振る舞いでそれぞれ記載されている図の内容が一貫していることが重視されます。UMLモデルをC言語に落とし込む実装部分については、以下の記事を参照ください(次回に続く)。


Copyright © ITmedia, Inc. All Rights Reserved.