Domain-driven design ehk domeenipõhine disain

Domain-driven design (DDD) on tarkvara kujundamise lähenemisviis,
mis keskendub tarkvara modelleerimisele, et see sobiks domeeniga vastavalt selle
domeeni ekspertide sisendile.

DDD on vastu ideele omada singulaarset ühtset mudelit; selle asemel jagab see suure
süsteemi piiratud kontekstideks, millest igaühel on oma mudel.

DDD korral peaks tarkvarakoodi struktuur ja keel (klassinimed, klassimeetodid, klassimuutujad)
ühtima ärivaldkonnaga. Näiteks: kui tarkvara töötleb laenutaotlusi, võivad sellel
olla sellised klassid nagu "laenutaotlus", "kliendid" ja
sellised meetodid nagu "aksepteeri pakkumine" ja "välja võtmine".

Domeenipõhine disain põhineb järgmistel eesmärkidel:

y u no see? buy internet

Domain-driven design-i head ja halvad
Head Halvad
Edendab tõhusat suhtlust domeeniekspertide, arendajate ja sidusrühmade vahel, kasutades ühist keelt. DDD võib tekitada keerukust, eriti suurtes domeenides. Keeruliste ärivaldkondade täpne
modelleerimine nõuab mitmetähenduslikkuse sügavat mõistmist ja hoolikat juhtimist.
Aitab meeskondadel seada prioriteediks rakenduse kõige väärtuslikumad valdkonnad, et saavutada ärieesmärgid. Keerulistes valdkondades võib erinevate mudelite ja piiratud kontekstide joondamine olla keeruline.
Selge suhtlus ja koordineerimine on vastuolude vältimiseks hädavajalikud.
Julgustab kujundusi, mis kohanduvad arenevate ärivajaduste ja turutingimustega. DDD rakendamine võib nõuda uusi tehnoloogiaid ja raamistikke, mis raskendab integreerimist
olemasolevate süsteemidega. Jõudluse ja ulatuse probleemide lahendamine on
eduka kasutuselevõtu jaoks ülioluline.
Säilitab selge vahe domeeniloogika, infrastruktuuri ja kasutajaliidese vahel. Meeskonnaliikmed võivad traditsiooniliste meetodite tundmise tõttu DDD-le vastu seista.
Selle ületamiseks on vaja tõhusat suhtlust ja koolitust DDD eeliste kohta.
Toetab täpselt määratletud domeeniobjekte lihtsamaks ja täpsemaks testimiseks.
Näide ühest case-vahendist mis toetab antud arendusstiili arendusmeeskonnatöös:
Axon Framework: Toetab DDD-d, pakkudes tööriistu sündmustepõhiste arhitektuuride rakendamiseks.

allikad: Wikipedia GeeksforGeeks Perplexity (päringu allikas: softwaremill)