Čo je to doménovo riadený dizajn?
Jednoducho povedané, jedná sa o agilný prístup k analýze a návrhu softvéru. Ide o koncept, ktorý by mal štruktúru a jazyk softvéroveho kódu zjednocovať so zadanou obchodnou doménou.
Príklad – ak je softvér zameraný na pôžičkové aplikácie, môže mať triedy ako LoanApplication či Customer, a triedy ako AcceptOffer alebo Withdraw.
Doména
Ide o najdôležitejšiu časť DDD a ide o oblasť, ktorú rieši daný softvér (napríklad predaj áut či účtovníctvo). Každá z nich má svoj vlastný, špicifický doménový jazyk. Je dôležité, aby bol softvér jasným odrazom konkrétnej domény.
Vďaka efektívnej komunikácii pri využívaní DDD, dokážete lepšie nasmerovať svoj team. Dôležitosť samozrejme rastie veľkosťou tímu, ktorý by mal pozostávať z doménových expertov, analytikov a vývojárov. Kľúčové rozhodnutia pri tom robia všetky skupiny.
Doménový jazyk je v tomto obore prirodzeným používaným jazykom. Dokáže eliminovať synonymá (napr. úroková miera / úroková sadzba), definuje termíny (napr. úroková miera / úroková sadzba = úroková miera), eliminuje nedorozumenia.
Model DDD nechápe doménu ako nejaký diagram, ale ako znalosť o doméne, ktorú obsahuje.
Podľa DDD existuje 5 doporučení, ako efektívne modelovať doménu:
1. Zviazanie modelu a implementácie. Model bez možnosti implementácie je v oblasti komerčného software úplne zbytočný, a implementácia, ktorá nie je založená na danom modele veľmi jednoducho skĺzne k riešeniu problémov, ktoré sú mimo odbor domény.
2. Model odráža jazyk doménových expertov. Aby model mohol počas celého vývoja odrážať skutočnosti zvolenej domény, vo všetkých jeho variáciách je potrebné používať zhodný jazyk, ktorý vychádza z jazyka doménových expertov.
3. Model zachytáva znalosti. Objekty modelu nie sú iba danou dátovou schémou, v modeli musíme zachytiť chovanie objektov a pravidlá domény.
4. Destinácia modelu. Model sa behom vývoja neustále mení, teda doň integrujeme nové, objavené koncepty domény a odstraňujeme alebo poupravujeme tie, ktoré sa ukazujú ako nepotrebné.
5. Komunikácia a experimentovanie. Model je predmetom komunikácie medzi doménovými expertmi a ďalšími vývojármi. DDD zavádza pojem ubiquitous language (tzv. „všadeprestupný“ jazyk), ktorý preväzuje jednotlivé reprezentácie daného modelu a umožňuje mu komunikovať so všetkými skupinami.
Ubiquitous language
Môžeme ho chápať ako zdieľaný slovník, ktorý obsahuje všetky termíny vzťahujúce sa k doméne, pre ktorú je určený vyvíjaný softvér. DDD nešpecifikuje žiadnu formu slovníka a necháva to na vývojároch.