モデル駆動ソフトウェア開発
2008年7月14日
モデル駆動ソフトウェア開発(MDSD)は、伝統的なプログラミングスタイルに取って代わるものと見なされるソフトウェア開発スタイルです。このアプローチは、ソフトウェアシステムのモデルを作成することに重点を置いています。これらのモデルは通常、図による設計表記を使用して明白化されます。UMLはその選択肢の1つです。システムをモデリングツールに指定して、従来のプログラミング言語でコードを生成するためにこれらの図を使用するという考え方です。
MDSDのビジョンは、グラフィカルデザイン表記とCASEツールの開発から発展しました。これらの手法の支持者は、グラフィカルデザイン表記を、プログラミング言語よりも抽象化レベルを引き上げる方法と見なし、開発の生産性を向上させると考えていました。これらの手法やツールがあまり普及しなかった一方で、基本的な核となるアイデアは今でも生き続けており、それらを開発し続けるコミュニティの人々がいます。
キャリアのほとんどでMDSDに何らかの形で携わってきましたが、私はその将来には懐疑的です。MDSDの大半の愛好家は、モデルがプログラミング言語よりも本質的に高いレベルの抽象化であるという考えに基づいて熱意を抱いています。私はその議論には同意しません。グラフィカル表記がより良い抽象化になる場合もありますが、常にそうではなく、具体的なケースによって異なります。さらに、MDSDを使用するには、投影編集をサポートするツールが必要です。これらのツールは現在、ツールに関して発生する実用上の問題の多くを引き起こし、その代表例がソース管理です。
MDSDは、用語上の混乱で取り囲まれています。MDSDの特定のビジョンは、UMLに基づいたOMGイニシアチブであるモデル駆動アーキテクチャ(MDA)です。しかしながらMDSDコミュニティの多くの人々は、MDAやUMLがMDSDの適切なビジョンではないと考えています。私は長い間、人々がモデル駆動開発(MDD)を一般的な概念として、MDAをOMGの特定のビジョンとして語っているのを聞いてきました。しかし、OMGは「Model Driven *」や「Model Based *」などのいくつかのフレーズに商標を持っており、MDDもその中には含まれます。そのため、人々は使用するモデル駆動フレーズに注意する必要があります。私はこのトピックに関する有益な本のタイトルなので、MDSDを使用しています。