Projektowanie - Projekt ModFEM
Transkrypt
Projektowanie - Projekt ModFEM
Projektowanie Wykład 4 Projektowanie MIS-1-505-n Inżynieria oprogramowania Październik 2014 Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie 4.1 Agenda 1 Wprowadzenie 2 Czynności procesu projektowania Projektowanie Wprowadzenie 3 Metody projektowania Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne 4 Projektowanie architektoniczne 5 Projektowanie obiektowe Projektowanie obiektowe 4.2 Implementacja Projektowanie Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.3 Implementacja = Projektowanie + Programowanie Projektowanie Implementacja = Projektowanie + Programowanie Projekt to opis: struktury oprogramowania danych w systemie interfejsów miedzy ˛ komponentami użytych algorytmów Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.4 Projektowanie Projektant nie tworzy od razu końcowego projektu! Projekt opracowuje sie˛ iteracyjnie w czasie Projekt może mieć wiele różnych wersji W miare˛ upływu czasu projekt jest coraz bardziej formalny i szczegółowy Wprowadzenie Powraca sie˛ do już opracowanych fragmentów w celu ich poprawy Metody projektowania Sprz˛eżenie zwrotne miedzy ˛ fazami projektowania i powtarzanie prac sa˛ nieuniknione w każdym procesie projektowania! Czynności procesu projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.5 Projektowanie Wyróżniamy różne rodzaje projektowania: Projektowanie architektoniczne (Architektury systemów rozproszonych) Projektowanie obiektowe Wprowadzenie Projektowanie oprogramowania czasu rzeczywistego Czynności procesu projektowania Projektowanie z użyciem wielokrotnym Metody projektowania Projektowanie interfejsu użytkownika Projektowanie architektoniczne Projektowanie obiektowe 4.6 Projektowanie Czynności procesu projektowania: Projektowanie architektury Specyfikowanie abstrakcyjne Projektowanie interfejsów Wprowadzenie Projektowanie komponentów Czynności procesu projektowania Projektowanie struktur danych Projektowanie algorytmów Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.7 Metoda ad hoc: Projektowanie Nieformalny projekt Projekt jest zmieniany w miare˛ programowania Nie ma formalnej kontroli zmian Nie ma zarzadzania ˛ projektem Po zakończeniu fazy implementacji projekt jest najcz˛eściej niepoprawny i niekompletny Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.8 Metody strukturalne Projektowanie Graficzne modele systemu Duża ilość dokumentacji projektowej Obejmuja˛ modele przepływu danych, model encja-zwiazek, ˛ model strukturalny, modele dziedziczenia, statycznych i dynamicznych zwiazków ˛ i inne. Przykładowe metody strukturalne: Structured Design Structured System Analysis Jackson System Development Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe Różne dla projektowania obiektowego 4.9 Co to jest projektowanie architektoniczne? Projektowanie Systemy sa˛ podzielone na podsystemy, powiazane ˛ poprzez interfejsy. Definicja Wprowadzenie Poczatkowa ˛ faza procesu projektowania, w której identyfikuje sie˛ podsystemy i ustala zrab ˛ sterowania oraz komunikacji to projektowanie architektoniczne. Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe Produktem tej fazy jest opis architektury oprogramowania. 4.10 Zalety projektowania architektonicznego Projektowanie Komunikacja z uczestnikami Podstawa do dyskusji na bardzo różnych poziomach Analiza systemu Ujawnienie architektury we wczesnej fazie pozwala na przeprowadzenie analizy pod katem ˛ krytycznych cech systemu Użycie wielokrotne w wielkiej skali Architektura jest zwartym i łatwym do opanowania opisem organizacji systemu i współpracy komponentów Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.11 Czynności projektowania architektonicznego 1 Strukturalizacja systemu 2 Modelowanie sterowania 3 Podział na moduły Podsystem a moduł: Podsystem : jego usługi nie zależa˛ od usług oferowanych przez inne systemy; składa sie˛ z modułów; maja˛ interfejsy do komunikacji z innymi podsystemami Moduł : komponent systemu; oferuje co najmniej jedna˛ usługe˛ innym modułom; korzysta z innych modułów; zwykle nie jest traktowany jako niezależny system Projektowanie Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.12 Model architektoniczny 4+1 Projektowanie Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.13 Projektowanie obiektowe Projektowanie Projektowanie obiektowe jest to strategia projektowania, w której projektanci systemu myśla˛ w kategoriach „bytów”, a nie operacji albo funkcji Działajacy ˛ system składa sie˛ z oddziałujacych ˛ na siebie obiektów. Wprowadzenie Obiekty przechowuja˛ swój lokalny stan i oferuja˛ operacje na tym stanie Metody projektowania Obiekty ukrywaja˛ informacje o reprezentacji stanu i ograniczaja˛ do niego dostep. ˛ Czynności procesu projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.14 Projektowanie obiektowe Projektowanie Jest cze˛ ścia˛ tworzenia obiektowego w którym strategie obiektowe sa˛ stosowane w czasie całego procesu tworzenia: Wprowadzenie Analiza obiektowa Czynności procesu projektowania Projektowanie obiektowe Metody projektowania Programowanie obiektowe Projektowanie architektoniczne Projektowanie obiektowe 4.15 Projektowanie obiektowe: pierwsze pie˛ ć zasad Projektowanie S.O.L.I.D. S – SRP – Single responsibility principle O – OCP – Open/closed principle L – LSP – Liskov substitution principle I – ISP – Interface segregation principle D – DIP – Dependency inversion principle Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.16 SRP Projektowanie Single responsibility principle a class should have only a single responsibility (i.e. only one potential change in the software’s specification should be able to affect the specification of the class) Wprowadzenie Czynności procesu projektowania Zasada pojedynczej odpowiedzialności Nigdy nie powinno być wiecej ˛ niż jednego powodu do modyfikacji klasy. Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.17 OCP Projektowanie Open/closed principle “software entities . . . should be open for extension, but closed for modification.” Zasada otwarte-zamkniete ˛ elementy systemu takie, jak klasy, moduły, funkcje itd. powinny być otwarte na rozszerzenie, ale zamkniete ˛ na modyfikacje Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.18 LSP Projektowanie Liskov substitution principle “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.” Wprowadzenie Zasada podstawienia Liskov Czynności procesu projektowania Funkcje które używaja˛ wskaźników lub referencji do klas bazowych, musza˛ być w stanie używać również obiektów klas dziedziczacych ˛ po klasach bazowych, bez dokładnej znajomości tych obiektów. Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.19 ISP Projektowanie Interface segregation principle “many client-specific interfaces are better than one general-purpose interface". Wprowadzenie Czynności procesu projektowania Zasada segregacji interfejsów wiele interfejsów odpowiadajacych ˛ konkretnym potrzebom jest lepsze niż jeden ogólny interfejs do wszystkiego Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.20 DIP Projektowanie Dependency inversion principle one should “Depend upon Abstractions. Do not depend upon concretions.” Zasada odwrócenia zależności Zależności powinny opierać sie˛ na abstrakcjach, a nie na ich konkretnych realizacjach. Wprowadzenie Czynności procesu projektowania Metody projektowania Projektowanie architektoniczne Projektowanie obiektowe 4.21 G.R.A.S.P. Projektowanie GRASP General Responsibility Assignment Software Patterns (or Principles) Controller Creator High Cohesion Wprowadzenie Czynności procesu projektowania Indirection Metody projektowania Information Expert Projektowanie architektoniczne Low Coupling Projektowanie obiektowe Polymorphism Protected Variations Pure Fabrication 4.22