ソフトウェアのモデル駆動開発にチャレンジ!体験! MBD&MDDによる組み込みシステム開発(2)(2/2 ページ)

» 2010年04月20日 00時00分 公開
前のページへ 1|2       

静的モデルの作成(構造の設計)

 自動追従ライントレースシステムにおいて、ソフトウェアとして実現すべき機能が整理できましたので、自動追従ライントレースシステムのソフトウェアを静的な視点で整理し、構造を表す「クラス図」を作成してみましょう。先ほど要件を整理したユースケース図から、次のようなクラス図を導き出しました(図7)。

 nxtOSEKから提供されている教育用レゴ マインドストームNXTのハードウェアに対応したAPIなどの情報を基に、「各デバイスを表すクラス」と今回作成したい機能を役割として持った「自動追従ライントレーサークラス」が導き出されています。


自動追従ライントレースシステムのクラス図(1) 図7 自動追従ライントレースシステムのクラス図(1)

動的モデルの作成(振る舞いの設計)

 今回作成する自動追従ライントレースシステムが、どのように動くのかを明らかにしていきましょう。まず、概念クラス図の中で、システムをコントロールする役割を持った自動追従ライントレーサーの状態に着目して、「ステートマシン図」を記述します(図8)。

自動追従ライントレースシステムのステートマシン図 図8 自動追従ライントレースシステムのステートマシン図

 今回、自動追従ライントレーサーには、大きく2つの状態があると考えました。スタート待機をする「スタート待機中状態」と、ラインに沿って走行する「走行中状態」です。スタート待機中状態では、タッチセンサが押されるまで走行を開始しません。一方、走行中状態では、タッチセンサを押すたびに、通常走行中と追従走行中を切り替えながら走行します。また、どんなときでも「停止ボタン」が押されると、自動追従ライントレーサーは停止して終了します。

再び静的モデルの設計(構造の設計)

 先ほど書いた自動追従ライントレーサーのステートマシン図から、自動追従ライントレーサーの大きな役割を“スタート待機中状態と走行中状態を切り替えること”とし、“通常走行中と追従走行中を切り替える”役割を持った「走行コントローラー」に責務を分担します。さらに、左右の駆動モータをコントロールする責務を持った「駆動コントローラー」を導き出しました(図9)。

自動追従ライントレースシステムのクラス図(2) 図9 自動追従ライントレースシステムのクラス図(2)

再び動的モデルの作成(振る舞いの設計)

 先ほど作成したクラス図は、自動追従ライントレースのソフトウェア構造として問題はないでしょうか? 「シーケンス図」を記述して確認してみましょう。

 実現したい機能については、ユースケース図で整理できていますが、本来1つ1つのユースケースが実現可能かどうかを検証すべきです。しかし、今回は、このシステムの重要な機能である「追従走行する」「通常走行する」に関係する機能が実現可能かどうかのみシーケンス図を記述して確認していきます(図10)(図11)。

シーケンス図(1)―【追従走行する】

 超音波センサから距離を取得して、駆動コントローラーに前進スピードの設定とターンスピードの設定を依頼する。

追従走行する機能のシーケンス図 図10 追従走行する機能のシーケンス図

シーケンス図(2)―【通常走行する】

 光センサから明るさを取得して、駆動コントローラーに前進スピードの設定とターンスピードの設定を依頼する。

通常走行する機能のシーケンス図 図11 通常走行する機能のシーケンス図

 シーケンス図の記述により、クラス図におけるクラスとクラスの関係や、振る舞いの過不足などはなさそうだということが分かりました。



 以上、今回は簡単な自動追従ライントレースシステムを開発することを題材に、ソフトウェアの世界のモデルに注目して、分析と基本設計を行いました。次回は、今回作成したUMLを基に、さらに実装を意識した設計とソースコードの生成をしていきたいと思います。(次回に続く)


教育用レゴ マインドストームNXTをC言語で制御するための環境について記述されています。なお、この環境は世界中の有志メンバの活動成果です(感謝して使いましょう)。しかし、この環境は“レゴ社が提供しているものではない”ので、これらの環境を利用して教育用レゴ マインドストームNXTを動かす場合には、レゴ社の動作保証外(※)になります。この記事を読んで実際に動かしてみる場合にも、使用者の責任になることを承知したうえで利用してください。
※レゴ社のサポート対象外であるとともに、アフレルや筆者が動作を保証するものではありません。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.