Domain Driven Design (DDD)

Mateusz Juźwik
27 lipca 2023
Czas czytania: 2 minut

Spis treści

Domain Driven Design (DDD) – co to jest?

Domain Driven Design (DDD) to podejście do projektowania oprogramowania, które skupia się na modelowaniu i organizacji systemu w oparciu o struktury i zasady związane z dziedziną problemową, czyli konkretną branżą lub obszarem wiedzy, dla której system jest tworzony. DDD opiera się na współpracy między ekspertami dziedziny a programistami w celu opracowania spójnego i użytecznego modelu dziedziny, który odzwierciedla rzeczywistość biznesową. W DDD, kluczowym elementem jest język dziedziny (ang. Ubiquitous Language), który jest wspólnym słownictwem używanym przez wszystkich uczestników projektu. To oznacza, że nasz kod jest czytelny dla osób związanych z konkretną dziedziną biznesową.

 

W DDD tworzymy więc modele dziedzinowe, które są odpowiedzialne za reprezentację kluczowych pojęć w dziedzinie biznesowej. Na przykład, jeśli projektujemy system bankowy, moglibyśmy stworzyć modele dla klienta, konta, transakcji itp. Modele te zawierają właściwości, które odzwierciedlają atrybuty tych obiektów oraz metody, które definiują ich zachowanie.

Jedną z kluczowych zasad DDD jest agregacja. Agregaty to grupy powiązanych ze sobą obiektów, które stanowią jedną spójną jednostkę. Na przykład, jeśli mamy model dla klienta bankowego, to możemy agregować konta klienta wewnątrz tego modelu. Agregat jest odpowiedzialny za utrzymanie spójności wewnętrznej, a zmiany w agregacie są dokonywane przez specjalne metody, które kontrolują te zmiany.

 

DDD korzysta również z tzw. repozytoriów, które służą do przechowywania i odzyskiwania obiektów dziedzinowych. Repozytorium jest interfejsem, który definiuje operacje CRUD (Create, Read, Update, Delete) dla naszych modeli. Repozytorium ukrywa szczegóły dotyczące sposobu przechowywania danych i pozwala nam pracować z modelami w sposób uproszczony.

 

Weź udział w szkoleniu (Nie-)Techniczny PM II

 

Innym ważnym aspektem DDD jest oddzielenie warstw. Warstwa dziedziny biznesowej, która zawiera nasze modele, powinna być oddzielona od innych warstw takich jak warstwa interfejsu użytkownika, warstwa dostępu do danych itp. To pozwala na elastyczne zmiany w naszej dziedzinie biznesowej bez konieczności wpływania na inne części systemu.

 

Domain Driven Design to podejście projektowe, które pomaga tworzyć lepiej zorganizowane i bardziej skalowalne systemy informatyczne, poprzez koncentrację na dziedzinie biznesowej.

Może Cię zainteresować

(Nie-)Techniczny PM I

Szkolenie online

PMasters Toolbox

Karty dobrych praktyk