PR

モデリングはどこから手をつけたらいいの?

2011年8月11日(木)
吉田 彩花舟元 拓斗
内容 ダイアグラム
機能 ユースケース、ユースケースシナリオ
構造 クラス図
振る舞い コミュニケーション図、シーケンス図
  1. [吉田]まずは構造から考えると解りやすいのかな。構造を整理するには「クラス」を見つけていくんだね。
  2. [舟元]そうだね。クラスを見つけて、それらがどういう風に振る舞うのかを明確にしていこう。

図5:クラス図(分析)

図6:コミュニケーション図(分析)
  1. [舟元]構造としては、「走行体」に「センサ類」がついていて、「ライントレーサ」が「走行体」と関連づけられているね。「ライントレーサ」は「制御量計算」とも関連しているのか。「旋回量計算」が「走行体」と関連付いているのは何でかな?「コース情報」とも関連付いているね。
  2. [吉田]「旋回量計算」には光センサの値と、目標値が必要になると思って「旋回量計算」から「走行体」、「コース情報」と関連づけたんだよ。コミュニケーション図を見てよ。
  3. [舟元]なるほど。構造と振る舞いはこれで解るね。でも、これだと…まあ、いいか、とりあえず分析は終わったので次は設計に入ろう。

設計する

  1. [舟元]次に分析結果を基に設計していこう。これを見て実装することになるからね。
  2. [吉田]分かってるって、メソッドの引数や戻り値も考慮してすすめるよ。今回は振る舞いはシーケンス図で書くね。

図7:クラス図(設計)

図8:シーケンス図(設計)
  1. [舟元]「ライントレーサー」クラスがmainを持っているって事は、システム本体ってことなんだね。でも、このクラスは分析モデルでは要らないんじゃ無いのかな。分析では「ライントレース」を実現するための構造であって、ソフトウエアの構造では無いからね。ソフトウエアの構造を意識するのは設計モデルからで良いんだよ。「分析」と「設計」の違いは、単にクラス名や関数名が日本語か英語かって訳じゃ無いんだよね。
  2. [吉田]なるほど。分析では対象を明らかに(作らないといけないものを明確化)して、設計では対象を実装可能なものにする(どうやって実装すれば良いか)んだね。だから、分析モデルでは出てこないクラスが出てきたり、統合されたりする訳か…
  3. [舟元]そういうこと!(本当は、、、ダメだけど)今回は、「ライントレースする」っていう単純な要求だから、このまま設計を進めちゃおうか。それぞれのクラスと責務も明確にしておこう。
  4. [吉田]分かった。
クラス 責務
lineTracer システム本体。システムのライフサイクルを管理する。
nxt 走行体クラス。センサー及び、モーターと協調して走行処理を行う。
turnCalculator 旋回量を算出する。
pCalculator P制御による旋回量を算出する。
course コース情報を管理する。
motor モーターを制御する。
touchSensor タッチセンサを制御する。
gyroSensor ジャイロセンサを制御する。
lightSensor 光センサを制御する。
balanceCalculator 倒立振子するための演算を行う。

株式会社 永和システムマネジメント

永和システムマネジメントに2011年入社。文系出身で右も左もプログラミングも分からない中、ETロボコンへの参加を命じられ四苦八苦中。

株式会社 永和システムマネジメント

永和システムマネジメントに2011年入社。学生時代に二度ETロボコンに参戦。配属されてから役に立ちそうな技術・知識を盗むべく奮闘中。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています