Wstęp do inżynierii oprogramowania

Transkrypt

Wstęp do inżynierii oprogramowania
Wstęp do inżynierii oprogramowania
11/10/2005
Inżynieria oprogramowania
co to jest i po co?
Wstęp do inżynierii
oprogramowania
!
Cykl życia oprogramowania
Fazy tworzenia oprogramowania
Modele tworzenia programów
CASE
Jak sobie wyobrażasz proces budowy
(projektowania, nadzoru, eksploatacji…) terminalu
na Okęciu lub Złotych Tarasów?
!
!
!
Ogólna inżynieria nie zawsze `pasuje` do specyfiki
tworzenia oprogramowania
Inne jest spojrzenie na `tolerancje`: drzwi mogą się trochę
nie domykać, tynk może być trochę nierówny,
oprogramowanie albo działa albo nie!
Dla oprogramowania nie ma ilościowych systemów do
mierzenia właściwości czyli tzw. metryk
2/12
©2005 R. Robert ‘RoG@j’ Gajewski
Fazy tworzenia
oprogramowania
Cykl życia oprogramowania
Analiza
Tworzenie
Używanie
Projektowanie
Implementacja
Modyfikowanie
Testowanie
3/12
©2005 R. Robert ‘RoG@j’ Gajewski
4/12
Analiza
!
!
!
!
!
Badania potrzeb nabywców…
Zbiór wymagań, które musi zrealizować system
Przykład: ograniczenie dostępu do danych dla określonych
osób
!
!
!
Kwestia ograniczenia dostępu sprowadza się do
konieczności wprowadzenia hasła
©2005 R. Robert ‘RoG@j’ Gajewski
(C)2005 R. Robert "RoG@j" Gajewski
Projektowanie skupia się na odpowiedzi, jak system
ma wykonać dane zadanie
!
Po określeniu tych wymagań przekształca się je w
techniczna specyfikację
!
5/12
Projektowanie
Jej głównym celem jest określenie potrzeb
użytkownika systemu
!
©2005 R. Robert ‘RoG@j’ Gajewski
6/12
Najlepszą strukturą dla dużego programu jest struktura
modularna
Tworzenie dużych systemów jest możliwe jedynie dzięki
modularnej dekompozycji
Sprzyja to przyszłej `pielęgnacji` oprogramowania, jego
rozwijaniu
Przykład: duży system obliczeniowy, zmienia się… sposób
obliczania podatku (POLITYKA!!!) – trzeba tylko zmienić
ten fragment
©2005 R. Robert ‘RoG@j’ Gajewski
1
Wstęp do inżynierii oprogramowania
11/10/2005
Implementacja
Testowanie
!
Wiąże się ściśle z implementacją
!
!
!
!
Jest to proces kodowania, właściwego pisania
programów…
W zasadzie temu będzie poświęcony następny
semestr
!
Każdy moduł testuje się podczas implementacji
Można testować cały produkt na końcu, ale nie jest to
najlepszy pomysł…
Nie jest możliwe pełne przetestowanie produktu
!
Duże systemy zawsze zawierają błędy
W każdym programie jest jeszcze jeden błąd…
7/12
©2005 R. Robert ‘RoG@j’ Gajewski
8/12
Model kaskadowy
!
Model przyrostowy
Model kaskadowy (waterfall model) polega na
wykonywaniu analizy, projektowania, implementacji i
testowania w ściśle określonej kolejności
!
!
!
!
!
Faza analizy musiała zostać zakończona przed
projektowaniem!
Fazy tworzenia oprogramowania są podobne do faz
rozwiązywania problemów wg Polyi
To tradycyjne postępowanie jest w sprzeczności z metoda
swobodnie podejmowanych prób i błędów
Twórcze rozwiązywanie problemów jest metodą
niestrukturalną
9/12
©2005 R. Robert ‘RoG@j’ Gajewski
!
!
!
!
!
11/12
Najpierw powstaje uproszczona wersja z ograniczoną
funkcjonalnością
Jest ona testowana i poddana ocenie użytkownika
Następnie dodaje się jej kolejne funkcjonalności, aż do
uzyskania pełnego systemu
10/12
©2005 R. Robert ‘RoG@j’ Gajewski
CASE
Prototypowanie (prototyping) polega na tworzeniu i
poddawaniu ocenie niepełnych wersji tworzonego
systemu, nazywanych prototypami.
!
Model przyrostowy (incremental model)
uwzględnia sprzeczności i niedoskonałości modelu
kaskadowego
System konstruuje się metoda przyrostową
!
Prototypowanie
!
©2005 R. Robert ‘RoG@j’ Gajewski
!
!
Dla modelu przyrostowego prototypy przekształcają się w
efekcie w pełen końcowy produkt - jest to prototypowanie
ewolucyjne
Jeśli prototypy zastępuje się nowymi implementacjami
mówimy o prototypowaniu z odrzucaniem
Prototypowanie błyskawiczne polega na szybkim
utworzeniu modelu całego systemu już na wstępnym
etapie rozwoju projektu
©2005 R. Robert ‘RoG@j’ Gajewski
(C)2005 R. Robert "RoG@j" Gajewski
Zastosowanie technik komputerowych do procesu
tworzenia oprogramowania
CASE – Computer Aided Software Engieneering
!
!
!
!
!
!
12/12
Narzędzia do sporządzania planu projektu
Narzędzia do zarządzania projektem
Narzędzia do dokumentowania
Narzędzia prototypujące i symulujące
Narzędzia do projektowania interfejsu
Narzędzia programowe
©2005 R. Robert ‘RoG@j’ Gajewski
2