Zrozumienie biznesu to klucz do sukcesu programisty
1 godz. 30 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZgłębimy podstawy Domain Driven Design, skupiając się na zrozumieniu, czym jest domena i jakie role pełnią subdomeny w rozumieniu biznesu i projektowaniu oprogramowania. Dowiesz się, jak identyfikować i definiować domenę oraz subdomeny w kontekście biznesowym, co jest kluczowe dla efektywnego modelowania i implementacji systemów.
Skoncentrujemy się na jednym z kluczowych aspektów Domain Driven Design - definiowaniu granic kontekstów (Bounded Contexts). Nauczysz się, jak precyzyjnie wyznaczać te granice, co pozwala na lepszą separację i integrację różnych części systemu. Omówimy, jak wyznaczone granicę wpływają na jasność komunikacji w zespole oraz jak ułatwiają zrozumienie modelu biznesowego.
Spojrzymy na strategiczne wzorce DDD, skupiając się na kluczowych konceptach takich jak Subdomena i Bounded Context. Zrozumienie i umiejętność ich identyfikacji w strukturach biznesowych to podstawowa umiejętność w projektowaniu domenowym. Nie pominiemy też tematów pobocznych jak kontekst schizofreniczny czy Prawo Conwaya. Każdy z tych elementów pomoże Ci lepiej zrozumieć zastosowanie Domain Driven Design w praktyce.
Wzorce taktyczne są fundamentalne dla praktycznego modelowania i implementacji oprogramowania. O ile wzorce strategiczne wyrażają koncepcję, to wzorce taktyczne dotykają, tego, co kochają programiści i programistki czyli kodu. Zobaczysz jak i po co je stosować i jak mogą wspomagać spójność oraz transakcyjność danych.
Wszystko fajnie z tym DDD, ale jak to poukładać? Na to też znalazło się miejsce w kursie. Cały moduł poświęcimy na zapoznanie się z przykładową strukturą, organizacją plików i folderów aplikacji opartej o Domain Driven Design. Nie musisz się już zastanawiać, gdzie upchnąć Twoje klasy. Wszystko stanie się przejrzyste, intuicyjne i oczywiste.
Kurs powstał z myślą o programistach, architektach, liderach technicznych, a także ludziach biznesu, którzy potrzebują pogłębić swoją wiedzę o projektowaniu oprogramowania skoncentrowanego na domenie biznesowej. Niezależnie od tego, czy jesteś na początku drogi z DD, czy masz już trochę doświadczenia i chcesz usystematyzować lub odświeżyć wiedzę - ten kurs jest dla Ciebie!
Mówiłem o tym, że Bandit context to jest pewien zakres, pewna
reprezentacja modelu domeny już wyrażona w opakowaniu reguł biznesowych.
Natomiast wyznaczanie kontekstów to jest naprawdę wielka sztuka i nie bez przyczyny
stoi to u podstaw Domain Driven Design i Domain Design bardzo mocno skupia się na
tym, żeby konteksty zostały dobrze wyznaczone.
Już nie tyle chodzi o wzorce taktyczne, jak prawidłową implementację w kodzie, ale
właśnie identyfikację granic, kontekstów i reguł biznesowych.
I co się stanie, kiedy te reguły i granice nie zostaną odpowiednio wyznaczone?
Otóż powstanie nam coś takiego, co nazywamy kontekstem schizofreniczny.
I ten kontekst schizofreniczny to pewna reprezentacja konfliktu, modeli konfliktu,
modeli domenowych lub logiki w systemie.
Pojawia się wtedy, gdy jakaś część logiki ma reprezentację w więcej
niż jednym kontekście. I taki kontekst schizofreniczny musi np.
wariować.
Jakieś reguły biznesowe za każdym razem, przy każdej operacji.
Czy ta reguła biznesowa aplikuje się do danego zdarzenia, do danej operacji?
A dzieje się tak, ponieważ nie ma jasnych granic.
Są jakieś dane, które zmieniają się w kilku kontekstach naraz.
Są jakieś komunikaty, które są odbierane przez kilka kontekstów naraz
i rozumiane w ten sam sposób.
To będzie oznaczało, że nasze konteksty nie mają jasnych granic.
O wyznaczaniu granic kontekstów będziemy mówić za chwilę, ale właśnie brak tych
granic powoduje powstanie takiego schizofreniczne kontekstu, który nie do
końca wie, czym się zajmuje i czym jest.
Na powstawanie takich kontekstów może wpływać też niespójny język i
terminologia, a więc niedopracowany język.
Wszechobecny będzie z kolei wpływał na to, że nasze konteksty będą nieprecyzyjne,
będziemy mieć za dużo reguł, niesprecyzowane reguły biznesowe,
będzie dużo niewiadomych.
Lub patrząc bardziej na kod po programistycznej stronie będzie tam
wielka ideologia, dużo warunków brzegowych, które będziemy
musieli sprawdzać. I jak wyjść?
Na czym się trzeba skupić przy budowaniu takiego kontekstu?
Przede wszystkim trzeba się skupić na definiowaniu jasnych
granic między kontekstami.
O tym będziemy mówić później.
A jak definiować te granice i jak zmieniać kontekst schizofreniczny w
kierunku bandery kontekstów?
W tym już pomagają nam narzędzia faktoringu i zmieniania naszej
architektury, wydzielania kolejnych kontekstów i definiowania tych granic.
Nie zmienników biznesowych, które już będą zawarte we wzorcach taktycznych, o
czym też będziemy mówić za chwilę.