Czynno´sci procesu
projektowania
4.1
Wykład 4
Projektowanie
MIS-1-505-n In˙zynieria oprogramowania
Pa´zdziernik 2014
Kazimierz Michalik
Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie
Czynno´sci procesu
projektowania
4.2
Agenda
1
2
Czynno ´sci procesu projektowania
3
4
Projektowanie architektoniczne
5
Czynno´sci procesu
projektowania
4.4
Implementacja = Projektowanie + Programowanie
Implementacja
= Projektowanie + Programowanie
Projekt to opis:
struktury oprogramowania
danych w systemie
interfejsów mi ˛edzy komponentami
u˙zytych algorytmów
Czynno´sci procesu
projektowania
4.5
Projektant nie tworzy od razu ko ´
ncowego projektu!
Projekt opracowuje si ˛e iteracyjnie w czasie
Projekt mo˙ze mie´c wiele ró˙znych wersji
W miar ˛e upływu czasu projekt jest coraz bardziej formalny
i szczegółowy
Powraca si ˛e do ju˙z opracowanych fragmentów w celu ich
poprawy
Sprz ˛e˙zenie zwrotne mi ˛edzy fazami projektowania i powtarzanie
prac s ˛
a nieuniknione w ka˙zdym procesie projektowania!
Czynno´sci procesu
projektowania
4.6
Wyró˙zniamy ró˙zne rodzaje projektowania:
Projektowanie architektoniczne (Architektury systemów
rozproszonych)
Projektowanie obiektowe
Projektowanie oprogramowania czasu rzeczywistego
Projektowanie z u˙zyciem wielokrotnym
Projektowanie interfejsu u˙zytkownika
Czynno´sci procesu
projektowania
4.7
Czynno ´sci procesu projektowania:
Projektowanie architektury
Specyfikowanie abstrakcyjne
Projektowanie interfejsów
Projektowanie komponentów
Projektowanie struktur danych
Projektowanie algorytmów
Czynno´sci procesu
projektowania
4.8
Metoda ad hoc:
Nieformalny projekt
Projekt jest zmieniany w miar ˛e programowania
Nie ma formalnej kontroli zmian
Nie ma zarz ˛
adzania projektem
Po zako ´nczeniu fazy implementacji projekt jest najcz ˛e´sciej
niepoprawny i niekompletny
Czynno´sci procesu
projektowania
4.9
Metody strukturalne
Graficzne modele systemu
Du˙za ilo´s´c dokumentacji projektowej
Obejmuj ˛
a modele przepływu danych, model
encja-zwi ˛
azek, model strukturalny, modele dziedziczenia,
statycznych i dynamicznych zwi ˛
azków i inne.
Przykładowe metody strukturalne:
Structured Design
Structured System Analysis
Jackson System Development
Ró˙zne dla projektowania obiektowego
Czynno´sci procesu
projektowania
4.10
Co to jest projektowanie architektoniczne?
Systemy s ˛
a podzielone na podsystemy, powi ˛
azane
poprzez interfejsy.
Definicja
Pocz ˛
atkowa faza procesu projektowania, w której identyfikuje
si ˛e podsystemy i ustala zr ˛
ab sterowania oraz komunikacji to
projektowanie architektoniczne.
Produktem tej fazy jest opis architektury oprogramowania.
Czynno´sci procesu
projektowania
4.11
Zalety projektowania architektonicznego
Komunikacja z uczestnikami
Podstawa do dyskusji na bardzo ró˙znych poziomach
Analiza systemu
Ujawnienie architektury we wczesnej fazie pozwala na
przeprowadzenie analizy pod k ˛
atem krytycznych cech systemu
U˙zycie wielokrotne w wielkiej skali
Architektura jest zwartym i łatwym do opanowania opisem
organizacji systemu i współpracy komponentów
Czynno´sci procesu
projektowania
4.12
Czynno ´sci projektowania architektonicznego
1
Strukturalizacja systemu
2
Modelowanie sterowania
3
Podział na moduły
Podsystem a moduł:
Podsystem
: jego usługi nie zale˙z ˛
a od usług oferowanych
przez inne systemy; składa si ˛e z modułów; maj ˛
a
interfejsy do komunikacji z innymi podsystemami
Moduł
: komponent systemu; oferuje co najmniej jedn ˛
a
usług ˛e innym modułom; korzysta z innych
modułów; zwykle nie jest traktowany jako
niezale˙zny system
Czynno´sci procesu
projektowania
4.14
Projektowanie obiektowe
Projektowanie obiektowe
jest to strategia projektowania, w której projektanci systemu
my´sl ˛
a w kategoriach „bytów”, a nie operacji albo funkcji
Działaj ˛
acy system składa si ˛e z oddziałuj ˛
acych na siebie
obiektów.
Obiekty przechowuj ˛
a swój lokalny stan i oferuj ˛
a operacje
na tym stanie
Obiekty ukrywaj ˛
a informacje o reprezentacji stanu i
ograniczaj ˛
a do niego dost ˛ep.
Czynno´sci procesu
projektowania
4.15
Projektowanie obiektowe
Jest cz ˛e ´sci ˛
a tworzenia obiektowego
w którym strategie obiektowe s ˛
a stosowane w czasie całego
procesu tworzenia:
Analiza obiektowa
Projektowanie obiektowe
Programowanie obiektowe
Czynno´sci procesu
projektowania
4.16
Projektowanie obiektowe: pierwsze pi ˛e ´c zasad
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
Czynno´sci procesu
projektowania
4.17
SRP
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)
Zasada pojedynczej odpowiedzialno ´sci
Nigdy nie powinno by´c wi ˛ecej ni˙z jednego powodu do
modyfikacji klasy.
Czynno´sci procesu
projektowania
4.18
OCP
Open/closed principle
“software entities . . . should be open for extension, but closed
for modification.”
Zasada otwarte-zamkni ˛ete
elementy systemu takie, jak klasy, moduły, funkcje itd. powinny
by´c otwarte na rozszerzenie, ale zamkni ˛ete na modyfikacje
Czynno´sci procesu
projektowania
4.19
LSP
Liskov substitution principle
“objects in a program should be replaceable with instances of
their subtypes without altering the correctness of that program.”
Zasada podstawienia Liskov
Funkcje które u˙zywaj ˛
a wska´zników lub referencji do klas
bazowych, musz ˛
a by´c w stanie u˙zywa´c równie˙z obiektów klas
dziedzicz ˛
acych po klasach bazowych, bez dokładnej
znajomo´sci tych obiektów.
Czynno´sci procesu
projektowania
4.20
ISP
Interface segregation principle
“many client-specific interfaces are better than one
general-purpose interface".
Zasada segregacji interfejsów
wiele interfejsów odpowiadaj ˛
acych konkretnym potrzebom jest
lepsze ni˙z jeden ogólny interfejs do wszystkiego
Czynno´sci procesu
projektowania
4.21
DIP
Dependency inversion principle
one should “Depend upon Abstractions. Do not depend upon
concretions.”
Zasada odwrócenia zale˙zno ´sci
Zale˙zno´sci powinny opiera´c si ˛e na abstrakcjach, a nie na ich
konkretnych realizacjach.
Czynno´sci procesu
projektowania
4.22
G.R.A.S.P.
GRASP
General Responsibility Assignment Software Patterns (or
Principles)
Controller
Creator
High Cohesion
Indirection
Information Expert
Low Coupling
Polymorphism
Protected Variations
Pure Fabrication