Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.1
Wykład 4ProjektowanieMIS-1-505-n Inzynieria oprogramowaniaPazdziernik 2014
Kazimierz MichalikAkademia Górniczo-Hutnicza im. S. Staszica w Krakowie
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.2
Agenda
1 Wprowadzenie
2 Czynnosci procesu projektowania
3 Metody projektowania
4 Projektowanie architektoniczne
5 Projektowanie obiektowe
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.3
Implementacja
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.4
Implementacja = Projektowanie + Programowanie
Implementacja
= Projektowanie + Programowanie
Projekt to opis:
struktury oprogramowaniadanych w systemieinterfejsów miedzy komponentamiuzytych algorytmów
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.5
Projektant nie tworzy od razu koncowego projektu!
Projekt opracowuje sie iteracyjnie w czasieProjekt moze miec wiele róznych wersjiW miare upływu czasu projekt jest coraz bardziej formalnyi szczegółowyPowraca sie do juz opracowanych fragmentów w celu ichpoprawy
Sprzezenie zwrotne miedzy fazami projektowania i powtarzanieprac sa nieuniknione w kazdym procesie projektowania!
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.6
Wyrózniamy rózne rodzaje projektowania:
Projektowanie architektoniczne (Architektury systemówrozproszonych)Projektowanie obiektoweProjektowanie oprogramowania czasu rzeczywistegoProjektowanie z uzyciem wielokrotnymProjektowanie interfejsu uzytkownika
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.7
Czynnosci procesu projektowania:
Projektowanie architekturySpecyfikowanie abstrakcyjneProjektowanie interfejsówProjektowanie komponentówProjektowanie struktur danychProjektowanie algorytmów
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.8
Metoda ad hoc:
Nieformalny projektProjekt jest zmieniany w miare programowaniaNie ma formalnej kontroli zmianNie ma zarzadzania projektemPo zakonczeniu fazy implementacji projekt jest najczesciejniepoprawny i niekompletny
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.9
Metody strukturalne
Graficzne modele systemuDuza ilosc dokumentacji projektowejObejmuja modele przepływu danych, modelencja-zwiazek, model strukturalny, modele dziedziczenia,statycznych i dynamicznych zwiazków i inne.Przykładowe metody strukturalne:
Structured DesignStructured System AnalysisJackson System Development
Rózne dla projektowania obiektowego
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.10
Co to jest projektowanie architektoniczne?
Systemy sa podzielone na podsystemy, powiazanepoprzez interfejsy.
Definicja
Poczatkowa faza procesu projektowania, w której identyfikujesie podsystemy i ustala zrab sterowania oraz komunikacji toprojektowanie architektoniczne.
Produktem tej fazy jest opis architektury oprogramowania.
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.11
Zalety projektowania architektonicznego
Komunikacja z uczestnikami
Podstawa do dyskusji na bardzo róznych poziomach
Analiza systemu
Ujawnienie architektury we wczesnej fazie pozwala naprzeprowadzenie analizy pod katem krytycznych cech systemu
Uzycie wielokrotne w wielkiej skali
Architektura jest zwartym i łatwym do opanowania opisemorganizacji systemu i współpracy komponentów
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.12
Czynnosci projektowania architektonicznego
1 Strukturalizacja systemu2 Modelowanie sterowania3 Podział na moduły
Podsystem a moduł:
Podsystem : jego usługi nie zaleza od usług oferowanychprzez inne systemy; składa sie z modułów; majainterfejsy do komunikacji z innymi podsystemami
Moduł : komponent systemu; oferuje co najmniej jednausługe innym modułom; korzysta z innychmodułów; zwykle nie jest traktowany jakoniezalezny system
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.13
Model architektoniczny 4+1
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.14
Projektowanie obiektowe
Projektowanie obiektowe
jest to strategia projektowania, w której projektanci systemumysla w kategoriach „bytów”, a nie operacji albo funkcji
Działajacy system składa sie z oddziałujacych na siebieobiektów.Obiekty przechowuja swój lokalny stan i oferuja operacjena tym stanieObiekty ukrywaja informacje o reprezentacji stanu iograniczaja do niego dostep.
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.15
Projektowanie obiektowe
Jest czescia tworzenia obiektowego
w którym strategie obiektowe sa stosowane w czasie całegoprocesu tworzenia:
Analiza obiektowaProjektowanie obiektoweProgramowanie obiektowe
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.16
Projektowanie obiektowe: pierwsze piec zasad
S.O.L.I.D.
S – SRP – Single responsibility principleO – OCP – Open/closed principleL – LSP – Liskov substitution principleI – ISP – Interface segregation principle
D – DIP – Dependency inversion principle
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.17
SRP
Single responsibility principle
a class should have only a single responsibility (i.e. only onepotential change in the software’s specification should be ableto affect the specification of the class)
Zasada pojedynczej odpowiedzialnosci
Nigdy nie powinno byc wiecej niz jednego powodu domodyfikacji klasy.
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.18
OCP
Open/closed principle
“software entities . . . should be open for extension, but closedfor modification.”
Zasada otwarte-zamkniete
elementy systemu takie, jak klasy, moduły, funkcje itd. powinnybyc otwarte na rozszerzenie, ale zamkniete na modyfikacje
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.19
LSP
Liskov substitution principle
“objects in a program should be replaceable with instances oftheir subtypes without altering the correctness of that program.”
Zasada podstawienia Liskov
Funkcje które uzywaja wskazników lub referencji do klasbazowych, musza byc w stanie uzywac równiez obiektów klasdziedziczacych po klasach bazowych, bez dokładnejznajomosci tych obiektów.
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.20
ISP
Interface segregation principle
“many client-specific interfaces are better than onegeneral-purpose interface".
Zasada segregacji interfejsów
wiele interfejsów odpowiadajacych konkretnym potrzebom jestlepsze niz jeden ogólny interfejs do wszystkiego
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.21
DIP
Dependency inversion principle
one should “Depend upon Abstractions. Do not depend uponconcretions.”
Zasada odwrócenia zaleznosci
Zaleznosci powinny opierac sie na abstrakcjach, a nie na ichkonkretnych realizacjach.
Projektowanie
Wprowadzenie
Czynnosci procesuprojektowania
Metody projektowania
Projektowaniearchitektoniczne
Projektowanieobiektowe
4.22
G.R.A.S.P.
GRASP
General Responsibility Assignment Software Patterns (orPrinciples)
ControllerCreatorHigh CohesionIndirectionInformation ExpertLow CouplingPolymorphismProtected VariationsPure Fabrication