組込み教育委員会

4-2 OMG認定 組込み技術者資格試験(OCRES) 第4回

この記事を読むのに必要な時間:およそ 2 分

MDA~モデル駆動開発

今回はMDAについて解説します。MDAとはModel Driven Architectureの略でモデル駆動開発のことです。

大規模化し続け,いつの間にかスパゲッティ化してしまうソフトウェアに対して,記述の抽象度を上げて,設計を資産化していこう,という考え方です。組込み開発の現場では,四半世紀前はアセンブリ言語が中心でした。その後,高級言語であるC言語が出現し,その時点で抽象度が上がりました。しかし,今現在では,ソースコード行数が100万行を超える組込み製品もかなり増えていますし,全体では1,000万行を超える製品もあります。C言語よりも記述の抽象度を上げなければ,全体はおろか,部分的にも理解が困難になります。さらに抽象度を上げた記述がMDAのモデルです。MDAでは,設計情報の相互運用性を高めることで,モデルの資産化へもつながります。

それではOCRESの予想問題を2題考えてみましょう

問題1

Q:MDAに関しての,正しい記述をひとつ選択せよ
  • [A]アーキテクチャ中心の開発を行う
  • [B]モデルで検証し,テストは行わない
  • [C]メタモデルを変換してソースコードを生成する
  • [D]プラットフォーム非依存なモデルを作る

MDAでは,PIMとPSMという2つのモデルを取り扱います。PIMとはPlatform-Independent Modelの略で,プラットフォーム独立モデルのことです。それに対して,PSMはPlatform-Specific Modelの略で,プラットフォーム特化モデルのことです。MDAでは,問題ドメインの設計としてPIMを作り,特定のプラットフォームの詳細情報を組み入れてPSMを作る,という考え方です。これによりPIMの設計情報が相互運用可能となり,複数プラットフォームへの搭載も楽になることで資産化を進めることができます。

それでは選択肢をみてみましょう。アーキテクチャ中心の開発は,開発プロセスのことであり,MDAの考え方ではありません。[A]は間違いです。MDAでは,モデルでの検証,および,モデルから変換して実行可能なソースコードを作ることができますが,テストが不要になるわけではありません。MDAといえどもテストはとても大切ですので,テスト技法の習得と適用は不可欠です。[B]も間違いです。メタモデルはモデルの表記要素のモデルであり,実行可能なモデル(PIM)ではありません。設計として実行可能なものは,プラットフォーム独立モデル(PIM)となります。したがって[C]も間違いで,正解は[D]です。

問題2

Q:MDAの基本モデルに関して,正しい記述をひとつ選択せよ
  • [A]モデル(Model)は,ある観点(ViewPoint)を表現したものである
  • [B]モデル(Model)は,システム(System)にひとつしか存在しない
  • [C]モデル(Model)とビュー(View)は,それぞれ独立させる
  • [D]ヒューマンインタフェースで使われるMVCアーキテクチャと同じである

この出題は,MDAの基本モデル図1を理解しておけば解くことができます。基本モデルの大切な部分を眺めてみましょう。

図1 MDAの基本モデル

図1 MDAの基本モデル


開発対象のシステム(System)は,あるビジネス環境(Environment)で動作する。システム(System)は,複数の観点(ViewPoint)がある。1つの観点(ViewPoint)には,その観点から見える関心事の集合体(View)がある。そして,その関心事の集合体(View)を,クラスなどで設計したものがモデル(Model)である。モデル(Model)の構成要素を言語仕様として定義したものがメタモデル(Metamodel)である(※変換に関するTransformation系のクラスは省略)

ここで,観点(ViewPoint)とは,問題ドメイン分割の視点です。たとえば,「アプリケーションドメイン」「ヒューマンインタフェースドメイン」「通信ドメイン」「制御ドメイン」というように分割することです。そして,ビュー(View)は,それぞれの観点(ViewPoint)に存在する関心事の集合体です。たとえば,ヒューマンインタフェースでは「ボタン」「表示部」という関心事です。そして,モデル(Model)では,その関心事をクラスで設計し,ソフトウェアとして実行可能にします。前述のPIMとPSMも,それぞれプラットフォーム独立/特定の観点(ViewPoint)のモデル(Model)ということになります。

では,選択肢を見てみましょう。CとDはMVCアーキテクチャ(Model-View-Controller)のことですが,ここでのModelとは機能やデータであり,Viewとはその見せ方(LOOK&FEEL)のことです。インタフェース設計の典型的なアーキテクチャであり,MDAの用語とは違う意味で使われています。CとDは間違いです。システム(System)は複数の観点(ViewPoint),そして複数のビュー(View)があります。モデル(Model)は,そのビュー単位に作ることも可能であり,システムに必ず1つではありません。したがってBは間違いで,Aが正解です。


最後に,私見ですが,MDA対応のCASEツールが日本市場ではなかなか受け入れられない,という話をよく聞きます。それに対して欧州市場では引き合いがある,とのことです。これには2通りの解釈ができます。「日本のエンジニアは現実的であり,海のものとも山のものともわからないものは実績が出るまで様子を見ている」という解釈と,「日本のエンジニアがモデル設計の経験がなく,ツールを使いこなせないのではないか」という解釈です。後者の場合は,日本の組込みソフトウェアの危機的状況が始まっているのではないかと危惧してしまいます。今から,モデルなどの上流設計に着手し始めないと,気づいたときには大きな差がでていて,手遅れになりかねないのではないでしょうか。個々人のエンジニアが,CASEツールに挑戦してみて,スキルアップを行い,それが組織力やよりよい組込み開発につながるものと確信しています。

まずは,具体的な目標値にもなり,基本的な知識の習得として,資格試験にも挑戦していただきたいと思います。特に,OCRESでは,上流の設計やメタモデルの概念まで踏み込んだものとなっていますので,今後活躍が期待される「アーキテクト」という職種を目指しての第一歩を踏み出すことができます。

著者プロフィール

山田大介(やまだだいすけ)

(株)UML教育研究所 技術顧問。

コメント

コメントの記入