Jawaban:
Pertama, jika Anda tidak tahu bahwa Anda membutuhkannya, mungkin saja Anda tidak membutuhkannya. Jika Anda tidak mengenali masalah yang dipecahkan DDD maka mungkin Anda tidak memiliki masalah tersebut. Bahkan pendukung DDD akan sering menunjukkan bahwa DDD hanya ditujukan untuk proyek besar (> 6 bulan).
Dengan asumsi bahwa Anda masih membaca pada saat ini, pendapat saya tentang DDD adalah ini:
DDD adalah tentang mencoba menjadikan perangkat lunak Anda model dari sistem atau proses di dunia nyata. Dalam menggunakan DDD, Anda harus bekerja sama dengan pakar domain yang dapat menjelaskan cara kerja sistem dunia nyata. Misalnya, jika Anda mengembangkan sistem yang menangani penempatan taruhan pada pacuan kuda, pakar domain Anda mungkin seorang pembuat taruhan berpengalaman.
Antara diri Anda dan pakar domain, Anda membangun a bahasa di mana mana (UL), yang pada dasarnya merupakan deskripsi konseptual dari sistem. Idenya adalah Anda harus dapat menuliskan apa yang dilakukan sistem dengan cara yang dapat dibaca oleh pakar domain dan memverifikasi bahwa itu benar. Dalam contoh taruhan kami, bahasa di mana-mana akan mencakup definisi kata-kata seperti 'ras', 'taruhan', 'peluang' dan sebagainya.
Konsep-konsep yang dijelaskan oleh UL akan membentuk dasar dari desain berorientasi objek Anda. DDD memberikan beberapa panduan yang jelas tentang bagaimana objek Anda harus berinteraksi, dan membantu Anda membagi objek Anda ke dalam kategori berikut:
DDD juga merekomendasikan beberapa pola:
Sekarang, pada titik ini saya harus mengatakan bahwa jika Anda belum pernah mendengar hal-hal ini sebelumnya, Anda tidak boleh mencoba menggunakan DDD pada proyek apa pun yang Anda miliki tenggat waktunya. Sebelum mencoba DDD, Anda harus terbiasa dengan pola desain dan pola desain perusahaan . Mengetahui hal ini membuat DDD jauh lebih mudah untuk dipahami. Dan, seperti yang disebutkan di atas, ada pengantar gratis untuk DDD tersedia dari InfoQ (di mana Anda juga dapat menemukan pembicaraan tentang DDD).
Ambil contoh StackOverflow. Alih-alih mulai mendesain beberapa formulir web, Anda lebih berkonsentrasi untuk melakukan pemodelan berorientasi objek dari entitas dalam domain masalah Anda, misalnya Pengguna, Pertanyaan, Jawaban, Suara, Komentar dll. Karena desain didorong oleh detail masalah. domain itu disebut desain berbasis domain .
Anda dapat membaca lebih lanjut di buku Eric Evans .