02-08-2022
Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML
Pierwszy raz miałam styczność z tą książką na początku 2021 roku. Zafascynował mnie w tamtym czasie rozdział pod tytułem „Party”. Wbrew pozorom nie chodzi tutaj o jakąś imprezę 😉 W tym rozdziale autorzy opisują „wzorzec Party”. Też byłam zaskoczona, że coś takiego jest 😀 Jednakże ta książka to więcej niż tylko ten jeden rozdział który pobudził moje zainteresowanie.
Dla kogo książka?
- jeśli tworzysz CRM,
- jeśli Twoja aplikacja opiera się na sprzedaży produktów/usług,
- masz w systemie klientów (osoby/firmy),
- w systemie wykorzystywany jest pieniądz,
- masz jakieś reguły,
- i w sumie dla każdego kto chce poszerzyć wiedzę 😉
O czym jest ta książka?
Książka jest zbiorem wzorców, ale nie takich jak Fabryka, Obserwator itp., tylko wzorców trochę większych.
Co mam na myśli poprzez „trochę większych”?
W książce znajdziemy takie rozdziały ze wzorcami:
- Party archetype pattern
- PartyRelationship archetype pattern
- Customer relationship management archetype
- Product archetype pattern
- Inventory archetype pattern
- Order archetype pattern
- Quantity archety pattern
- Money archetype pattern
- Rule archetype pattern
Zanim przejdziemy dalej pozwolę sobie tutaj przytoczyć definicję archetypu według autorów:
An archetype is a primordial thing or circumstance that recurs consistently and is thought to be a universal concept or situation.
Książka opisuje te archetypy poprzez UML (Unified Modeling Language) oraz dokładniejszy słowny opis każdego elementu. W początkowych rozdziałach (przed przejściem do wzorców) podane są przykłady i opis danych oznaczeń UML tak, aby czytelnik mógł się odnaleźć nawet jeśli wcześniej nie miał styczności z takim zapisem.
Poniżej znajdziesz kilka opisanych przeze mnie w dużym skrócie rozdziałów i co w nim znajdziesz.
W książce mamy opisany wzorzec Party, którego definicję widzisz poniżej.
The Party archetype pattern describes how to represent essential information about people and organizations. We use Party as a general term for a person or an organization such as a business.
W tym wzorcu znajdziemy między innymi zamodelowaną osobę, firmę, adresy (WebPageAddress, EmailAddress, TelecomAddress, GeographicAddress), Identyfikatory Party w tym daty ważności danego identyfikatora oraz jednostkę wydającą (numer VAT / numer paszportu). Zawarte są również tutaj preferencje Party (osoby/firmy).
Następnie mamy rozdział PartyRelationship w którym znajdziesz wzorzec relacji pomiędzy dwojgiem „Party” oraz role jakie odgrywają w danej relacji. Przykładowo mamy 2 Party, które są osobami. Jedna jest rodzicem, druga dzieckiem. Mamy tutaj opisane wzajemne role pomiędzy dwiema osobami.
Customer relationship management archetype (CRM) opisuje wzorzec zarządzania relacjami z klientami.
Product archetype pattern – znajdziesz tutaj między innymi rozpisane typy produktów (unikalne – występuje tylko jedno np. obraz „Mona Lisa” / identyczne – np. książka / identyfikowalne – rzeczy które są identyczne, ale jednocześnie mają swój unikalny numer np. laptop). Opis ceny i reguł które wpływają na cenę. Powiązania między produktami, specyfikacja produktów. Rozdział porusza też zwrócenie uwagi na to, że produktem może być również usługa, przykładowo podcinanie włosów.
Poniżej plusy i minusy książki w moim odczuciu:
Plusy książki
- Pomimo, że została napisana w 2004 roku wiele rzeczy się nie zmieniło, dużą część wzorców można zastosować w dzisiejszych czasach.
- Autorzy biorą pod uwagę bardzo dużo różnych przypadków. Widać, że zjedli zęby na tym temacie 😉 Opisują przypadki z różnych krajów, więc daje szersze spojrzenie zwłaszcza jeśli biznes ma działać poza jednym krajem, a w sumie taki cel jest tych wzorców, aby było w miarę ogólnie.
- Książka głównie opisuje powiązania między klasami oraz ich rozkład co daje dużo swobody (co może być dla niektórych minusem) co do możliwości zaimplementowania pod kątem reguł biznesowych.
- Opisanych jest wiele standardów, które można wykorzystać się w swoim systemie, przykładowo: ISO 2108 – ISBN (międzynarodowy znormalizowany numer książki), ISO 3166 (kod kraju). Wydaje mi się, że gdyby te standardy były bardziej znane to byłoby mniej problemów przy niektórych integracjach 😉
- Poruszane jest stosunkowo często, że dany wzór należy dostosować do swojego biznesu, a nie, że musi być wszystko identycznie jak w książce. Dodatkowo w niektórych rozdziałach są pokazane przykładowe różnice w możliwości zaimplementowaniu danego wzorca w zależności od potrzeb biznesowych.
Minusy książki
- Bez uprzedniej znajomości UML, częste są odwiedziny strony z opisem UML’a.
- Autorzy czasami piszą wprost, że należy przeskoczyć do innego rozdziału, aby kontynuować obecny. Taka sytuacja ma przykładowo miejsce w rozdziale 7.17 w którym radzą przeskoczenie do rozdziału 12 przed kontynuacją rozdziału.
- Nie wszystkie wzorce są aktualne. Przykładowo jest opisany fax, który raczej jest obecnie mało używany. Jednakże należy mieć na uwadze, że książka była napisana prawie 20 lat temu więc można przymknąć na to oko, tym bardziej, że zdecydowana większość jest aktualna.
- Nie wszystkie elementy są opisane wystarczająco jasno.
Reading Club
Jakiś czas temu ruszył Reading Club książki „Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML”. Organizowany jest przez DDD-KRK. Spotkania odbywają się co wtorek – więc spotkanie jest też dziś! Listę spotkań znajdziesz tutaj: DDD-KRK.
Jak wyglądają spotkania?
Przy wydarzeniu możemy znaleźć który dokładnie rozdział książki będzie poruszany na spotkaniu. Przed spotkaniem najlepiej jest właśnie dany rozdział przeczytać, aby na spotkaniu poruszyć swoje wątpliwości, pytania. Spotkania odbywają się online i nie są nagrywane. Na spotkaniu przechodzimy po kolei po podrozdziałach. Często rodzą się dyskusje i uczestnicy wymieniają się swoimi spostrzeżeniami i analogiami z własnego doświadczenia 🙂
PS nikt nie odpytuje czy został przez Ciebie przeczytany dany rozdział więc jeśli chcesz tylko posłuchać to też bez obaw możesz dołączyć 😉
Repozytorium
Zainspirowani książką zdecydowaliśmy się na stworzenie organizacji na GitHub w ramach którego przenosimy wiedzę z książki do kodu. Repozytoria znajdzie tutaj: GitHub.
Cytaty wzięte z książki: „Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML”
Masz jakieś pytania? Chcesz się podzielić swoimi przemyśleniami na temat książki? Skontaktuj się ze mną 🙂