Podstawy Inżynierii Oprogramowania
Wykład 8/9
1. Faza analizy wytwarzania oprogramowania
- Model i przepływ prac analizy
- Warstwy i mechanizmy architektoniczne
- Klasy analizy
- Realizacja przypadków użycia
- Diagramy interakcji
2. Faza projektu wytwarzania oprogramowania
- Model i przepływ prac
- Projektowanie architektury projektowej
- Wzorce projektowe
- Projektowanie bazy danych
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
1
Podstawy Inżynierii Oprogramowania
Przegląd dyscyplin wytwórczych
dyscypliny
modelowanie biznesowe
specyfikacja wymagań
analiza i projektowanie
implementacja
testowanie
zarzÄ…dzanie konfiguracjÄ…
zarzÄ…dzanie projektem
środowisko
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
2
Podstawy Inżynierii Oprogramowania
ANALIZA a Specyfikacja wymagań
Model przypadków użycia Model analizy
Wyrażony w języku klienta Wyrażony w języku wytwórcy systemu
Zewnętrzny widok systemu Wewnętrzny widok systemu
Strukturalizowany przez przypadki Strukturalizowany przez stereotypowe
użycia; nakłada strukturę na widok klasy i pakiety; nakłada strukturę na widok
zewnętrzny systemu wewnętrzny systemu
Początkowo używany jako kontrakt Początkowo używany przez wytwórcę do
pomiędzy wytwórcą a klientem zrozumienia kształtu, zakresu systemu
Może być nadmiarowy, niespójny itp. Nie powinien być nadmiarowy, niespójny
itp.
Opisuje funkcjonalność systemu Wyjaśnia, jak system realizuje daną
funkcjonalność; służy jako pierwsze
przybliżenie projektu
Definiuje przypadki użycia, które są Definiuje realizację przypadków użycia
pózniej analizowane w ramach
modelu analizy
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
3
Podstawy Inżynierii Oprogramowania
ANALIZA przepływ prac
Analiza
architektoniczna
Architekt
Analiza poszczególnych
przypadków użycia
Inżynier przypadków
użycia
Analiza Analiza
poszczególnych poszczególnych
Inżynier
klas pakietów
komponentów
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
4
Podstawy Inżynierii Oprogramowania
Analiza architektoniczna
Cele:
- Definicja architektury kandydujÄ…cej systemu w oparciu o
doświadczenia w wytwarzaniu podobnych systemów
- Dostarczenie wejść dla procesów planowania
Kroki:
1. Definicja organizacji podsystemów (wysokiego poziomu)
zwykle wykorzystuje siÄ™ model warstwowy
2. Wytworzenie modelu rozmieszczenia wysokiego poziomu
(RUP)
3. Identyfikacja kluczowych abstrakcji
4. Identyfikacja mechanizmów analizy
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
5
Podstawy Inżynierii Oprogramowania
Analiza architektoniczna - warstwy
Warstwa specyficzna
dla aplikacji
Warstwa ogólna
Istniejące oprogramowanie/narzędzia:
Warstwa pośrednia
- systemów operacyjnych
Warstwa oprogramowania
- systemów baz danych
systemowego
- oprogramowanie komunikacyjne
- technologie rozpraszania obiektów
Wizja architektury fizycznej:
*
- Aplikacja jednostanowiskowa
- Aplikacja wielowarstwowa (tiers)
Model Węzeł
- Architektura heterogeniczna
rozmieszczenia
- Architektura agentowa
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
6
Podstawy Inżynierii Oprogramowania
Analiza architektoniczna - mechanizmy
" Mechanizm analizy reprezentuje wzorzec, który stanowi rozwiązanie
powszechnego problemu.
" Mechanizmy analizy są używane do reprezentacji umiejscowienia
złożonej technologii w warstwach pośrednich (middleware) oraz
oprogramowania systemowego.
" Zwykle sÄ… niezwiÄ…zane z dziedzinÄ… problemu.
Przykładowe mechanizmy dotyczą trwałości danych, komunikacji pomiędzy
procesami, obsługi błędów, powiadomień, zarządzania transakcjami,
bezpieczeństwa itp.
Np. charakterystyk dotyczących opisu trwałości danych:
o Wielkość (Granularity)
o LiczbÄ™ (Volume)
o Okres przechowywania (Duration)
o Mechanizm odtwarzania (Retrieval mechanism)
o Częstość modyfikacji (Update frequency)
o Pewność (Reliability)
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
7
Podstawy Inżynierii Oprogramowania
Analiza architektoniczna - mechanizmy
" Mechanizm analizy reprezentuje wzorzec, który stanowi rozwiązanie
powszechnego problemu; są używane do reprezentacji umiejscowienia
złożonej technologii w warstwach pośrednich (middleware) oraz
oprogramowania systemowego; zwykle sÄ… niezwiÄ…zane z dziedzinÄ…
problemu.
Mechanizmy rozważa się na 3 poziomach:
- Analizy: rozwiązanie konceptualne często napotykanego problemu,
- Projektu -ukonkretnienie m. analizy, uwzględniające niektóre aspekty
implementacyjne
- Implementacji - konkretyzacja mechanizmu projektowego, która w sposób szczegółowy
opisuje implementację mechanizmu w kategoriach właściwych konkretnej technologii.
Mechanizm analityczny Mechanizm projektowy Mechanizm implementacyjny
Trwałość danych RDBMS DB2
Oracle
ODBMS ObjectStore
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
8
Podstawy Inżynierii Oprogramowania
Analiza architektoniczna przykładowe
mechanizmy
Mechanizm architektoniczny Opis
Obsługa błędów (ang. error management) Wykonuje operacje niezbędne do powrotu systemu do normalnego stanu po
wystąpieniu przewidywalnej sytuacji, która zmienia normalny przepływ
wykonania programu.
Zarządzanie zdarzeniami (ang. event management) Pozwala oddzielnym częściom aplikacji na wzajemną interakcję poprzez
wymianę asynchronicznych wiadomości.
Licencjonowanie (ang. licensing) Pozwala nabyć licencję, a także śledzi i monitoruje sposób jej
wykorzystywania.
Poczta (ang. mail) Wspomaga wymianę wiadomości e-mail pomiędzy aplikacjami i
zewnętrznymi systemami.
Zarządzanie wiadomościami (ang. messaging) Pozwala procesom na wymianę wiadomości podczas wykonywania
programu.
Pomoc online (ang. online assistance) Wspomaga użytkownika w formie pomocy online, powiadomień
pojawiajÄ…cych siÄ™ po najechaniu na element myszkÄ…, pomocy kontekstowej
itd.
Trwałość danych (ang. persistence) Umożliwia aplikacji na zapis danych na trwałych nośnikach.
Drukowanie (ang. printing) Umożliwia aplikacji wyświetlanie informacji na wielu rodzajach urządzeń,
takich jak drukarki i plottery.
Zarządzanie zasobami (ang. resorce management) Zarządza zasobami systemowymi takimi jak czas procesora oraz pamięć.
Bezpieczeństwo (ang. security) Uwierzytelnia i autoryzuje dostęp do funkcjonalności systemu.
ZarzÄ…dzanie transakcjami (ang. transcation management) ZarzÄ…dza przetwarzaniem informacji w niepodzielnych, pojedynczych
operacjach, zwanych transakcjami. Każda transakcja musi być atomowa
(ang. atomic), spójna (ang. consistent), izolowana (ang. isolated) oraz
trwała (ang. durable) ACID.
Przepływ zadań (ang. workflow) Służy do definicji zadań i określa porządek i warunki ich wykonania.
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
9
Podstawy Inżynierii Oprogramowania
ANALIZA przypadków użycia
Cele:
- Identyfikacja klas analizy, które będą odpowiedzialne za
realizację przypadku użycia
- Odkrycie wymagań dodatkowych związanych z
przypadkiem użycia
Kroki:
1. Identyfikacja klas analizy
2. Opisanie interakcji obiektów analizy
3. Odkrywanie wymagań dodatkowych
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
10
Podstawy Inżynierii Oprogramowania
ANALIZA
KLUCZOWE ATRYBUTY I STEREOTYPY KLAS ANALIZY
" zakres odpowiedzialności
" atrybuty
" zależności
" specjalne wymagania
Klasa Klasa Klasa
graniczna sterujÄ…ca domenowa
KLUCZOWE ATRYBUTY I ASOCJACJE REALIZACJI PU
" tekstowy opis przepływu zdarzeń
" diagramy klas
" diagramy interakcji
" tekstowy opis wymagań specjalnych
Klasa analizy
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
11
Podstawy Inżynierii Oprogramowania
ANALIZA realizacja przypadku użycia
(struktura - diagram klas)
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
12
Podstawy Inżynierii Oprogramowania
ANALIZA realizacja przypadku użycia
(zachowanie diagram sekwencji)
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
13
Podstawy Inżynierii Oprogramowania
ANALIZA klas
Cele:
- Identyfikacja zakresu odpowiedzialności klas analizy w
oparciu o role, które pełnią one w przypadku użycia
- Identyfikacja atrybutów klas analizy
- Odkrycie wymagań dodatkowych związanych z klasą
Kroki:
1. Identyfikacja zakresów odpowiedzialności klas
2. Identyfikacja atrybutów
3. Identyfikacja asocjacji i agregacji
4. Identyfikacja generalizacji
5. Odkrywanie wymagań dodatkowych
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
14
Podstawy Inżynierii Oprogramowania
PROJEKT a Analiza
Model analizy Model projektowy
Model konceptualny; abstrakcja Model fizyczny; szczegółowy plan
systemu, pomijająca szczegóły implementacji (blueprint of the
implementacyjne implementation)
Generyczny; rozumiany jako Specyficzny dla danej implementacji
specyfikacja wielu projektów
Dopuszcza użycie trzech Dopuszcza użycie dowolnej liczby
predefiniowanych stereotypów klas stereotypów klas (liczba jest ograniczona
jedynie językiem implementacji)
Architektura zdekomponowana na Architektura zdekomponowana na wiele
niewiele poziomów poziomów
Nie musi być pielęgnowany w Powinien być pielęgnowany w dalszych
dalszych fazach fazach
Definiuje bazową strukturę do Zakreśla system przy maksymalnym
zarysowania systemu zachowaniu architektury wypracowanym
w modelu analizy
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
15
Podstawy Inżynierii Oprogramowania
Projektowanie - etapy
Projektowanie ponad-obiektowe
Zakres: procesory, pakiety, komponenty, zadania
Węzeł
Projektowanie między-
obiektowe
Klasa
Pakiet
Zakres: grupy współdziałania
Projektowanie wewnÄ…trz- Klasa
obiektowe
Klasa
Zakres: klasy
Nazwa Klasy
Atrybuty
Klasa
Operacje Komponent
Zadanie
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
16
Podstawy Inżynierii Oprogramowania
PROJEKT przepływ prac
Projekt architektoniczny
Architekt
Projekt poszczególnych
przypadków użycia
Inżynier przypadków
użycia
Projekt Projekt
poszczególnych podsystemów
Inżynier
klas
komponentów
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
17
Podstawy Inżynierii Oprogramowania
PROJEKT - Projektowanie architektury
Celem projektowania architektury jest podanie modeli:
projektowego i rozmieszczenia, oraz ich architektury.
Można to uzyskać dzięki identyfikacji:
Architektury fizycznej
·ð WÄ™złów i ich sieciowej konfiguracji,
Architektury logicznej
·ð Podsystemów i ich interfejsów,
·ð Architektonicznie znaczÄ…cych klas projektowych np. klas aktywnych,
·ð Generycznego mechanizmu projektowego, który obsÅ‚uży wspólne
wymagania np. specjalne wymagania na trwałość, rozproszenie,
wydajność i inne, określone w fazie analizy klas i przypadków użycia z
modelu analizy(-> wymagania niefunkcjonalne!!)
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
18
Podstawy Inżynierii Oprogramowania
Projekt architektury - poziom logiczny
Wykorzystuje siÄ™ diagram rozmieszczenia
Przedstawia konfigurację węzłów (przetwarzających) oraz
umieszczonych w nich komponentów; odzwierciedla statyczny
aspekt perspektywy instalacyjnej
Elementy
węzły; komponenty; połączenia pomiędzy węzłami
Klient <
>
Serwer
Komponent A
HP 5J
Dane
trwałe
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
19
Podstawy Inżynierii Oprogramowania
Projekt architektury - poziom fizyczny
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
20
Podstawy Inżynierii Oprogramowania
Projekt architektury - poziom logiczny
Wykorzystuje siÄ™ diagram rozmieszczenia
Przedstawia konfigurację węzłów (przetwarzających) oraz
umieszczonych w nich komponentów; odzwierciedla statyczny
aspekt perspektywy instalacyjnej
Elementy
węzły; komponenty; połączenia pomiędzy węzłami
*
Model Węzeł
<>
rozmieszczenia Klient
Serwer
Komponent A
HP 5J
Dane
trwałe
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
21
Podstawy Inżynierii Oprogramowania
Architektura przetwarzanie proceduralne
yródło: Lau Y.T., The Art. of Object, 2001
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
22
Podstawy Inżynierii Oprogramowania
Architektura klient/serwer
yródło: Lau Y.T., The Art. of Object, 2001
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
23
Podstawy Inżynierii Oprogramowania
Architektura warstwy sieciowe
yródło: Lau Y.T., The Art. of Object, 2001
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
24
Podstawy Inżynierii Oprogramowania
Architektura warstwy sieciowe
yródło: Lau Y.T., The Art. of Object, 2001
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
25
Podstawy Inżynierii Oprogramowania
Architektura - agent
yródło: Lau Y.T., The Art. of Object, 2001
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
26
Podstawy Inżynierii Oprogramowania
Architektura - federacja
yródło: Lau Y.T., The Art. of Object, 2001
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
27
Podstawy Inżynierii Oprogramowania
PROJEKT - Projektowanie podsystemu
Celem projektowania podsystemu jest zapewnienie :
" tak dużej jak jest to możliwe niezależności podsystemu od
innych podsystemów i/lub interfejsów,
" dostarczania przez podsystem poprawnego interfejsu własnego,
" zapewnienie wypełniania przez podsystem jego celów w tym
sensie, że oferuje on poprawną realizację operacji, tak jak jest ona
zdefiniowana w interfejsie, który on dostarcza.
" dla każdego interfejsu oferowanego przez podsystem muszą istnieć
klasy projektowe lub inne podsystemy, które dostarczą ten
interfejs,
" w celu wyjaśnienia jak wewnętrzny projekt realizuje dowolny swój
interfejs lub przypadek użycia, należy podać kolaborację
zawierajÄ…cÄ… elementy podsystemu;
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
28
Podstawy Inżynierii Oprogramowania
PROJEKT - Projektowanie przypadku użycia
Celem projektowania PU jest :
" identyfikacja klas/podsystemów, które uczestniczą w PU
" rozdzielenie zachowania między klasy/podsystemy
" zdefiniowanie wymagań dotyczących operacji
klas/podsystemów
" rozpoznanie wymagań implementacyjnych dla PU
Etapy :
- identyfikacja klas projektowych (z analizy uzupełnione o klasy dla
wymagań niefunkcjonalnych);
- opis interakcji obiektów (diagram sekwencji poszerzony o nowe klasy;
nazwa wiadomości staje się nazwą operacji);
- rozważenie ścieżek alternatywnych: timeouty, błędy we, błedy
systemów spadkowych.
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
29
Podstawy Inżynierii Oprogramowania
PROJEKT - Projektowanie przypadku użycia (przykład)
Instytut Informatyki, Wydział Informatyki i Zarządzania,
2012/2013
30
Podstawy Inżynierii Oprogramowania
PROJEKT - Projektowanie klasy
Celem projektowania klasy jest określenie:
operacji , atrybutów, relacji, metod, stanów i zależności od
mechanizmów generycznych, a także interfejsów, które klasa
realizuje.
Dla klasy projektowej stosować śladowanie <> do klasy
analizy.
Należy zidentyfikować:
- klasy boundary - zależą od zastosowanej technologii interfejsu (nowe
stereotypy <