GUT Intel 2015/16 1/19 Inżynieria Wytwarzania Systemów Wbudowanych Wykład 4b Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG October 18, 2018
Wzorce projektowe Wzorzec projektowy - ogólne rozwiazanie znanego problemu. pozwala na optymalizację procesu projektowania pod względem jednegu lub kilku kryteriów, np. QoS optymalizuję pewne aspekty systemu kosztem innych oprogramowanie systemu wbudowanego powinno zawierać liczne wzorce projektowe, będace w równowadze jeśli chodzi o optymalizację różnych aspektów działania systemu GUT Intel 2015/16 2/19
Wzorce projektowe Wzorzec projektowy ma cztery cechy: Nazwa - umożliwia odniesienie sie do wzorca w jasny sposób. Przeznaczenie - problem do rozwiazania, kryterium optymalizacji. Identyfikuje klasę problemów, które wzorzec rozwiazuje. Rozwiazanie - wzorzec sam w sobie Konsekwencje - zyski i koszty zastosowania wzorca. poprawa najbardziej krytycznego pod względem wydajności elementu kosztem zużycia pamięci? poprawa bezpieczeństwa kosztem obsługi i zasilania większej liczby sensorów? Wzorce projektowe dotycz a zarówno programowania strukturalnego jak i obiektowego GUT Intel 2015/16 3/19
Wzorce projektowe programowanie strukturalne - wzorce w języku C standardowe elementy języka: pliki nagłówkowe, typy, stałe, zmienne, funkcje, dyrektywy preprocesora, kod kompilowany do plików obiektów i linkowany do pliku wykonywalnego. źródło: [R. Oshana, M. Kraeling, Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications (Expert Guide), Elsevier, 2013 GUT Intel 2015/16 4/19
Wzorce projektowe Programowanie object-based struktury danych i typy definiowane przez użytkownika wiele instancji struktur danych identyfikacja instancji przez wskaźnik GUT Intel 2015/16 5/19
Wzorce projektowe Programowanie object-oriented (w języku C) wskaźniki do funkcji - dodatkowa warstwa abstrakcji możliwość wołania różnych funkcji w zależności od instancji obiektu GUT Intel 2015/16 6/19
Wzorce projektowe - przykład Podsystem pewnego dużego systemu powinien zapewniać komunikację w celu przesyłania danych i powiadomień o zdarzeniach. Ten sam podsystem powinien działać na różnych platformach pośrednich (middleware) Zmiana platformy pośredniej powinna być dokonywana jak najmniejszym wysiłkiem. Ważne cechy: re-użycie i przenośność GUT Intel 2015/16 7/19
Wzorce projektowe - przykład Kluczowy problem: jak zapewnić komunikację z różnymi platformami pośrednimi? IDL (interface definiction language) - zależny od platformy. Rozwiazania: nowy IDL, który może być kompilowany dla różnych platform pośrednich nowy IDL tylko do pośredniczenia między wybranymi elementami gotowego IDL a platformami Port Proxy Pattern - nowa warstwa obiektów interfejsu do tłumaczenia zapytań GUT Intel 2015/16 8/19
Wzorce projektowe - przykład Nazwa: Port Proxy Pattern. Komunikacja między architektonicznie różnymi jednostkami. Przeznaczenie (problem context): Różne architektonicznie jednostki połaczone sa ze soba poprzez porty. Problem: jak zapewnić komunikację możliwie niezależna od architektury tych jednostek? Struktura: Tworzenie obiektów proxy, które pośrednicza w wymianie danych między jednostkami, tłumaczac wiadomości i usługi z poziomu aplikacji do poziomu sieci i vice versa. Zmiana jednostki w sieci wymaga utworzenia nowych obiektów proxy. GUT Intel 2015/16 9/19
Wzorce projektowe - przykład źródło: [R. Oshana, M. Kraeling, Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications (Expert Guide), Elsevier, 2013 Klasy: AbstractClient i AbstractServer obsługuja tylko warstwę aplikacji. Jeśli w systemie nie ma platformy pośredniej, wówczas komunikacja może odbywać się tylko w warstwie aplikacji (między AbstractClient i AbcstractServer) Jeśli istnieje platforma pośrednia (np. TCP/IP, CORBA) klasy ClientProxy i ServerProxy dokonuja konwersji wiadomości miedzy warstwa aplikacji a warstwa sieci. GUT Intel 2015/16 10/19
Wzorce projektowe - przykład Zachowanie klas we wzorcu Proxy Port Pattern źródło: [R. Oshana, M. Kraeling, Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications (Expert Guide), Elsevier, 2013 GUT Intel 2015/16 11/19
Wzorce projektowe - przykład Proxy Port Pattern - konsekwencje Zyski: Koszty: Izolacja oprogramowania elementów sieci od szczegółów infrastruktury komunikacyjnej Warstwa proxy może zapewniać różne aspekty QoS Komunikacja synchroniczna lub asynchroniczna Zmiana infrastruktury komunikacyjnej nie powoduje konieczności zmiany oprogramowania jednostki konieczność pisania wielu wersji proxy dla różnych infrastruktur komunikacyjnych (czasem bardzo złożonych -> dużo pracy) możliwość wystapienia istotnych opóźnień w komunikacji GUT Intel 2015/16 12/19
Wzorce projektowe - proces GUT Intel 2015/16 13/19
Wzorce projektowe - proces Model poczatkowy (initial model) nie optymalizuj zbyt wcześnie. Na pewno nie na tym etapie! Dopiero wtedy, gdy program zachowuje się poprawnie Identyfikacja kryteriów projektowych (desing criteria) jeśli optymalizujesz jeden aspekt, to zawsze kosztem innych! dokładna identyfiacja tych aspektów jest ważna dla spełnienia założonych wymagań. twórz listy rankingowe kryteriów Wybór wzorców projektowych bierz pod uwagę listy rankingowe opracowane w poprzednim punkcie GUT Intel 2015/16 14/19
Różne spojrzenia na architekturę oprogramowania każdemu aspektowi odpowiada zwykle 1-2 wzorce projektowe w kodzie programu. GUT Intel 2015/16 15/19
Wzorce projektowe - różne spojrzenia na architekturę oprogramowania Subsystem and component view - najbardziej ogólne spojrzenie na cały system; zarzadzanie usługami i danymi, charakterystyka interfejsów layered pattern microkernel pattern recursive containment pattern port pattern Concurency and resource view - zasady współdzielenia zasobów, synchronizacja i szeregowanie watków cyclic executive pattern static priority patern interrupt pattern guarded call pattern message queue pattern randezvous pattern GUT Intel 2015/16 16/19
Wzorce projektowe - różne spojrzenia na architekturę oprogramowania Deployment view - zależności między dyscyplinami, reprezentowanymi przez projekt (oprogramowanie, elektronika, hydraulika, etc.) static allocation pattern hardware proxy pattern hardware adapter pattern mediator pattern debouncing pattern Distribution view - dystrubucja programu w systemie wieloprocesorowym/wielokomputerowym, zachowanie w infrastrukturze komunikacyjnej (protokoły, platformy pośrednie, topologia sieci) shared memory pattern observer pattern port proxy pattern data bus pattern GUT Intel 2015/16 17/19
Wzorce projektowe - różne spojrzenia na architekturę oprogramowania Dependability view - bezpieczeństwo i niezawodność protected single channel pattern homogeneous redundancy pattern heterogeneous redundancy pattern CRC pattern smart data pattern proxy-based firewall pattern secure channel pattern GUT Intel 2015/16 18/19
Literatura R. Oshana, M. Kraeling, Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications (Expert Guide), Elsevier, 2013 GUT Intel 2015/16 19/19