- DDD (Domain Driven Design) Nedir?
- DDD (Domain Driven Design) Niçin Kullanılır?
- DDD (Domain Driven Design) Ne Zaman Kullanılır?
- DDD (Domain Driven Design) Anahtar Öğeler
- DDD (Domain Driven Design) Artıları Eksikleri
- DDD (Domain Driven Design) Örnek Senaryo
DDD (Domain Driven Design) Nedir?
Domain Driven Design (Etki Alanına Yönelik Tasarım – DDD), Business entities (iş varlıkların) davranışlarını, etkileşimlerini ve business domain (iş alanı) etrafında yazılım sistemleri tasarlamaya odaklanan bir yazılım geliştirme yaklaşımıdır.
DDD, çözüme gidilen business problem (iş problemin) derinlemesine anlaşılmasının, etkili yazılım çözümleri oluşturmak için gerekli olduğu fikrine dayanmaktadır. Bu model ile Geliştiriciler, business experts (iş uzmanları) ve developers (geliştiriciler) arasında ortak bir dil oluşturarak ve yazılım tasarımında domain (etki alanını) modelleyerek, sorunu daha derinden anlayabilir ve daha etkili bir çözüm üretebilir.
DDD’nin amacı, daha sürdürülebilir, genişletilebilir ve iyi organize edilmiş bir yazılım oluşturmaktır. DDD, bu yaklaşımı kullanarak yazılım tasarlamak ve uygulamak için bir dizi pattern ve best practies sağlar. Bu pattern lar, entities (varlıklar), value objects (değer nesneleri), aggregates (alanlar), repositories (depolar), domain events (etki alanı olayları) ve domain services (etki alanı hizmetleri) gibi kavramları içerir.
NOT: “DOMAIN”, Yazılım mühendisliği alanındaki uygulamanın üzerine inşa edilmesi amaçlanan iştir.
DDD (Domain Driven Design) Niçin Kullanılır?
DDD, geliştirme ekibinin business domain (iş alanını) ve karmaşıklıklarını doğru bir şekilde yansıtan yazılımlar oluşturmasını sağlar. Ayrıca, sistemi tartışmak için kullanabilecekleri ortak bir dil oluşturarak iş uzmanları ve yazılım geliştiriciler arasındaki iletişimi geliştirmeye yardımcı olur. DDD, yazılımı domain etrafında modelleyerek daha sürdürülebilir ve esnek bir kod tabanı oluşturmaya da yardımcı olur.
NOT: Ne istediğini bilmek müşterinin işi değildir! Onu doğru yönlendirmek yazılımcının görevidir.
DDD (Domain Driven Design) Ne Zaman Kullanılır?
DDD, birden çok business domains (iş alanını), karmaşık iş mantığını veya zaman içinde gereksinimlerde önemli değişiklikleri içeren karmaşık sistemler oluştururken çok fayda sağlar. Ayrıca, business domain (iş alanı) iyi anlaşılmadığında ve geliştirme ekibinin, yazılımın ihtiyaçlarını karşıladığından emin olmak için iş uzmanlarıyla yakın işbirliği yapması gerektiğinde de yararlıdır.
NOT: Yazılım geliştirirken odak noktamız öncelikle teknoloji olmamalı, bunun yerine öncelikli olarak business (iş) olmalıdır.
DDD (Domain Driven Design) Anahtar Öğeler
- Ubiquitous Language (Her yerde bulunan dil)
- Bounded Contexts (Sınırlandırılmış bağlamlar)
- Aggregates
- Entities ve Value Objects
- Domain Events
- Repositories
DDD (Domain Driven Design) Artıları Eksikleri
Artıları
- İş uzmanları ve geliştirme ekibi arasında gelişmiş anlayış ve iletişim.
- Daha sürdürülebilir ve esnek kod tabanı.
- Sistemin farklı bölümleri arasındaki ilgili alanların daha net bir şekilde ayrılması.
- Daha test edilebilir kod.
- Geliştirilmiş kod kalitesi.
Eksileri
- DDD, sisteme karmaşıklık ekleyebilir ve geliştirilmesi için daha fazla zaman gerektirebilir.
- Domain’i doğru bir şekilde modellemek ile pratik bir yazılım sistemi oluşturmak arasında bir denge bulmak zor olabilir.
- DDD’yi etkili bir şekilde öğrenmek ve uygulamak için önemli bir zaman ve çaba yatırımı gerektirir.