1- Ubiquitous Language
- 
Yazilim ekibi ile Domain Expert arasindaki ortak iletisim
- Herseyin karsiligi olmasi gerekir.
 - Ayrintilar gundemde olmalidir.
 - Kullanilan dil iyilestirilmelidir.
 - Ornekler somut olmalidir.
 - Amaci anlatmalidir.
 
 
2- Bounded Context - Context Mapping
- 
DDD tasarimi kisminda en merkezi prensiptir.
- Bir domain subdomain ler icerebilir ve icermelidir.
- Siparis , Musteri, Kullanici, Urun, Stok..
 
 - Kendi iclerindeki tutarlilik ve butunluk olmalidir.
 - Domain Specific Language
 - Bounded Context' ler birbirleri ile iletisim kurabilir !
 - Context Mapping - Bounded Context Kesisim noktalari ve iletisim mimarisi
 
 - Bir domain subdomain ler icerebilir ve icermelidir.
 
3- Entity & Value Object, Aggregate Root
- 
Domain imizi modelleme kismindaki en sık kullanilan kaliplar
- Entity -> Kimlige sahip objeler (id)
 - ValueObject -> Kimlige sahip degillerdir (DTO)
 - Aggregate Root -> Icerisinde birbiri olmadan dusunulemez objeleri barindirir. Birbirleri olmadan, olmalarinin bir anlami olmayan objelerdir.
- Transaction butunlugu
 - Iliskili objeler
 - Is kurallari
 
 
 
4- Services - Repository - Infrastructure
- 
Is kurallarinin isletilmesi ve ciktilari yonetmek icin kullanilan bolumlerdir.
- Services -> Is kurallari ve dogrulama islemleri icin kullanilir.
 - Repository -> Bazi kurallar ile birlikte Aggregate - DB iletisimi icin kullanilirlar.
 
 
5- Layered Architecture
- 
Dort katmanli mimari DDD nin en temel kavramlarindandir.
- Domain Layer
 - Application Layer
 - Infrastructure Layer
 - Presentation Layer
 
 
6- Refactoring, Clean & Readable Code
- Sadece anlik gorevi degil, geneli iyilestirmeyi hedefler.