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!
Po tym wprowadzeniu do domeny każdy programista będzie miał naturalne
skojarzenie z modułami z pakietami.
Może w zależności od języka w jakim programujesz.
Więc musimy tutaj rozróżnić czym różni się domena od modułu.
Więc domena jest to pewien zakres operacji logicznych.
Zbiór biznesowych konceptów i potrzeb, które z którymi mierzy się oprogramowanie.
Natomiast moduł jest już częścią oprogramowania.
Nie jest zbiorem abstrakcyjnych konceptów, ale jest już konkretną implementacją.
Jest zbiorem implementacji i to jest sposób organizacji kodu i funkcjonalności
już wewnątrz oprogramowania.
Moduły są.
Moduły definiują to, jak organizujemy kod, który z kolei spełnia potrzeby
biznesowe zdefiniowane w modelu domenowe.
Więc celem modułu jest organizacja kodu, podczas gdy domena
jest pewną abstrakcją organizującą nam wiedzę.
Moduł ma swoją reprezentację w kodzie.
Moduł jest fizyczną reprezentacją logiki biznesowej.
Moduł jest fizyczną częścią systemu.
Skupia się na implementacji, na wzorcach projektowych, na jakości
kodu, na testowaniu sieci.
To wszystko znajdziemy w obrębie modułu, więc techniczne aspekty i moduł.
Sam moduł jest z kolei używany w modelu domenowe.
Model domenowe niejako definiuje strukturę modułów i moduł tak jak domena.
Jak model domenowe może się zmieniać.
Ale tutaj już moduł może zmieniać się niezależnie od wymagań biznesowych.
Moduł może ewoluować na drodze faktoringu, na drodze potrzeb optymalizacji na
potrzeby wprowadzania wzorców projektowych, wymiany bibliotek.
Moduł zmienia się z przyczyn technologicznych.
Przede wszystkim.
Z kolei model domenowe, który z kolei reflektuje na moduł, zmienia się z potrzeb
biznesowych nie z przyczyn technologicznych, ale
z potrzeb biznesowych.
Domena jest niezależna od technologii, podczas gdy moduł będzie zależny
od nurtów i zmian technologicznych.