#

TECRÜBEMİZİ YAZILIMCILARLA 

PAYLAŞIYORUZ. 

BİLGİ PAYLAŞTIKÇA ÇOĞALIR

BLOG

Domain Driven Design(DDD)

Domain Driven Design(DDD)

Domain Driven Design(DDD),Türkçe karşılığı anlamını çok karşılamasa da etki alanı güdümlü tasarım olarak adlandırabiliriz. DDD, uygulamayı gelişen bir modele bağlayarak karmaşık ihtiyaçları gidermek için yazılımsal bir yaklaşım olarak tanımlayabiliriz.

Alan odaklı tasarımın amacı şu şekildedir :

#Projenin birincil odağını ana alan ve etki alanı mantığına yerleştirmek.
#Karmaşık tasarımları alan modeline dayandırmak.
#Teknik ve alan uzmanları arasında , belirli alan sorunlarına hitap eden kavramsal bir modeli yinelemek için yaratıcı bir işbirliğini başlatmak .

Domain Driven Design(DDD), Eric Evans tarafından kitap olarak yazılmıştır.Yazar Domain Driven Design(DDD) kitabında , belli başlı kavramlardan bahsetmiştir.Kısaca bu kavramlardan bahsedersek:

Context : Anlamını belirleyen bir sözcüğün veya ifadenin göründüğü ayardır.
Domain : Bir bilgi , etki veya etkinlik alanı. Kullanıcının bir program uyguladığı konu alanı, yazılımın alanıdır.
Model : Bir alanın seçilmiş yönlerini tanımlayan ve bu alanla ilgili sorunları çözmek için kullanılabilen bir soyutlama sistemi.
Ubiquitous Language : Alan modeli etrafında yapılandırılmış ve ekibin tüm aktivitelerini yazılıma bağlamak için tüm ekip üyeleri tarafından kullanılan bir dil.

Stratejik odaklı tasarım ideal olarak, tek bir birleşik modele sahip olmak tercih edilir. Bu asil bir amaç olsa da, gerçekte tipik olarak birden çok modele ayrılır. Bu yaşam gerçeğini tanımak ve onunla çalışmak faydalıdır.

Stratejik Tasarım, model bütünlüğünü sürdürmek, Etki Alanı Modeli'nin damıtılması ve çoklu modellerle çalışmak için bir dizi prensiptir.
Domain Driven Design(DDD) konu olarak sınırlı içeriğe sahiptir ve öyle olmalıdır.Çünkü farklı modellere dayanan kodlar birleştirildiğinde, yazılım buggy, güvenilmez ve anlaşılması güç hale gelir. Takım üyeleri arasındaki iletişim kafa karıştırıcı olur. Bir modelin hangi bağlamda uygulanmaması gerektiği genellikle net değildir.Bu nedenle bir modelin geçerli olduğu bağlam açıkça tanımlanır.

Eric Evans'ın Domain Driver Design kitabından kısaca bahsedersek yazar kitabıın kapağında başlığın altında " Yazılımın Kalbinde Karmaşıklıkla Başa Çıkmak" deyimiyle kitabın amacını tek bir söz deyimiyle tanımlamış dersek yanılmış olmayız. DDD, belirli teknolojilerle ilgili bir kitap değildir. Okuyuculara, alan odaklı tasarım için sistematik bir yaklaşım sunar ve kapsamlı bir dizi tasarımın en iyi uygulamalarını, deneyime dayalı teknikleri ve karmaşık alanlarla karşılaşan yazılım projelerinin geliştirilmesini kolaylaştıran temel ilkeleri sunar. Intertwining tasarım ve geliştirme uygulaması gibi alan odaklı tasarımı gerçek dünya yazılımı ile geliştirme uygulamalarını göstermek için gerçek projelere dayalı sayısız örnek içerir.

Okuyuculara, karmaşık geliştirme çabasını daha odaklı ve dinamik hale getirmek için bir alan modeli kullanmayı öğretir. En iyi uygulamaların ve standart kalıpların bir temeli, geliştirme ekibi için ortak bir dil sağlar. Sadece kodun değil, kodun temelini oluşturan modelin vurgulanması , Agile gelişiminin sık yinelemeleri ile birlikte, alan uzmanları ve programcılar arasındaki iletişimin daha derinlemesine ve daha iyi bir kavrama yol açmasına yol açar.
 Domain-Driven Design daha sonra bu temele dayanır ve karmaşık sistemler ve daha büyük organizasyonlar için modelleme ve tasarımı ele alır.

 Bu kitapla, nesne tabanlı geliştiriciler, sistem analistleri ve tasarımcılar, işlerini organize etmek ve odaklamak, zengin ve kullanışlı alan modelleri oluşturmak ve bu modelleri kaliteli ve uzun süreli yazılım uygulamalarına dönüştürmek için ihtiyaç duydukları rehberliğe sahip olacaklar.

Kaynakçalar ;

Tanım ve kavramlar için : https://www.wikipedia.org
Kitap hakkında bilgi ve özeti için : https://www.kobo.com