モデリングはどこから手をつけたらいいの?
2011年8月11日(木)
内容 | ダイアグラム |
---|---|
機能 | ユースケース、ユースケースシナリオ |
構造 | クラス図 |
振る舞い | コミュニケーション図、シーケンス図 |
- [吉田]まずは構造から考えると解りやすいのかな。構造を整理するには「クラス」を見つけていくんだね。
- [舟元]そうだね。クラスを見つけて、それらがどういう風に振る舞うのかを明確にしていこう。
図5:クラス図(分析) |
図6:コミュニケーション図(分析) |
- [舟元]構造としては、「走行体」に「センサ類」がついていて、「ライントレーサ」が「走行体」と関連づけられているね。「ライントレーサ」は「制御量計算」とも関連しているのか。「旋回量計算」が「走行体」と関連付いているのは何でかな?「コース情報」とも関連付いているね。
- [吉田]「旋回量計算」には光センサの値と、目標値が必要になると思って「旋回量計算」から「走行体」、「コース情報」と関連づけたんだよ。コミュニケーション図を見てよ。
- [舟元]なるほど。構造と振る舞いはこれで解るね。でも、これだと…まあ、いいか、とりあえず分析は終わったので次は設計に入ろう。
設計する
- [舟元]次に分析結果を基に設計していこう。これを見て実装することになるからね。
- [吉田]分かってるって、メソッドの引数や戻り値も考慮してすすめるよ。今回は振る舞いはシーケンス図で書くね。
図7:クラス図(設計) |
図8:シーケンス図(設計) |
- [舟元]「ライントレーサー」クラスがmainを持っているって事は、システム本体ってことなんだね。でも、このクラスは分析モデルでは要らないんじゃ無いのかな。分析では「ライントレース」を実現するための構造であって、ソフトウエアの構造では無いからね。ソフトウエアの構造を意識するのは設計モデルからで良いんだよ。「分析」と「設計」の違いは、単にクラス名や関数名が日本語か英語かって訳じゃ無いんだよね。
- [吉田]なるほど。分析では対象を明らかに(作らないといけないものを明確化)して、設計では対象を実装可能なものにする(どうやって実装すれば良いか)んだね。だから、分析モデルでは出てこないクラスが出てきたり、統合されたりする訳か…
- [舟元]そういうこと!(本当は、、、ダメだけど)今回は、「ライントレースする」っていう単純な要求だから、このまま設計を進めちゃおうか。それぞれのクラスと責務も明確にしておこう。
- [吉田]分かった。
クラス | 責務 |
---|---|
lineTracer | システム本体。システムのライフサイクルを管理する。 |
nxt | 走行体クラス。センサー及び、モーターと協調して走行処理を行う。 |
turnCalculator | 旋回量を算出する。 |
pCalculator | P制御による旋回量を算出する。 |
course | コース情報を管理する。 |
motor | モーターを制御する。 |
touchSensor | タッチセンサを制御する。 |
gyroSensor | ジャイロセンサを制御する。 |
lightSensor | 光センサを制御する。 |
balanceCalculator | 倒立振子するための演算を行う。 |
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。