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ąc o oprogramowaniu nie możemy pominąć kontekstu technologicznego, w
którym ten kurs będziemy przerabiać.
Kurs traktuje o tym, jak tworzyć oprogramowanie sterowane dziedziną,
sterowane domeną, biorące pod uwagę domenę biznesową.
Będziemy musieli tutaj skupić się na konkretnych językach programowania i takim
językiem programowania, który ja wybrałem do tego kursu jest język Ruby.
Dlaczego język? Dlaczego tak hipsterski język?
Z kilku powodów. Po pierwsze, język lubi.
To jest taki język programowania, który powstał, żeby sprawiać
przyjemność programistom.
I twórca tego języka, Yuki Hiro Matsumoto chciał stworzyć taki język, który będzie
jak najbardziej zbliżony do naturalnego języka, wobec czego kod pisany w języku
Ruby bardzo przypomina język angielski.
I dlatego właśnie ten język wybrałem, żeby przykłady, które będę pokazywał
w kolejnych lekcjach, nie odciągał nas w kierunku jakichś detali
technicznych, typów adnotacji i innego tego typu struktur w językach
programowania, żebyśmy mogli się po prostu skupić nad tym, o czym będzie dana lekcja,
o czym będziemy mówić omawiając poszczególne elementy
Domain Driven Design.
Dlatego właśnie język Ruby ze względu na jego przejrzystość i czytelność.
Oprócz tego jest to język, który przez wielu ekspertów uważany
jest za świetny język do.
Domain Driven Design do programowania domowego.
Ze względu na to, że jest on bardzo precyzyjny i bardzo czytelny, o czym już
mówiłem, więc Rubi Rubi to pierwszy aspekt technologiczny, który tutaj spotkasz.
Drugą rzeczą są przykłady w Javie i w tym skrypcie ze względu na to, że są to
Java akurat tutaj jest to język statycznie typowany.
TypeScript nie jest typowo językiem programowania, bazuje na JavaScripcie, ale
też ma statyczne typowanie, więc będziemy się posługiwać interfejsami, które z kolei
nie są dostępne w języku Ruby, a w Javie i tak w skrypcie są i wiadomo, że też więcej
jest programistów frontendu czy programistów backendu,
którzy posługują się Javą lub Frontend owców, którzy posługują się
Java skryptem tym skryptem.
Wobec czego też przygotowałem takie przykłady, które będą zrozumiałe
dla większej liczby studentów.
Z innej strony musimy popatrzeć na to, w jaki sposób aplikacje
komunikują się z bazami danych.
Otóż Domain Driven Design jest to taka metodologia tworzenia oprogramowania,
która nie bierze pod uwagę implementacji bazy danych, nie bierze pod
uwagę komunikacji bezpośredniej z bazą danych, jest agnostykiem.
A jeśli chodzi o bazy danych możemy powiedzieć po angielsku
database agnostyk, tzn.
nie ma znaczenia jaka baza danych jest podpięta do naszego systemu.
W każdej możliwej konfiguracji Domain Driven Design będzie pełniło dokładnie tę
samą funkcję i dawało dokładnie tę samą, jakże wysoką wartość.
I skoro mamy oprogramowanie agnostycy względem bazy
danych, to będzie też agnostycyzm względem frameworków.
Dlatego nie mówiłem tutaj na początku o żadnym frameworku, jeśli chodzi o Ruby.
Czy to jest Rubi on Rails czy ja, jeśli chodzi o Javę, czy to będzie
Spring czy TypeScript.
Jeśli to będzie news lub jakiś framework frontend owy to nie ma znaczenia.
Framework nie ma znaczenia, wystarczy nam czysty język programowania.
Do tego, żeby definiować wymagania biznesowe, definiować elementy domenowe,
definiować wspólnie rozumiany język i po prostu poznać podstawy programowania
sterowanego dziedziną, czyli Domain Driven Design.