Domain-Driven Design - Język Wszechobecny.

17.07.2017


Artykuł ten jest częścią serii artykułów na temat Domain-Driven Design.

Agenda

1. Wstęp.
2. Język Wszechobecny.
3. Izolacja przy pomocy warstw.
4. Podstawowe części składowe.
5. DDD i jego życie.
6. Nadejszła wiekopomna chwiła.


Wstęp

Domain-Driven Design

Odwiecznym problemem jaki napotykają na swojej drodze dwie ścierające się siły: zlecający i wykonawca, jest wzajemna komunikacji i zrozumienie. Problem narasta gdy obie persony obracają się w odseparowanych środowiskach. Przykładem takiej sytuacji jest klient (Ekspert Domenowy, eng. Domain Expert) definiujący wymagania aplikacji i wykonawca (np.: zespół programistów, programista).

Dobrym przykładem takiej sytuacji jest często komunikacja pomiędzy kobietą i mężczyzną wprowadzająca zamęt, poprzez niejednoznaczne rozumienie wypowiadanych słów.

Specyfika obszarów zainteresowania zawodowego obu osób przeważnie jest tak odległa, iż wzajemne zrozumienie/przekazanie specyfikacji produktu do wykonania skutkuje powstaniem wielu nieścisłości i zgrzytów. Obie osoby zazwyczaj rozmawiają z wykorzystaniem odmiennych zestawów definicji nie mających ze sobą zbyt wiele wspólnego.

Język Wszechobecny (eng. Ubiquitous Language)

Z pomocą przychodzi metoda wytwarzania oprogramowania Domain-Driven Design

Otóż nie jest to jedynie architektura. Zawiera w sobie wiele definicji co do kultury pracy w projekcie zarówno od strony definiującego/weryfikującego wymagania. a także ich realizatora.

Domain-Driven Design - Ubiquitous Language

Jednym z jej aspektów jest wykreowanie tak zwanego Języka Wszechobecnego (eng. Ubiquitous Language), zmieniającego sposób komunikacji pomiędzy osobą wymagającą, a realizującą. Wprowadza wspólnie ustalony zestaw słów/definicji  w formie żargonu. Tym samym podnosi się jakość wzajemnej komunikacji poprzez zrozumienie istoty wymagań i problemów jakie zaistnieją w trakcie realizacji projektu.

Opracowanie słownictwa Języka Wszechobecnego poprzez wspólną analizę dziedziny i dojście  do konsensusu nazewnictwa poszczególnych elementów, pozytywnie wpływa  na współpracę i kulturę pracy  w zespole.

Ubiquitous Language

Słownictwo języka wszechobecnego powinno bazować na Modelu Domeny (eng. Domain Model). Skutkuje to wykorzystaniem zdefiniowanych pojęć, w każdym aspekcie projektu. Od modelowania klas po dokumentację i komunikację dotyczącą projektu. Zespół powinien weryfikować wprowadzone pojęcia w celu eliminacji błędnych sformułowań. Dobrą praktyką jest wypowiadanie pojęć na głos, łatwiej będzie wówczas wyłapać dziwne sformułowania.

Język Wszechobecny (eng. Ubiquitous Language) jest ściśle związany z Modelem Domeny/Dziedziny (eng. Domain Model), dlatego wprowadzanie zmian w żargonie niesie ze sobą potrzebę zmiany modelu i odwrotnie

Projektując i budując aplikację często napotykamy na problemy związane z  określeniem punktu wspólnego tematyki jakiej poruszał projekt.  W pewnym sensie także nazewnictwo zostało narzucone przez przełożonych bądź w przeciwną stronę.

Nadmieniam, tutaj iż głoszę swój osobisty punkt widzenia i sposób prezentacji wiedzy. A jako że nie jestem nieomylny, to mogą i zapewne będą zdarzać się błędy…

Polecane książki

Domain Storytelling: A Collaborative, Visual, and Agile Way to Build Domain-Driven Software

Domain Storytelling: A Collaborative, Visual, and Agile Way to Build Domain-Driven Software

Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy

Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy

Domain-Driven Design. Zapanuj nad złożonym systemem informatycznym

Domain-Driven Design. Zapanuj nad złożonym systemem informatycznym

DDD dla architektów oprogramowania

DDD dla architektów oprogramowania

Hands-On Domain-Driven Design with .NET Core - Tackling complexity in the heart of software by putting DDD principles into practice

Hands-On Domain-Driven Design with .NET Core - Tackling complexity in the heart of software by putting DDD principles into practice

EventStorming - An act of deliberate collective learning

EventStorming - An act of deliberate collective learning

DDD: Kompendium wiedzy

DDD: Kompendium wiedzy


Wcześniejszy artykuł: Domain-Driven Design - Wstęp.

Następny artykuł: Domain-Driven Design - Izolacja przy pomocy warstw.


Zapisz się na listę :)