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!
Zanim konkretnie omówimy części składowe Domain Driven Design, musimy odpowiedzieć
sobie na pytanie po co stosować te metodologie?
Dlaczego Domain Driven Design w Twoim projekcie?
Domain Driven Design jest to metodologia, która koncentruje się na potrzebach
biznesowych i na komunikacji z biznesem na komunikację między
programistami a biznesem.
A efektywna komunikacja to przede wszystkim język.
A jeśli chcemy mieć wspólny język, to musimy utworzyć taki zestaw pojęć i
terminologii, który będzie jednakowo rozumiany przez obie strony, przez stronę
biznesową, nie techniczną, jak i przez stronę techniczną, czyli po prostu przez
programistów dział nazwijmy to produktowy.
I ta strona produktowa będzie miała często pokusę, żeby stosować
nomenklaturę technologiczną.
My, programiści lubimy operować trudami, operować kontrolerami, modelami, stosami,
emocjami i innego tego typu słownictwem, które jest czysto technologiczne.
Biznes nie rozumie, co to jest record w bazie danych, co to jest indeks.
Biznes nie będzie się tym interesował, bo domeną biznesu jest skupienie się na
problemach i na rozwiązywaniu problemów biznesowych oraz na tym, żeby tak
projektować produkt, aby przynosił on wartość klientom.
Programiści skupiają się z kolei na tym, żeby te wymagania biznesu przekuć na kod.
Dlatego tak ważny jest wspólny język i.
Domain Driven Design to metodologia, która narzuca nam albo wymusza stworzenie tego
wspólnego języka pomiędzy biznesem a programistami.
Wspólny język stanowi pewien pomost, stanowi zestaw pojęć, który tak
programiści, jak i część biznesowa rozumieją w ten sam sposób.
Kolejnym aspektem jest koncentracja na tych potrzebach biznesowych.
Odchodzimy tutaj od projektowania aplikacji w taki sposób, aby to te
techniczne drivery decydowały o jej strukturze.
Nie będziemy tutaj szli w architekturę warstwową, w której możemy mieć np.
architekturę typu MVC, gdzie mamy modele, widoki, kontrolery.
Będziemy tworzyć bardziej złożoną strukturę, złożoną strukturę, która z
kolei będzie miała mocne odwzorowanie w biznesie.
Albo to inaczej biznes będzie miał odwzorowanie w strukturze, bo my jako
programiści w Domain Driven Design będziemy koncentrować się na realizacji i
odwzorowaniu jak najwierniejszym odwzorowaniu reguł biznesowych i
potrzeb w kodzie Domain Driven Design.
Ze względu na to, że koncentruje się na domenie, na potrzebach biznesowych,
Umożliwia łatwiejsze zarządzanie złożonością projektu.
Nie potrzebujemy przebijać przez warstwy, które narzuca nam technologia, ale
jesteśmy w stanie nawigować się pomiędzy biznesowymi pojęciami,
które są zakodowane.
Będziemy mieć nomenklaturę biznesową w kodzie.
Będziemy mieć wydzielone konteksty biznesowe, które będą miały z kolei
odwzorowanie w strukturze klas i w strukturze danych.
Skalowalność i złożoność tego systemu będzie łatwiejsza do zarządzenia, bo
będzie odwzorowywać niejako strukturę organizacji, a co za tym idzie
zyskamy pewną spójność danych.
Bo złożoność, która jest dobrze zarządzana charakteryzuje się stabilnością
i spójnością danych.
Jednym z ważnych aspektów projektowania sterowanego domeną jest
identyfikacja zdarzeń biznesowych.
To zdarzenia biznesowe będą wyznaczać nam operacje logiczne w aplikacji.
Wreszcie umożliwia to strategiczne planowanie ze względu na to, że
to biznes przychodzi z potrzebami.
I programiści są niejako częścią tego biznesu i mówią tym samym językiem.
Strategiczne planowanie do przodu, tworzenie kontekstów będzie o wiele
prostsze dzięki Domain Driven Design, a co za tym idzie jesteśmy w stanie wydzielać
autonomiczne konteksty, które wykonują pewne powtarzalne, modelowe operacje.
I te operacje, te zestawy operacji, zestawy struktur, klas, struktur kodu
będą mogły stanowić używane rozwiązania.
Wiele jest systemów typu e-commerce, np.
do zarządzania projektami, do zarządzania flotą, gdzie pewne operacje, pewne
konteksty są bardzo podobne lub są niemalże jednakowe np.
invisible, wystawianie faktur, jeden Jeden moduł do wystawiania faktur może stanowić
używane rozwiązanie w różnych systemach i być wykorzystywany w ten sam sposób.
Na koniec metodologia Domain Driven Design nie istniałaby bez współpracy programistów
z biznesem i głównie ta współpraca stanowi podstawę skuteczności implementacji Domain
Driven Design jako drivera architektonicznego jako
wyznacznika architektury oprogramowania.