piątek, 25 października 2013

Wrocław 28 i 29 października

Szybki ogłoszenie:

Zapraszam wszystkich chętnych na otwarte spotkania w najbliższym tygodniu we Wrocławiu

wtorek, 1 października 2013

Przyczyna czy skutek?



Po 6 latach praktykowania DDD, prowadzenia i uczestniczenia w licznych warsztatach i szkoleniach chyba wreszcie zrozumiałem o co chodzi w całym tym Domain Driven Design...

Wszystko dzięki trafiającemu (jak zwykle) w sedno postowi Jarka Żelińskiego: Czy aby na pewno zarządzamy procesami biznesowymi?

Wstęp

Patrząc na warstwową architekturę systemu opartego na DDD mamy:

UI
----------------------
Application (API)
----------------------
Domain Model
----------------------
Infrastructure

(możemy użyć również popularnej ostatnio metafory Heksagonu - ale nie wpływa to na wywód)

W warstwach UI+APPlication możemy możemy mieć zamodelowany proces biznesowy. Ew. szczególnym klientem do API (również obok np apliakcji webowej) może być silnik procesów biznesowych.
W warstwie Domain rezyduje model bazowych reguł biznesu ("fizyki" biznesu) zamodelowany przy pomocy Building Blocks DDD, które chronią niezmienniki. Więcej o BB: DDD krok po kroku.

Problem: Od czego zacząć modelowanie?

Od procesu czy od domeny? Innymi słowy: od ogółu czy od szczegółu?
W Domain Driven Design zaczynamy (niespodzianka) od modelowania warstwy Domain. API i proces to rzecz wtórna.

To zależy...

Jak w każdym nietrywialnym przypadku, odpowiedź  na pytanie zależy od kontekstu.
W przytoczonym na wstępie artykule znajdziemy olśniewającą (przynajmniej dla mnie) wskazówkę:
  • czy proces biznesowy wyłania się z reguł niższego rzędu - innymi słowy model domenowy nakłada ograniczania, które wyznaczają "trajektorię" procesu, który lawiruje pomiędzy nimi niczym strumień rzeki w jej korycie (posługując się metaforą Jarka)
  • czy może to raczej proces narzuca kształt modelowi domenowemu?
W DDD podchodzimy do modelu w ten pierwszy sposób - zaczynamy od domeny, czyli fundamentalnych reguł i ograniczeń, w które wpasowuje się proces.

Trudne pytanie

Po czym poznać z którą sytuacją masz do czynienia? Najpewniej w dużym systemie mamy obie...


//===============================
To w sumie wydaje się oczywiste, ale sztuką jest tak ubrać myśl w słowa, aby (np przez porównanie dwóch podejść) ująć ideę w jednoznaczny sposób.