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

.body .kaiwa_css .c { background-image:url('/sites/default/files/articles/2116_c_w60.png')

吉田 彩花, 舟元 拓斗

2011年8月11日 20:00

前回は、「ライントレースする」という機能を走行体※1で実現しました。今回は、この課題に対してモデルを書いていきます。
[※1] 教育用レゴ マインドストームNXT

→参照:教育用レゴ マインドストームNXT紹介

はじめての開発プロセス

  1. [吉田]キレキレで解りやすいモデルを書こうと意気込んで来ました!
  2. [舟元]そういえば、そんなこと言ってたね。
  3. [吉田]えーと…???意気込みはあるんだけど、どこから始めれば良いんだろう?前回までに作ったソースコードはあるけど、それをモデルにすれば良いわけ?
  4. [舟元]本当の流れは「モデリング」→「コーディング」だよね。

通常の開発プロセスの中では「分析」→「設計」→「実装」進めていきますが、新人にとっては、ドメイン(今回では「組込み」であったり「制御」「ライントレース」)に対する知識が全く無い状態であったり、 システム開発自体も初挑戦です。

そこで、予め小さな課題(ライントレース)を通し予備知識を得た状態でモデルを書くことに挑戦しています。

  1. [吉田]だよね。せっかくだからちゃんとした手順を踏みたいよね。じゃあ、モデリングの前って何かあるの?てか、モデリングはどこから作るのさ。技術教育で聞いたときには解った気がしたけど、実際にやろうとするとよく分からなくなってきた。解らなすぎて鼓動が激しくなってきた。集中できない。ど、どうしよう。
  2. [舟元]モデリングっていうのはモデルを使って対象を単純化して表すってことだから、まず、モデリングする「対象」を明確にしないとね。じゃあ、対象って何?対象ってどこから来るの?ってなるよね。モデリングをする前に開発の全体の流れを見といた方が良いと思うんだ。ちょっと見てみようよ。
  3. [吉田]は、はぁ…

全体の流れ 開発プロセス

開発の全体の流れは「開発プロセス」と呼ばれます。開発プロセスには色々なモノがありますが、組込みシステムでの開発では「V字プロセス」が適用されることが多いです。V字の左側は開発の上流工程になり、下の絵の例だと「要求分析」→「設計」の流れになります。ソフトウエア開発での要求分析プロセスでは、システムが要求している内容をソフトウエア・ハードウエアで実現される要求に整理・明確化し、ソフトウエアの機能仕様として定義します。設計プロセスでは要求分析で定義された仕様を実現するためのソフトウエアの構造や、機能、振る舞いを明確にします。この結果からコーディング、単体テストが実施されます。

「要求分析プロセス」や「設計プロセス」における手法やアウトプットの形は色々なものがあり、適材適所に使用されています。極端な例ですと、これらのプロセスのアウトプットを自然言語のみで記載することも可能です。ただ、その場合、その理解に時間が掛かったり内容が正確に伝わらないことが生じるかもしれません。最近では分析や設計の結果を正確に理解できるように表現する手法として、また、作成したモデルからソースコードを生成する、など様々な理由でモデリングによって行われることが多くなってきています。

図1:V字プロセス

表1:上流のプロセス

プロセス内容
要求分析システムが要求している内容をソフトウエア・ハードウエアで実現される要求に整理・明確化し、ソフトウエアの仕様として定義する。その際、機能・非機能な要求も明らかにする
設計(アーキテクチャ設計)要求分析の結果をソフトウエアで実現するため、機能・構造・振る舞いの観点で検討・明確化する。
コーディング・単体テスト設計の結果を基にコーディング及び単体テストを行う。詳細設計書からハンドコーディングする場合と、作成したモデルから自動でコードを生成させる場合がある。
  1. [吉田]つまり、開発の流れとしては「(1)要求分析」→「(2)設計」→「(3)コーディング」で、(1)と(2)の手段としてモデリングってことか。てことは、開発を始めるときは要求分析から手を着けるべきなんだね。
  2. [舟元]そうなるね。要求分析では要求から仕様として落としていくんだけど、今回のシステムに求められてる要求は「ライントレースする」になるね。

要求をモデリングする

  1. [舟元]今回はオブジェクト指向と相性の良いUMLを使っていこう。手書きは大変だからUMLを書くためのツールを使うと便利だね。今回は、ETロボコンの参加者向けに提供されるツールの中から astah* を使うことにしよう。

ETロボコンでは、開発支援スポンサー各社の協力のもと、ツールの利用やセミナーの開催等のサポートを受けることができます。 今回は、株式会社チェンジビジョンより提供されるソフトウエア設計支援ツール astah* professional を利用することにしました。

  1. [舟元]まずはユースケースを使って要求分析から始めようか。
  2. [吉田]わかった。ユースケースって事は、ユースケース図とユースケースシナリオだね。これは技術教育で教わったわ。

図2:ユースケース図(分析)

図3:P制御のユースケースシナリオ

図4:ライントレースのユースケースシナリオ
  1. [吉田]こんな感じかな。
  2. [舟元]次にこの「ライントレース」って結局どういうこと?ってのを明確にしていこうか。ライントレースするってことは、具体的にどういうことなのかを「機能」、「構造」、「振る舞い」の観点で出していこうか。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30