[jdd2013] mantra architektoniczna 2.0
DESCRIPTION
www.bnsit.plTRANSCRIPT
![Page 1: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/1.jpg)
Mariusz Sieraczkiewicz
Mantra architektoniczna
![Page 2: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/2.jpg)
Gdzie marnujemy nasz czas?
![Page 3: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/3.jpg)
Nie ma czasu na testy
Nie ma czasu na refaktoryzację
Nie ma czasu na przeglądy kodu
…
![Page 4: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/4.jpg)
To gdzie jest czas?
![Page 5: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/5.jpg)
Jestem nowy
![Page 6: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/6.jpg)
Przegląd kodu
Bug
![Page 7: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/7.jpg)
Tracimy mnóstwo czasu, dlatego nie
mamy go na rzeczy ważne.
![Page 8: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/8.jpg)
Z jakich klocków
składa się Twój system?
![Page 9: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/9.jpg)
Co robi Controller*?
Czy wszyscy podadzą tę samą odpowiedź?
TĘ SAMĄ!
![Page 10: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/10.jpg)
Maine name ist James Joyce. I’m going na
wakacje pokuszac haraszo …
![Page 11: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/11.jpg)
EROZJA ARCHITEKTURY
![Page 12: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/12.jpg)
Zrób sobie test
![Page 13: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/13.jpg)
Krzywa GAUSSA?
Zadowolenie = Rzeczywistość -
Oczekiwania
![Page 14: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/14.jpg)
Co to jest ta #$Q%*#MANTRA?
![Page 15: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/15.jpg)
O trzeciej nad ranem każda
osoba w zespole jest w stanie
bez zająknięcia powiedzieć, z
jakich klocków składa się
system i jakie są ich
odpowiedzialności
![Page 16: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/16.jpg)
i wSZYsCyoDpOWiEdzĄ
TO SAMo
![Page 17: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/17.jpg)
Bloki budujące- wizualizuj -
Odpowiedzialności- zdefiniuj –
Proces- napędzaj -
MANTR
A
![Page 18: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/18.jpg)
![Page 19: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/19.jpg)
Widok z lotu ptaka
Prostota
![Page 20: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/20.jpg)
![Page 21: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/21.jpg)
oparte o DDD
![Page 22: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/22.jpg)
styl anemiczny
![Page 23: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/23.jpg)
A jak to wygląda w Twoim systemie?
![Page 24: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/24.jpg)
Co jeszcze?
![Page 25: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/25.jpg)
![Page 26: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/26.jpg)
Value Object• Grupuje dane należące
do pewnej całości• Nie jest trwale
przechowywany• Pozwala nazwać
konkretny byt z domeny• Nie jest unikatowy– NumerTelefonu,
KodPocztowy,• Implementowany w
oparciu o wzorzec Immutable
• . . .
Entity• Obiekt, który musi
być unikatowy• Posiada dane oraz
zachowanie biznesowe
• Jest trwale przechowywany
• Unikatowość obiektu zależy od konkretnego kontekstu i domeny
• . . .
Odpowiedzialności
![Page 27: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/27.jpg)
Repository• Wyznacza warstwę
do trwałego przechowywania danych
• Abstrahuje od konkretnego sposobu persystencji
• Zachowuje interfejs kolekcji
• …
Application Service• Mieści się w
warstwie aplikacji• Wykonuje
przetwarzanie wyznaczone przez przypadki użycia
• . . .
Odpowiedzialności
![Page 28: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/28.jpg)
Nie chodzi o definicje książkowe…
![Page 29: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/29.jpg)
![Page 30: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/30.jpg)
Jak powinno być? Co się powinno dziać?1. Przyjmuje request2. Dokonuje złożonej
walidacji3. Składa dane do
wywołania serwisu4. Wywołuje serwis5. Wynik pakuje w
JSONa6. Określa kolejny widok
Jak jest?Dzieje się wszystko.
Czego nie powinno być?• Prostej walidacji (gdyż do
tego celu wykorzystujemy framework webowy)
• Złożonego przetwarzania JSONa (z serwisu nie powinien przychodzić JSON)
• Logiki dziedzinowej np. decydowanie na podstawie danych czy zlecenie ma być wykonane
Co powinno a co nie powinno?
![Page 31: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/31.jpg)
![Page 32: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/32.jpg)
1. Zdefiniuj jak jest i jak powinno być
2. Rozpowszechnij3. Monitoruj – przeglądy kodu,
DoD4. Rób retrospekcje
5. Modyfikuj
![Page 33: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/33.jpg)
LEGACY
![Page 34: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/34.jpg)
Mantra ma kilka wcieleń
![Page 35: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/35.jpg)
PUŁAPKImentalne
![Page 36: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/36.jpg)
Mantra wydaje się oczywista
DDD, JEE, MVC
![Page 37: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/37.jpg)
„Przecież ludzie to wiedzą na
bazie systemu!”
![Page 38: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/38.jpg)
Jest ona tylko w głowie
architekta i lidera
![Page 39: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/39.jpg)
![Page 40: [JDD2013] Mantra Architektoniczna 2.0](https://reader035.vdocuments.pub/reader035/viewer/2022070315/554dcd22b4c905c7488b55c2/html5/thumbnails/40.jpg)
?