PR

 前回は、組み込み(ET:Embedded Technology)分野におけるコンポーネント指向の取り組みを紹介した。今回は、IT分野におけるモデル駆動開発(モデルベース開発)とET分野におけるモデル駆動開発の違いを明らかにしたうえで、筆者らが実際にET分野でのモデル駆動開発を体験した得られたプロセス面での所感を述べる。

IT分野とは少し異なるET分野のモデル駆動開発手法

 IT分野におけるモデル駆動開発の例として、業務向けのシステム開発にモデル駆動開発を採用する場合を考える。この場合は、主にUMLを用いて画面で処理したいデータや処理の流れをモデル化し、モデルデータを元に対象とするアプリケーションの実現に適したフレームワーク上で動作する処理のスケルトンコードを生成してシステム開発を行う手順とすることが多い。

 類似した効果をイメージしやすい環境としては、Ruby on Rails(RoR)が挙げられる。RoRでは、システムで扱うデータ(個人の氏名、年齢、メールアドレスが格納されるアドレス情報など)を定義して、コマンドを実行するだけで、該当データの表示と更新を行うユーザーインタフェース部分やデータベースとの出力を行う処理コードが生成される。つまり、データ定義を行う(≒データのモデル化)だけでアプリケーションを生成し実行することが可能だ。このように、IT業界におけるモデル駆動開発は、システム化する対象領域を主にデータの観点から分析し、ソフトウエアの仕様や設計を抽象化してモデル化したうえで、設計に対応する処理コードを自動生成する。

 それに対して、ET分野におけるモデル駆動開発では、狙いが少し異なる。自動車に搭載するソフトウエアの開発を例に説明する。自動車などET分野のソフトウエアでは、扱うデータそのものはIT分野ほど複雑ではない。

 車両の衝突を検出し、ドライバーの安全を守るクッションを展開するエアバッグシステムを例に考えてみよう。扱うデータは速度、加速度のセンサー値が中心であり、データ値も時間軸で連続した有限範囲の数値であることから非常に単純なように見える。しかし、重要なのは、加速度の変化から衝突を検出し、危険な状況であることを認識して速やかにクッションを開く装置を起動する「制御」である。

 このように、ET分野では、制御をモデル化して、論理的にシミュレーションを行うことで、システムによって行われる制御内容の妥当性を評価し開発を効率化している。ET分野では、制御をモデル化して開発を行う手法をモデルベース開発と定義しているのである。

 モデルベース開発のモデルとは、数学を用いた論理で制御内容を定義したものであり、モデルデータは最終的には制御内容のアルゴリズムを実装した処理コードとなる。IT分野におけるモデル駆動開発のように、ソフトウエアで扱うデータやソフトウエアそのものの構造をモデル化の対象とはしていない。