Technology

Apa itu Domain Driven Design?

Dianty Anggraini Putri
August 10, 2017

Share

DDD

DDD adalah metode pengembangan software menggunakan dan membangun berdasarkan gagasan dan ide OOAD (Object Oriented Analysis and Design). 

Apa itu domain?

Untuk menentukan desain berbasis domain, pertama-tama kita harus menetapkan apa yang dimaksud dengan domain dalam konteks ini (dan dalam pengembangan pada umumnya). Definisi kamus dari domain adalah: "Bidang pengetahuan atau aktivitas." domain pada rekayasa software biasanya mengacu pada area subjek dimana aplikasi dimaksudkan untuk diterapkan. Dengan kata lain, selama pengembangan aplikasi, domain adalah "bidang pengetahuan dan aktivitas seputar logika aplikasi.

 

Apa itu Desain Berbasis Domain?

 Awalnya diperkenalkan dan dipopulerkan oleh pemrogram Eric Evans dalam bukunya tahun 2004, Desain Berbasis Domain: Mengandung Kompleksitas pada Inti Perangkat Lunak, desain berbasis domain adalah perluasan dan penerapan konsep domain, karena berlaku untuk pengembangan software. Ini bertujuan untuk memudahkan pembuatan aplikasi yang kompleks dengan menghubungkan potongan software yang terkait menjadi model yang selalu berkembang. DDD berfokus pada tiga prinsip utama:

  • Fokus pada domain inti dan logika domain.

Desain dasar yang kompleks pada model domain. Terus berkolaborasi dengan pakar domain, untuk memperbaiki model aplikasi dan menyelesaikan masalah terkait domain yang muncul. Evans 'Domain-Driven Design lebih jauh mendefinisikan beberapa istilah umum yang berguna saat menjelaskan dan membahas praktik DDD:

Konteks: Pengaturan di mana sebuah kata atau pernyataan muncul yang menentukan maknanya. Pernyataan tentang model hanya bisa dipahami dalam konteks tertentu.

Model: Suatu sistem abstraksi yang menggambarkan aspek-aspek tertentu dari domain dan dapat digunakan untuk memecahkan masalah yang terkait dengan domain tersebut.

Ubiquitous Language: Bahasa yang terstruktur seputar model domain dan digunakan oleh semua anggota tim untuk menghubungkan semua aktivitas tim dengan perangkat lunak.

Konteks Bounded: Deskripsi tentang batas (biasanya subsistem, atau pekerjaan tim tertentu) yang menentukan model tertentu dan dapat diterapkan.

 

DDD

Building Blocks

Desain berbasis domain juga mendefinisikan sejumlah konsep tingkat tinggi yang dapat digunakan bersamaan satu sama lain untuk membuat dan memodifikasi model domain:

  • Entity
  • Value Object
  • Domain Event
  • Aggregate
  • Service
  • Repositories
  • Factories

Desain berbasis domain juga sangat menekankan praktik integrasi terus-menerus yang selalu populer, yang meminta seluruh tim developer untuk menggunakan satu repositori kode bersama dan mendorongnya melakukannya setiap hari (jika tidak beberapa kali dalam sehari). Proses otomatis dijalankan pada akhir hari kerja, yang memeriksa integritas seluruh basis kode, menjalankan tes unit otomatis, tes regresi, dan sejenisnya, untuk segera mendeteksi masalah potensial yang mungkin telah diperkenalkan dalam usaha terbaru.

 

DDD 

Keuntungan dari Desain Domain-Driven

- Meringankan Komunikasi

- Meningkatkan Fleksibilitas

- Menekankan Domain Over Interface

 

Kekurangan Desain Domain-Driven

- Memerlukan Keahlian Domain yang Kuat

- Mendorong Praktek Iteratif

- Proyek Teknis

 

Inspired by: https://airbrake.io

Images sources: Freepik

 

Comments