Wykład 5. Inżynieria oprogramowania MIS s MIO s MIS n Listopad 2014

Podobne dokumenty
Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012

Techniki projektowania wzorce projektowe

Zasady projektowania obiektowego

Wzorce projektowe. dr inż. Marcin Pietroo

Analiza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2)

Wprowadzenie do programowania aplikacji mobilnych

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe

Programowanie Zespołowe

Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2016

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Wzorce projektowe i refaktoryzacja

Projektowanie logiki aplikacji

Modelowanie i Programowanie Obiektowe

Wykład 3 Wymagania. MIS n Inżynieria oprogramowania Październik Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Technologia programowania

PRZEWODNIK PO PRZEDMIOCIE

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Podstawy modelowania programów Kod przedmiotu

Wzorce projektowe Michał Węgorek

Wykład 1 Inżynieria Oprogramowania

Analiza i programowanie obiektowe 2016/2017. Wykład 6: Projektowanie obiektowe: diagramy interakcji

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Podstawy Programowania Obiektowego

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Inżynieria Wytwarzania Systemów Wbudowanych

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Programowanie obiektowe

Programowanie obiektowe

Wprowadzenie do systemów informacyjnych

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

problem w określonym kontekście siły istotę jego rozwiązania

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Rok akademicki: 2014/2015 Kod: IEL s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Projektowanie obiektowe Wzorce projektowe

Projektowanie aplikacji JEE z użyciem wzorców projektowych i notacji UML

WOJSKOWA AKADEMIA TECHNICZNA

Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności

Podstawy programowania III WYKŁAD 4

MVVM Light Toolkit. Julita Borkowska

Programowanie obiektowe - 1.

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Wypożyczalnia VIDEO. Technologie obiektowe

Technologie obiektowe

Zestawy zagadnień na egzamin dyplomowy (inżynierski) dla kierunku INFORMATYKA (studia I stopnia)

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Zestawy zagadnień na egzamin dyplomowy (inżynierski) dla kierunku INFORMATYKA (studia I stopnia)

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Programowanie Obiektowe i C++

Procesowa specyfikacja systemów IT

UML w Visual Studio. Michał Ciećwierz

Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2017

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

INŻYNIERIA OPROGRAMOWANIA

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Modelowanie i Programowanie Obiektowe

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Projekt systemu informatycznego

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Technologie obiektowe. Plan. Ewolucja technik wytwarzania oprogramowania

KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Inżynieria Oprogramowania w Praktyce

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Dr Katarzyna Grzesiak-Koped

Programowanie zorientowane obiektowo. Mateusz Kołecki

Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2018

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Wybrane problemy z dziedziny modelowania i wdrażania baz danych przestrzennych w aspekcie dydaktyki. Artur Krawczyk AGH Akademia Górniczo Hutnicza

Rok akademicki: 2012/2013 Kod: IET SW-s Punkty ECTS: 3. Kierunek: Elektronika i Telekomunikacja Specjalność: Systemy wbudowane

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Świat rzeczywisty i jego model

Narzędzia CASE dla.net. Łukasz Popiel

Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML

Transkrypt:

Wykład 5 Inżynieria oprogramowania MIS-1-502-s MIO-1-505-s MIS-1-505-n Listopad 2014 Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie 5.1

Agenda 1 2 3 5.2

Co to jest G.R.A.S.P.? C. Larman: Applying UML and Patterns A Methodical Approach to Basic OO Design. The principles or patterns are a learning aid to help you understand essential object design and apply design reasoning in a methodical, rational, explainable way. C. Larman: Applying UML and Patterns Metodyczne podejście do podstaw projektowania obiektowego.. Zasady/wzorce sa pomoca w zrozumieniu istoty projektowania obiektowego i stosowania go w metodyczny, racjonalny i zrozumiały sposób". 5.3

Co to sa wzorce projektowe? Wzorzec projektowy uniwersalne, sprawdzone w praktyce rozwiazanie często pojawiajacych się, powtarzalnych problemów projektowych. Pokazuje powiazania i zależności pomiędzy klasami oraz obiektami i ułatwia tworzenie, modyfikację oraz pielęgnację kodu źródłowego. Jest opisem rozwiazania, a nie jego implementacja. Wzorce projektowe stosowane sa w projektach wykorzystujacych programowanie obiektowe. 5.4

G.R.A.S.P. General Responsibility Assignment Software Patterns (or Principles) 1 Controller 2 Creator 3 High Cohesion 4 Indirection 5 Information Expert 6 Low Coupling 7 Polymorphism 8 Protected Variations 9 Pure Fabrication 5.5

G.R.A.S.P. Ogólne zasady przydzielania odpowiedzialności w oprogramowaniu. 1 Kontroler 2 Twórca 3 Wysoka spójność 4 Pośrednictwo 5 Expert 6 Mało powiazań 7 Polimorfizm 8 Chroniona zmienność 9 Czyste wytwarzanie Nazwy nie s a najważniejsze: najważniejszy jest sens tych zasad. 5.6

1. Controller Kontroler Problem który obiekt (za interfejsem użytkownika) powinien obsłużyć (przejać) operację (np.: zewnętrzna) systemu? Rozwiazanie Powinna to być klasa, która: opisuje system jako całość reprezentuje główny obiekt lub urzadzenie na którym system działa albo reprezentuje przypadek użycia, w którym występuje dana operacja Opis podstawowa zasada dotycz aca oddzielenia interfejsu od logiki aplikacji. Jest realizowana w wielu wzorcach min.: Model-Widok-Kontroler 5.7

2. Creator Twórca Problem która klasa ma być odpowiedzialna za tworzenie obiektów klasy A? Rozwiazanie Klasa B jest odpowiedzialna za tworzenie A, gdy: klasa B komponuje lub agreguje ( ma ) obiekty klasy A B zapisuje/rejestruje/nadzoruje instancje klasy A B współpracuje (blisko!) z A B ma dane potrzebne do inicjalizacji A (patrz: Ekspert) Opis praktycznie każdy program obiektowy musi tworzyć obiekty; właściwe zorganizowanie i przypisanie które obiekty tworza jakie inne obiekty pozwala znaczaco zredukować ilość powiazań między klasami. 5.8

3. High Cohesion Wysoka spójność Problem jak w praktyce zachować klasę skupiona na jednej odpowiedzialności, z przejrzysta implementacja, zwiększyć szanse ponownego użycia? Rozwiazanie gdy masz wybór, przypisuj odpowiedzialność tak, by klasa była skupiona na jednym zadaniu Opis Złamanie tej zasady to anty-wzorzec projektowy "Blob": ma miejsce wtedy, gdy w programie istnieje wiele klas, ale bardzo niewiele z nich (lub jedna) ma dominujace znaczenie i zawiera się w niej prawie cała istotna funkcjonalność. Takie klasy nazywamy często (negatywnie) super-klasa, klasa-bóstwo, boss-klasa etc. W szczególności NIGDY nie należy mieszać w jednej klasie logiki aplikacji (co aplikacja naprawdę robi) z dostępem do danych (skad bierze dane) podobno za to idzie się do programistycznego piekła ;) 5.9

4. Indirection Pośrednictwo Problem jak unikać zależności od klas dostarczajacych funkcjonalność w specyficzny sposób? jak przerywać zbyt mocne zależności między klasami? jak korzystać z innych klas/pakietów/usług bez dostosowywania się do nich? Rozwiazanie należy stworzyć nowy pośredni obiekt, służacy jako kanał komunikacji, tak by obiekty nie kontaktowały się bezpośrednio Opis aby obniżyć ilość zależności między klasami można umieścić między nimi klasę, przez która będa się komunikować. Zmniejsza się też ogólna ilość powiazań (zachowanie Low Coupling), bo jedna klasa warstwy pośredniej może odpowiadać paru klasom warstwy pierwotnej. Przykładem sa wzorce projektowe typu: Most, Fasada, Adapter. 5.10

5. Information Expert Expert Problem której klasie przypisać dana odpowiedzialność (zadanie)? Rozwiazanie tej, która posiada najwięcej informacji niezbędnych do tego, by to zadanie wykonać Opis Pochopne podejmowanie decyzji może spowodować, że klasa aby wykonać zadanie będzie musiała przedostać się przez spory graf obiektów, aby uzyskać odpowiednie informacje. y Expert pozwala oddelegować odpowiedzialność do podmiotu, który na wstępie jest najlepiej przygotowany do jej podjęcie (stad: Ekspert - w sensie najlepszy spośród wszystkich kandydatów ). 5.11

6. Low Coupling Mało powiazań Problem jak utrzymać obiekty w niezależności od siebie? Rozwiazanie tak przypisuj odpowiedzialności do obiektów, by liczba powiazań była jak najmniejsza Opis Klasa, która ma dużo powiazań, jest zależna od wielu innych klas, co powoduje: 1 wiele lokalnych zmian spowodowanych zmianami w klasach powiazanych; 2 klasy trudniejsze do zrozumienia w izolacji; 3 zmniejszony reuse (możliwość ponownego wykorzystania), ponieważ najczęściej trzeba jednocześnie wykorzystać część klas powiazanych; Klasa która ma za dużo powiazań prawdopodobnie jest przeciażona obowiazkami, co implikuje złamanie zasady High Cohesion. 5.12

7. Polymorphism Polimorfizm Problem jak przypisać odpowiedzialność, która może być realizowana na kilka sposobów? Rozwiazanie przypisz odpowiedzialność do hierarchii obiektów wykorzystujac polimorfizm wbudowany w języki obiektowe Opis mechanizm polimorfizmu, pozwala automatycznie decydować o tym co się stanie w czasie działania programu na podstawie informacji jaki rodzaj obiektu został przekazany 5.13

8. Protected Variations Chroniona zmienność Problem jak projektować system, by umożliwić wprowadzanie zmiany, tak by nie wymuszała ona zmian na innych obiektach? Rozwiazanie zidentyfikuj punkty przewidywanego zróżnicowania/niestabilności i przypisz odpowiedzialność do stabilnego interfejsu, a nie konkretnych klas. Opis chodzi o to, by wymiana klasy A na klasę B oferujac a podobna funkcjonalność była jak najprostsza. Ta fundamentalna zasada implikuje enkapsulację, polimorfizm, data-driven desig, a nawet pliki konfiguracyjne! 5.14

9. Pure Fabrication Czyste wytwarzanie Problem jaki obiekt powinien otrzymać odpowiedzialność, gdy nie chcemy złamać High Cohesion i Low Coupling, a proponowany Ekspert jest (z innych przyczyn) nie do przyjęcia? Rozwiazanie należy sztucznie wytworzyć nowa czysta klasę (niezwiazan a z problemem) i jej przypisać tę odpowiedzialność Opis Ta zasada często jest używana jako złoty środek pozwalajacy utrzymać inne zasady, gdy te stoja w sprzeczności. Ponadto pomaga ona uwolnić się od dziedziny problemu i rozwiazać go czysto informatycznie. Przykłady: wzorce Singleton, Factory. 5.15

Jak ważne sa zasady? Pick your battles! zasady nie sa bezwzględne trzeba dażyć do najszerszego ich spełniania często trzeba wybrać jedna ponad druga trzeba rozumieć kontekst w jakim się je stosuje Jeżeli się pomyliłeś -> refaktoruj! projektowanie to proces iteracyjny różne diagramy pozwalaj a zobaczyć różne aspekty systemu 5.16