Sławomir Sobótka
Przewodnik
strukturyzacji
architektury systemu
slawomir.sobotka@bottega.com.pl
http://code.google.com/p/ddd-cqrs-sample/
http://art-of-software.blogspot.com
http://ssepp.pl
10,5 klasycznych technik programistycznych leżących u podstaw
nowoczesnej inżynierii oprogramowania
Domain Driven Design
Baza danych nie jest modelem
Czym jest model...?
Złożoność
Esencjonalna
Przypadkowa
- zależy od problemu
- wynika z jego natury i jest nieunikniona
- zależy od rozwiązania
- wynika z wybranego podejścia i może być nieograniczona:)
Responsibility Driven Design
Rebecca J. Wirfs-Brock
System monolityczny
vs
żywy organizm
Role i odpowiedzialności
- Controller
- Coordinator
- Information Holder
- Information Provider
- Interfacer (Transformer)
- Service Provider
- Structurer
Bounded Contexts...
Module #2
Warstwa prezentacji
Piramida testów
Logika Aplikacji
Odczyt danych do prezentacji
Szacowana ilość
testów end2end
"poprzez logikę aplikacji"
Model prezentacyjny
1% z tej liczby to wiciąż dużo
- Dane odpowiednie dla widoku
- "szyte na miarę"
- Hermetyzacja modelu domenowego
30 * 40 * 50 = 60 000
Model Domeny
Decission Support
Rebate Wizard
Product Equivalent Suggestion
- Mechanizmy analityczne
- "Inteligencja"
- Mała podatność na zmiany
Knowledge Level
Specification
Supple Design
Policy
&&
Przykład
&&
Pula warunków
Tax Policy
- Odzwierciedlenie celów i reguł (prawnych)
- Strategie, ograniczenia
- Średnia podatność na zmiany
functional
Przykładowa ilość
testów jednostkowych
(dla modelu domeny)
Domknięcie
operacji
Order
BookKeeper
Invoice
Operations
Visitor
(De) coupling by Google
- Odzwierciedlenie stanu biznesu, aktywności i planów
- Aktualnie wykorzystane możliwości
- Duża podatność na zmiany
30 + 40 + 50 = 120
Role Object
Role Object #2
Trait / Mixin
(Capability + Operations)
Invoicing Bounded Context
User
Invoice Corrector
Bilet do metra
Medium
Lenient
Standard
Supervisor
Toudi
Admin
Bilet na koncert
CRM Bounded Context
Claim Handler
Standard
Fast
Doładowanie konta X
Operational Level
"Make explicit what is implicit"
Capability
Immutable
Technologia dostępu do danych odpowiednia do problemu
Adapter Design Pattern
- Odzwierciedlenie stanu biznesu, zasobów
- Potencjalne możliwości
- Średnia podatność na zmiany
Koncepcja z modelu domenowego
Typ
"techniczny"
- Brak narzutu (Lazy Loading, Dirty Checking)
- Pobieranie jedynie istotnych danych
- Spłaszczenie danych do 2NF (noSQL)
Warstwa infrastruktury
(dostęp do danych, servisy techniczne)
Events Engine
Sławomir Sobótka