Pertanyaan Domain Driven Design vs Model Driven Architecture


Saya ingin tahu, apa perbedaan antara Domain Driven Design dan Model Driven Architecture? Saya memiliki kesan mereka memiliki kesamaan tertentu.

Bisakah Anda mencerahkan saya?

Terima kasih


32
2017-11-12 16:30


asal


Jawaban:


Jangan berselisih dengan sebagian besar hal di atas meskipun mungkin perlu sedikit berkembang.

Konsep paling penting dalam DDD adalah fokus pada masalah domain. Untuk menempatkan obsesi teknologi ke samping dan berkonsentrasi terutama pada pemodelan masalah yang ingin Anda pecahkan. Jadi, letakkan ajax, ORM, database, kerangka kerja, dll. Ke latar belakang dan sebagai gantinya pastikan Anda memiliki model yang lengkap dan akurat dari masalah pertama dan terpenting. (Tentu saja Anda masih membutuhkan komponen arsitektur - tetapi mereka secara eksplisit tunduk pada model). DDD menyebut ini "Bahasa yang ada di mana-mana" - model yang dinyatakan dalam istilah ahli domain dan pengembang sama-sama digunakan dan dipahami. Model di mana nama-nama kelas, metode dll diambil dari domain masalah.

DDD tidak mewajibkan / bagaimana / Anda menangkap model itu, meskipun buku itu mengimplikasikan menggunakan bahasa OO untuk melakukannya.

MDA berbagi gagasan yang sama tentang pemodelan domain masalah pertama dan terutama (PIM, Platform-Independent Model). Berbeda dengan DDD, ia menyarankan untuk membuat model itu dengan UML. Tetapi tujuannya adalah sama: memahami masalah domain tanpa mencemari dengan (perangkat lunak) masalah arsitektur.

MDA's PSM (Platform-Specific Model) agak analog dengan menerapkan pola arsitektur di DDD (misalnya agregat, repositori, dll). Sekali lagi - meskipun berbeda secara spesifik - keduanya bertujuan untuk memecahkan masalah mengubah model domain masalah 'murni' menjadi sistem perangkat lunak penuh.

Jadi menyimpulkan, saya akan mengatakan mereka serupa dalam dua cara:

  1. Sentralitas Model (seperti @Rui mengatakan) - khususnya / Domain / model.
  2. Menerapkan pola arsitektur ke model untuk mewujudkan sistem target.

hth.


29
2017-11-12 22:00



Akar dari Domain-Driven Design (DDD) dan Model Driven Architecture (MDA) adalah Model-Driven Engineering (MDE), juga dikenal sebagai Pengembangan Perangkat Lunak Berbasis Model (MDSD) jika terbatas pada domain pengembangan perangkat lunak. Lihat Wikipedia: http://en.wikipedia.org/wiki/Model-driven_development

Semua pendekatan yang jatuh di bawah payung MDE memiliki satu kesamaan: sebuah model. Bagaimana model ini terwujud tergantung pada rasa MDE tertentu.

MDA dianggap terlalu kompleks. DDD dianggap oleh beberapa orang sebagai terlalu abstrak. Penerapan MDE favorit pribadi saya adalah DSM dan ABSE (tidak terdaftar di artikel Wikipedia).


4
2017-11-12 18:23



DDD adalah tentang mendekati solusi perangkat lunak dari perspektif bisnis dengan maksud menjaga desain sedekat mungkin dengan dunia nyata. Ini lebih merupakan seni daripada teknik.

MDA memecahkan berbagai masalah yang berbeda. Detail lebih lanjut di sini: http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf


3
2017-11-12 18:47