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