モデリングはどこから手をつけたらいいの?
前回は、「ライントレースする」という機能を走行体※1で実現しました。今回は、この課題に対してモデルを書いていきます。
[※1] 教育用レゴ マインドストームNXT
はじめての開発プロセス
- [吉田]キレキレで解りやすいモデルを書こうと意気込んで来ました!
- [舟元]そういえば、そんなこと言ってたね。
- [吉田]えーと…???意気込みはあるんだけど、どこから始めれば良いんだろう?前回までに作ったソースコードはあるけど、それをモデルにすれば良いわけ?
- [舟元]本当の流れは「モデリング」→「コーディング」だよね。
通常の開発プロセスの中では「分析」→「設計」→「実装」進めていきますが、新人にとっては、ドメイン(今回では「組込み」であったり「制御」「ライントレース」)に対する知識が全く無い状態であったり、 システム開発自体も初挑戦です。
そこで、予め小さな課題(ライントレース)を通し予備知識を得た状態でモデルを書くことに挑戦しています。
- [吉田]だよね。せっかくだからちゃんとした手順を踏みたいよね。じゃあ、モデリングの前って何かあるの?てか、モデリングはどこから作るのさ。技術教育で聞いたときには解った気がしたけど、実際にやろうとするとよく分からなくなってきた。解らなすぎて鼓動が激しくなってきた。集中できない。ど、どうしよう。
- [舟元]モデリングっていうのはモデルを使って対象を単純化して表すってことだから、まず、モデリングする「対象」を明確にしないとね。じゃあ、対象って何?対象ってどこから来るの?ってなるよね。モデリングをする前に開発の全体の流れを見といた方が良いと思うんだ。ちょっと見てみようよ。
- [吉田]は、はぁ…
全体の流れ 開発プロセス
開発の全体の流れは「開発プロセス」と呼ばれます。開発プロセスには色々なモノがありますが、組込みシステムでの開発では「V字プロセス」が適用されることが多いです。V字の左側は開発の上流工程になり、下の絵の例だと「要求分析」→「設計」の流れになります。ソフトウエア開発での要求分析プロセスでは、システムが要求している内容をソフトウエア・ハードウエアで実現される要求に整理・明確化し、ソフトウエアの機能仕様として定義します。設計プロセスでは要求分析で定義された仕様を実現するためのソフトウエアの構造や、機能、振る舞いを明確にします。この結果からコーディング、単体テストが実施されます。
「要求分析プロセス」や「設計プロセス」における手法やアウトプットの形は色々なものがあり、適材適所に使用されています。極端な例ですと、これらのプロセスのアウトプットを自然言語のみで記載することも可能です。ただ、その場合、その理解に時間が掛かったり内容が正確に伝わらないことが生じるかもしれません。最近では分析や設計の結果を正確に理解できるように表現する手法として、また、作成したモデルからソースコードを生成する、など様々な理由でモデリングによって行われることが多くなってきています。
図1:V字プロセス |
表1:上流のプロセス
プロセス | 内容 |
---|---|
要求分析 | システムが要求している内容をソフトウエア・ハードウエアで実現される要求に整理・明確化し、ソフトウエアの仕様として定義する。その際、機能・非機能な要求も明らかにする |
設計(アーキテクチャ設計) | 要求分析の結果をソフトウエアで実現するため、機能・構造・振る舞いの観点で検討・明確化する。 |
コーディング・単体テスト | 設計の結果を基にコーディング及び単体テストを行う。詳細設計書からハンドコーディングする場合と、作成したモデルから自動でコードを生成させる場合がある。 |
- [吉田]つまり、開発の流れとしては「(1)要求分析」→「(2)設計」→「(3)コーディング」で、(1)と(2)の手段としてモデリングってことか。てことは、開発を始めるときは要求分析から手を着けるべきなんだね。
- [舟元]そうなるね。要求分析では要求から仕様として落としていくんだけど、今回のシステムに求められてる要求は「ライントレースする」になるね。
要求をモデリングする
- [舟元]今回はオブジェクト指向と相性の良いUMLを使っていこう。手書きは大変だからUMLを書くためのツールを使うと便利だね。今回は、ETロボコンの参加者向けに提供されるツールの中から astah* を使うことにしよう。
ETロボコンでは、開発支援スポンサー各社の協力のもと、ツールの利用やセミナーの開催等のサポートを受けることができます。 今回は、株式会社チェンジビジョンより提供されるソフトウエア設計支援ツール astah* professional を利用することにしました。
- [舟元]まずはユースケースを使って要求分析から始めようか。
- [吉田]わかった。ユースケースって事は、ユースケース図とユースケースシナリオだね。これは技術教育で教わったわ。
図2:ユースケース図(分析) |
図3:P制御のユースケースシナリオ |
図4:ライントレースのユースケースシナリオ |
- [吉田]こんな感じかな。
- [舟元]次にこの「ライントレース」って結局どういうこと?ってのを明確にしていこうか。ライントレースするってことは、具体的にどういうことなのかを「機能」、「構造」、「振る舞い」の観点で出していこうか。