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

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 Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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