Architektura Rafał Hryniów
Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających ewolucję systemu Architektura systemu określa elementy budulcowe systemu, zewnętrzne właściwości tych elementów oraz ich powiązania Wysokiego poziomu struktura systemu
Właściwości architektury Musi ukazywać całość systemu Musi wspierać wymaganą funkcjonalność Musi uwzględniać wymagania niefunkcjonalne Powinna ukrywać szczegóły implementacji
Po co jest architektura Określa projekt wysokiego poziomu Określa kontekst systemu Pozwala na zrównoleglenie pracy Redukuje koszt ewolucji oraz utrzymania systemu Zwiększa ponowne wykorzystanie kodu Pozwala na elastyczny podział systemu
Warstwy aplikacji Warstwa stanowi spójną całość Można zastąpić warstwę implementacją alternatywną
Warstwy aplikacji (2) Zależności między warstwami są silnie ograniczone Mogą być wielokrotnie wykorzystywane
Wady warstw Hermetyzacja może prowadzić do długiego łańcucha zmian (kiedy ?) Wydajność (dlaczego ?) Transformacja danych między warstwami Koszt wywołań (zazwyczaj pomijalny – ale nie zawsze)
Podstawowe warstwy Prezentacji Dostęp do usług Wyświetlanie danych Obsługa żądań użytkownika Dziedziny/Logiki biznesowej Danych Komunikacja z bazami danych Menadżerowie transakcji …
Warstwy - pytania Ile warstw mają systemy client- serwer ??? Ile powinna wynosić minimalna liczba warstw ? Ile powinna wynosić maksymalna liczba warstw ? Czy podział logiczny warstw odpowiada podziałowi fizycznemu ?
Wzorce – logiki dziedziny Transaction Script Każda transakcja traktowana jako oddzielnie oprogramowana procedura Domain Model Tworzymy złożoną sieć odwzorowań między obiektami wykorzystując wszelkie dobrodziejstwa obiektowości (Java)
Wzorce logiki dziedziny Table Model Pozwala na intuicyjne powiązanie relacyjnej bazy danych wraz z zachowaniami. (C#) Service Layer Wprowadza dodatkową warstwę, która określa zbiór dostępnych operacji i koordynuje odpowiedzi aplikacji dla każdej z nich
Wzorce prezentacji Model View Controller
Wzorce prezentacji Page Controller Jeden na każdą logiczną stronę Front Controller
Wzorce dystrybucji Problemy z systemami rozproszonymi Wzorce Dystrybucji Remote Facade Data Transfer Object