ETロボコン2009

ETロボコン2009、挑戦記(4)

ロボコンで学ぶUMLモデリング

上口翔子 @IT MONOist編集部 2009/7/16

組み込み技術者の育成をテーマにしたETソフトウェアデザインロボットコンテスト(愛称:ETロボコン)。本連載では、11月に開催されるチャンピオンシップ大会までの各取り組みを随時レポートする。(編集部)

- PR -

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

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

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


関連記事:
連載:組み込み開発にUMLを活用しよう(@IT MONOist)
http://monoist.atmarkit.co.jp/fembedded/index/uml01.html
連載:SoC設計にモデリング手法を導入する(@IT MONOist)
http://monoist.atmarkit.co.jp/fembedded/index/soc.html

モデルの必要性、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 クラス図の例

関連記事:
“本番に強い”クラス図をマスターしよう(@IT MONOist)
http://monoist.atmarkit.co.jp/fembedded/articles/robocon/etrobocon2008/04/robocon04_a.html

状態マシン図の描き方

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

図4 状態マシン図の例

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

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

図5 シーケンス図の例

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

関連記事:
専門家が思わずうなる、モデルの作り方(@IT MONOist)
http://monoist.atmarkit.co.jp/fembedded/articles/robocon/etrobocon2008/07/robocon07_a.html
モデルの情報量と伝わりやすさの関係を問う(@IT MONOist)
http://monoist.atmarkit.co.jp/fembedded/articles/robocon/etrobocon2008/08/robocon08_a.html

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

関連記事:
UMLモデルをどうやってC言語に落とし込むか(@IT MONOist)
http://monoist.atmarkit.co.jp/fembedded/robocon/etrobo06/road03/road03a.html

@IT MONOist ロボット特集ページ

ETロボコン2009公式ホームページはこちらへ

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -