Model-driven architecture

***Model-driven architecture*** (MDA**™**) adalah sebuah pendakatan perancangan perangkat lunak yang diluncurkan oleh Object Management Group (OMG) di 2001.

MDA mendukung rekayasa model-driven dari sistem perangkat lunak. MDA menyediakan sekumpulan panduan untuk menstrukturkan spesifikasi yang dinyatakan sebagai model. Pendekatan MDA mendefinisikan fungsionalitas sistem menggunakan sebuah platform-independent model (PIM) dengan memakai sebuah domain-specific language yang sesuai. Kemudian, diberikan sebuah platform definition model (PDM) berupa CORBA, .NET, the Web, dll., PIM diterjemahkan ke dalam satu atau lebih platform-specific model (PSM) yang dapat dijalankan oleh komputer. PSM dapat menggukanan Domain Specific Language yang berbeda, atau sebuah General Purpose Language seperti Java, C#, PHP, Python, dll.. Kakas otomatis umumnya yang melakukan penerjemahan ini.

Organisasi OMG sekadar menyediakan spesifikasi kasar dan bukan implementasi, kadang-kadang merupakan jawaban atas Requests for Proposal (RFP). Implementasi datang dari perusahaan swasta atau kelompok ''open source''.

Prinsip-prinsip MDA dapat juga diterapkan pada area lain sepertibusiness process modeling di mana PIM diterjemahkan ke dalam proses otomatis atau manual.

## Pendekatan MDA

OMG memfokuskan Model-driven architecture pada rekayasa maju, yaitu, menghasilkan kode yang berasal dari abstraksi, spesifikasi pemikiran manusia. Grup ADTF (Analysis and Design Task Force) dari OMG memimpin usaha ini. Dengan sedikit candaan, grup tersebut memilih ADM (kebalikan dari MDA) sebagai nama dari studi **reverse engineering**. ADM kependekan dariArchitecture-Driven Modernization. Tujuan ADM adalah untuk menghasilkan standard-standard bagi rekayasa balik berbasis model untuk sistem lawas (*legacy system*). Knowledge Discovery Metamodel (KDM) adalah salah satu yang dicapai oleh usaha tersebut, dan mendeskripsikan sistem nformasi ke dalam pengertian dari beragam aset (program, spesifikasi, data, file-file uji, skema basis data, dll.).

Salah satu tujuan dari MDA adalah memisahkan rancangan dari arsitektur. Sebagaimana konsep dan teknologi yang digunakan untuk mewujudkan rancangan, dan, konsep dan teknologi yang digunakan untuk mewujudkan arsitektur telah berubah sendiri-sendiri, saling lepas antar keduanya memungkinkan pengembang sistem untuk memilih yang terbaik dan yang paling tepat dalam kedua ranah. Rancangan mengarah pada kebutuhan fungsional (use case) sedangkan arsitektur menyediakan infrastruktur yang diwujudkan melalui kebutuhan non-fungsional seperti skalabilitas, reliabilitas dan kinerja. MDA memandang bahwa platform independent model (PIM), yang merepresentasikan sebuah rancangan konseptual yang mewujudkan kebutuhan kebutuhan fungsional, akan bertahan terhadap perubahan dalam realisasi teknologi dan arsitektur perangkat lunak.

Hal yang penting dari model-driven architecture adalah pengertian transformasi model. Sebuah bahasa baku khusus untuk transformasi model yang telah didefinisikan oleh OMG disebut QVT.

## Standar Terkait

Model MDA terkait pada banyak standar, termasuk Unified Modeling Language (UML), Meta-Object Facility (MOF), XML Metadata Interchange (XMI), Enterprise Distributed Object Computing (EDOC), Software Process Engineering Metamodel (SPEM), dan Common Warehouse Metamodel (CWM). Istilah “arsitektur” dalam MDA tidak mengacu pada arsitektur dari sistem yang dimodelkan, tapi lebih kepada arsitektur dari berbagai standard dan bentuk model yang bertindak sebagai dasar teknologi bagi MDA.

## Pendekatan Executable UML

Executable UML (disingkat xtUML  atau xUML,) adalah evolusi dari metode Shlaer-Mellor  untuk UML, ini adalah pendekatan khusus untuk mengimplementasikan MDA. Executable UML secara grafis menyatakan sebuah sistem deterministik dengan menggunakan sebuahprofil dari UML. Model-model adalah testable, dan dapat dikompilasi ke dalam sebuah bahasa pemrograman yang abstraksi-nya lebih rendah untuk menghasilkan implementasi spesifik. Executable UML mendukung MDA melalui spesifikasi platform-independent model, dan kompilasi dari platform-independent model ke dalam platform-specific model.

## Merek dagang
Object Management Group memiliki merek dagang MDA, demikian juga beberapa istilah yang mirip, termasuk Model Driven Development (MDD), Model Driven Application Development, Model Based Application Development, Model Based Programming, dan lainnya. Akronim utama yang belum dimiliki oleh OMG sampai saat ini adalah MDE. Akibatnya, komunitas riset menggunakan MDE untuk mengacu ide rekayasa model secara umum, tanpa harus patuh pada standar-standard yang dibuat OMG.

## Konferensi
Di antara banyak konferensi tentang topik ini adalah ECMDA , European Conference on MDA dan juga MoDELS, dahalu merupakan rangkaian konferensi > (sampai 2004), Italian Forum on MDA  dengan bekerjasama dengan OMG. Ada juga beberapa konferensi dan *workshop* (di OOPSLA, utamanya ECOOP) yang memfokuskan diri pada aspek-aspek khusus dari MDA seperti transformasi model, komposisi, dan pembangkitan.

## Lihat pula
* Modeling Maturity Levels Maturity levels for modeling as for Capability Maturity Model, only the still hypothetic 5th level (MML 5) allow code generation.
* Model-driven engineering (MDE)
* Model-driven integration (MDI)
* Metamodeling
* Platform Independent Model (PIM)
* Platform Specific Model (PSM)
* Modeling Maturity Level (MML)
* Unified Modeling Language (UML)
* Executable UML (xtUML)
* Jean-Marc Jézéquel
* Meta-Object Facility (MOF)
* MOF 2.0 Query/View/Transformation (QVT)
* ATL (ATL is an open source implementation of QVT under Eclipse)
* Model Transformation Languages (MTLs)
* Code Generation
* Software Factories (SoFa)
* CodeGear™ Enterprise Core Objects™ as MDA implementation
* Algebra of Systems (AoS)
* Web engineering
* WebML, a DSL for modeling Web applications
* Domain-driven design
* OpenBlueLab open source MDA based Enterprise resource planning (ERP), use case diagram and class diagram to configure completely the desired portal.
* openCRX and open source Customer Relationship Management (CRM) using MDA.
* Service-Oriented Modeling Framework (SOMF)
* URDAD, the Use Case Driven Analysis and Design methodology is a methodology for technology neutral design generating the Platform Independent Model (PIM).

## Referensi