ライントレースのモデル図を書く

2011年8月31日(水)
吉田 彩花舟元 拓斗

静的な構造を整理する

  1. [舟元]よし、ユースケースが整理できたらか、次は、このユースケースからモノを取り出してモノ同士の静的な関連を整理しよう。
  2. [吉田]モノ。。。?静的。。。な関連。。。?
  3. [舟元]やる事としては、ユースケースシナリオからモノを取り出して、それらにどんな関連があるかを整理するんだよ。モノをオブジェクトとして図の中に置いて、モノ同士の関連でオブジェクト同士を繋げればOK。

    「競技開始を待つ」と「ベーシックステージを走行する」で書いてみようか。
  4. [吉田]じゃぁ「競技を待つ」からね。

「競技開始を待つ」の基本フロー

1.文系女子は、審判から競技開始の合図を受け走行体に競技開始を指示する。
2.走行体は、競技開始の指示を受けユースケース「ベーシックステージを走行する」を開始する。
  1. [吉田]で、ユースケースからモノを取り出すって、、、モノでしょー。んーっと、

図4:ユースケースからモノを取り出す
  1. [吉田]どうだっ!!
  2. [舟元]ほぉー。。。。30点!
  3. [吉田](´・ω・`)
  4. [舟元]かたちあるモノは、取り出せたね。でも、かたちないモノが取り出せてないよ。
  5. [吉田]かたちのないもの?
  6. [舟元]例えば、審判が出す「競技開始の合図」とか、文系女子が走行体に対して行う「競技開始を指示する」とか。

図5:かたちないモノを取り出す
  1. [吉田]んー確かにモノといえばモノ?なんだか振舞い(処理)っぽいものまでモノっていうのは違和感だなー。
  2. [舟元]実際にプログラムを意識しちゃうと、変かもね。でもここはまだ分析だから、割り切ってモノとして捉えちゃおう。今後やっていくなかで、「これは、どこかのクラスのメソッドだね」とか「これは、どこかのクラスの変数だね」という感じで整理していけば良いんだよ。いきなり完成品は狙えないね。
  3. [吉田]そうなのかー。道は長そうだ。次は関連しそうなモノ同士を線で繋げるんだよね。で、関連って。。。?
  4. [舟元]そうだね。フローの一文がまだ複文になっているから、よく見えてこないね。対象のフローの一文が単文になるように分解してみよう。
1.文系女子は、審判から競技開始の合図を受け走行体に競技開始を指示する。
→ 審判は、競技開始の合図を出す。
→ 文系女子は、競技開始の合図を受ける。
→ 文系女子は、競技開始を指示する。
→ 走行体は、競技開始の指示を受ける。
  1. [舟元]本当は、ユースケース記述がここまで細かく書けてら良いんだけど、あまりに細かく書き過ぎて爆発しちゃっても本質が見えなくなっちゃうからね。粒度ってやつだ。
  2. [吉田]あー。単文にした文章に出てくるものどうしを繋げれば良さそう?

図6:関連する要素をつなげる
  1. [吉田]なんか見えてきた!!...気がする!!
  • 文章が複文だったら単文になるように分解してみる。
  • モノを見つけるには、接続詞を切れ目にして分解してみる。
  • モノは、形のあるものもあれば、形のないものもある。
  1. [吉田]コツが掴めれば、サクサク進められそうだね。よーし。じゃぁ、もう一個「ベーシックステージを走行する」も書くよ!まずは、モノを取り出してみるね。
基本フロー モノ
1. 走行体が平面のラインに沿って走行する
  • 走行体
  • 平面のライン
  • 沿って走行する
2. 走行体が坂道の前の灰色のラインを感知する
  • 走行体
  • 坂道の前の灰色のライン
  • 感知する
3. 走行体は坂道走行に切り替える
  • 走行体
  • 坂道走行
  • 切り替える
4. 走行体が坂道の後の灰色のラインを感知する
  • 走行体
  • 坂道の後の灰色のライン
  • 感知する
5. 走行体は坂道走行から平面走行に切り替える
  • 走行体
  • 坂道走行
  • 平面走行
  • 切り替える
6. 走行体が平面のラインに沿って走行する
  • 走行体
  • 平面のライン
  • 沿って走行する
7. 走行体が2番目のゲートを通過する
  • 走行体
  • 2番目のゲート
  • 通過する
8. 走行体が平面のラインに沿って走行する
  • 走行体
  • 平面のライン
  • 沿って走行する
9. 走行体が3番目のゲートを通過する
  • 走行体
  • 3番目のゲート
  • 通過する
  1. [吉田]今回は、単純な表現ばっかだから簡単かな。こんな感じ?

図7:「ベーシックステージを走行する」からモノを取り出したところ
  1. [舟元]なるほどぉ。良いね。文章で書かれたユースケース記述では見えにくかったモノの関連が見えるようになったね。
  2. [吉田]うん。なんか、他のユースケースもザクザク書けそうな気がしてきたよ。ところで、このままだと「ベーシックステージを走破した後にボーナスステージを走る」とか難所をどの順番で走るとかが分かんないよね。
  3. [舟元]んー。そうだね。これまた、今作っているオブジェクト図の中で表現するのは大変かも。 「これをやってから、あれをやる」や難所の順番は、静的に定義するよりも、動的なものとみなして、分析を進めたほうが良さそうだね。
  4. [吉田]なるほどぉ。ステートマシン図やシーケンス図、アクティビティ図だね。
  5. [舟元]それそれ。じゃぁ、今回はここまでにして、次回は、オブジェクト図からクラスを抽出して、動的な構成の分析をしよう。
  6. [吉田]はぁい。

【参照リンク】

<サイト最終アクセス:2011.08>

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

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

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

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

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

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

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