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!
Innym skojarzeniem, jakie może nasuwać się programiście słysząc hasło
domena jest słowo feature.
Czym się różni domena od funkcjonalności?
Od funkcji systemu?
A więc feature to jest specyficzna funkcja systemu.
Jest to konkretna implementacja, ale z kolei wyrażenie wymagań biznesowych w
postaci konkretnej funkcjonalności feature jest dostarczanym elementem.
Jest tym, co składa się na spełnienie wymagań biznesowych domeny.
Feature pokrywa mały zakres operacji logicznych, np.
logowanie, np.
generowanie koszyka.
To jest mały zakres operacji logicznych, który wchodzi w skład szerszej domeny,
wchodzi w skład spełniania tych operacji, spełniania potrzeb biznesowych domeny.
Więc ficzery z kolei mogą być opakowane w moduły i feature jest wynikiem
wdrożenia konkretnych wymagań.
W Scrumie powiemy, że tworzymy user Stories.
Historia użytkowników i feature jest taką implementacją historii użytkownika,
implementacją konkretnego wymagania, podczas gdy domena jest zbiorem zbiorem
tych wymagań i feature, podobnie jak moduł może być modyfikowany niezależnie od
domeny, bo samo generowanie koszyka wchodzi w skład domeny e-commerce.
Natomiast koszyk może wyglądać inaczej, może zmieniać się metoda płatności, mogą
zmieniać się sposoby wyświetlania koszyka, może zmieniać się sposób percepcji koszyka
i to będzie wchodziło w skład modyfikacji feature u.
Podczas gdy nasz model domenowe jest cały czas niezmienny i feature to jest to, co
wchodzi w bezpośrednie interakcje z użytkownikami.
Użytkownik ma bezpośredni dostęp do funkcjonalności, które
wyrażają model domenowe.
Użytkownik nie jest zainteresowany modelem domenowe np.
eCommerce, gdzie mamy inventory, gdzie mamy kary, gdzie mamy listę produktów,
gdzie mamy produkt, katalog pricing itd.
Użytkownik jest zainteresowany kupnem produktu feature em, a nie
całym modelem domen owym.
To jest ta różnica między domeną, która jest aspektem bardziej abstrakcyjnym,
zbiorem abstrakcyjnych założeń, a feature, który jest konkretną implementacją
dostępną dla użytkownika.