読者です 読者をやめる 読者になる 読者になる

モデルベース開発とUML

 組み込み開発業界で今一番ホットな話題はモデルベース開発でしょうか。トヨタなどがモデルベース開発を推進しているといったニュースをここ数年よく見かけますし、展示会ブースやセミナーでも、モデルベース開発支援ソフトやモデリング・UMLなどを扱ったものが増えています。

 この組み込みにおけるモデルベース開発では、モデリング言語としてUML、乃至それに独自ダイアグラムを追加した言語を使うのが一般的とされていますが、私はそれに若干の問題を感じます。非オブジェクト指向開発に、オブジェクト指向開発を押し付けている場面がしばしば発生する点で、です。


 組み込みシステム開発は、ハードのスペックを落として原価を削減できれば、それが何億もの利益につながる世界です。そうした効率化の需要がある限り、Cやアセンブラといった非オブジェクト指向言語のシェアは当面はなくならないでしょう(C言語のシェアが5割ほどあるともいわれていますし)。

 しかし現在のモデルベース開発は、オブジェクト指向言語・非オブジェクト指向言語に拘らず、上流設計をオブジェクト指向前提のUMLで進めようとしています。
 結果どのようなことを招いているかというと、単なるグローバル変数宣言をSingleton パターンと称したり、UML主体のモデルベース開発ツールに合わせるためにコードの効率性や移植性を低下させたりするような事態です。それらは開発効率化の足を引っ張っている節がありますし、実装の手間を上流に委譲させるどころか2重にしている側面も持っています。

 もちろん、JavaC++といったオブジェクト指向言語で開発する場合においては、UMLはモデリング言語として有効な選択肢です。統一規格として完成・普及している、シーケンスやタイミングを記述できるダイアグラムを内包している、拡張性があるなどといった相対的なメリットは、組み込み用途としてもかなり有望なものです。

 しかし上記のような理由により、なんでもかんでもUMLを押し付けるのは良くないと思います。
 個人的に、組み込みでモデルベース開発を進める上では、DFDのような古き良き構造化分析手法への回帰がある程度必要ではないかと考えています。そしてSysMLのようなプログラミングパラダイムに依存しない言語で上流設計を行い、Cなどを使う下位のサブシステムでは実装言語(C++、C、Verilog等)に合わせた構造化分析技法でモデリングを行うような形が、理想系と感じます。


 なおモデルベース開発自体は、組み込み開発業界でも時代の流れに適った手法であり、今後とも普及が進むと個人的にも考えています