モデル駆動型開発
モデル駆動型の開発は、ソフトウェア開発環境の進化とともにいくつかの領域において実用的なレベルで使われるようになってきました。その呼び方は、MDA、MBD、MDD、ソフトウェア ファクトリなどと、さまざまです。筆者は、IEEEという学会の中で共通語として用いられている呼称であるMDD(Model Driven Development)をよく使っています。
さまざまな呼び方があるのは、推進している人や団体の違いだけから生まれているわけではありません。それぞれに理由があってのことです。例えば、MBDは自動制御の数理的なモデルを開発し、モデルの実行に必要な組込みプログラムを自動生成する仕組み全体を指しています。自動制御という科学技術として定式化が済んでいる分野のソフトウェア開発に対してプログラム製造の自動化を行なっていくのがMBDです。日本においては、90年代に産業機器から家電メーカまで、多くの企業が自社製品向け特定プログラムの自動生成を試みました。しかし、その仕組みの維持や高機能化と利用者教育は思いのほか難しく持続的な利用は困難でした。それに対してMBDは自動制御という領域の業界横断的な試みと言えるでしょう。多くの企業が同一のツールを使うことで保守改良の困難は少なくなります。
また、皆さん御存知のUMLやCORBAの策定団体であるOMGからはMDAが提案され標準化されています。これは大規模ソフトウェアと通信の開発問題を解決する枠組みとして北米を中心に使われていますが、利用リソースの大きさから小中規模の組込みシステム開発では利用が難しいものです。そのためか、日本の組込みソフトウェア産業での普及は進んでいません。
しかしながら、UMLそのものの標準化の手法としてUMLを使う、もしくはUMLサブセットを使うという方法は着実に進歩してきました。つまり、モデルそのものの定義のモデル化(メタモデル化)や種類の違うモデルとモデルセットの変換のモデル化(メタメタモデル)などの定式化が進んだのです。メタモデルを媒介としたUMLモデルから実行コードの生成という普遍的な方式は、今後さまざまな産業分野の特定用途プログラムの自動生成に寄与していくだろうと筆者は考えています。
以上のように、最初から特定分野を狙ってソフトウェア開発の装置を作るものからソフトウェア開発の普遍的な方法を実装しようとするものまでMDDの含意は広範です。