Na úvodnom stretnutí si zladíme spoločný pohľad na kvalitu dizajnu, na postupy a technológie. Dohodneme sa na spoločných témach, ktoré nás zaujímajú, a ktorým sa chceme venovať. Určite máš aj ty skúsenosti, o ktoré sa vieš podeliť. A ak nie, tak si zase môžeš vypočuť skúsenosti ostrieľanejších kolegov z fachu.
Návrh architektúry veľkých softvérových riešení naráža na niekoľko zásadných komplikácií: komplikovanosť domény, technologická komplexita, náročnosť procesu vývoja softvéru a neustály proces zmien. Vývojárske tímy sa snažia zvládnuť tieto komplikácie rôznymi taktikami, nástrojmi, knižnicami a prístupmi.
Snaha zvládnuť komplikovanosť domény viedla k vytvoreniu tzv. „Domain Driven Designu“. Autor tejto myšlienky – Eric Evans – ju podrobne popísal vo svojej knihe „Domain-Driven Design: Tackling Complexity in the Heart of Software“. Základná filozofia je veľmi jednoduchá: vývoj softvéru by mal mať ambíciu udržať spoločný jazyk. Pojmy, ktoré používa doménový expert, musí v rovnakom význame a rovnakým spôsobom používať aj každý člen vývojárskeho tímu: od analytika cez architekta, programátora až po testera. Na to, aby programátor používal rovnaké pojmy ako doménový expert, musia tieto pojmy nájsť svoj obraz priamo v zdrojovom kóde. Eric Evans vyjadruje v knihe presvedčenie, že objektový model domény dokáže vo väčšine prípadov ideálne zachytiť pojmy tak, ako v doméne skutočne existujú.
Ukazuje sa, že kľúčový pojem z DDD – „Bounded Context“ – je dôležitým výstavbovým prvkom modernej architektúry v štýle Microservices. Vytváranie služieb vyžaduje, aby navrhované moduly boli čo najviac kohézne. Nevhodné spájanie a najmä rozdeľovanie služieb, ktoré nerešpektuje hranice vytýčené Bounded Contextom, vedie k postupnému rozkladu a zlyhaniu architektúry využívajúcej microservices.
Domain Driven Design sa výborne dopĺňa aj s ďalšími modernými prístupmi k tvorbe softvéru ako je agilný vývoj, test driven development, dizajn patterny a funkcionálne programovanie.