(Microsoft PowerPoint - WstepIO [tryb zgodno\234ci])

Transkrypt

(Microsoft PowerPoint - WstepIO [tryb zgodno\234ci])
Kontakt
Inżynieria
oprogramowania I
Andrzej Jaszkiewicz
Podejście amatorskie a
inżynierskie
Rynek oprogramowania 2008
Świat 304 miliardy $ (451 miliardów 2013F)
Andrzej Jaszkiewicz
p. 8, CW Berdychowo
tel. 66 52 933
[email protected]
Bez oprogramowania wytwarzanego na własne
potrzeby
Co by tu
wymyślić!?
Do pracy.
Wzrost 6.5% rocznie
W UE 6060-70% oprogramowania jest
wytwarzane w firmach, dla których nie jest to
główną działalnością
Definicje inżynierii
oprogramowania
Duże systemy wymagające pracy wielu
osób – praca grupowa
Wielowersyjność oprogramowania
Definicja inżynierii
oprogramowania
Wiedza
iedza techniczn
technicznaa, dotycząca
dotycząca
wszystkich faz cyklu życia
oprogramowania, której celem jest
uzyskanie wysokiej jakości produktu oprogramowania.
1
Jakość
produktu/oprogramowania
Użyteczność/funkcjonalność (usefulness)
Niezawodność (reliability)
Ergonomia (usability)
Efektywność (efficiency)
Łatwość konserwacji/utrzymania/modyfikacji
(maintability)
Literatura
Koszt
Bezpieczeństwo użytkownika (user safety)
Wygląd
A. Jaszkiewicz, Inżynieria oprogramowania,
Helion, 1997.
G. Booch,
Booch, J. Rambaugh,
Rambaugh, I. Jacobson, UML
przewodnik użytkownika, WNT, 2000.
M. Fowler, K. Scott, UML w kropelce, Oficyna
Wydawnicza LTP, 2002
S. Maguire
Maguire,, Niezawodność oprogramowania,
Helion, 2002
J. W. Cooper, Java. Wzorce projektowe,
Helion, 2001
Literatura
Sommerville Ian Inżynieria oprogramowania,
WNT, 2003.
Pressman Roger S. Praktyczne podejście do
inżynierii oprogramowania, WNT, 2004.
Warmer Jos, Kleppe Anneke,
Anneke, Inżynieria
oprogramowania OCL precyzyjne modelowanie
w UML, WNT, 2003.
Kernighan W. Brian, Pike Rob Inżynieria
oprogramowania. Lekcja oprogramowania,
WNT, 2002.
Literatura
Trochę historii - Rozwój technik
wytwarzania oprogramowania
Program wykładu - semestr I
Wprowadzenie w tym podstawowe modele cyklu życia
Analiza/modelowanie systemów z wykorzystaniem języka UML
Analiza/modelowanie systemów z wykorzystaniem języka UML
UML jako narzędzie projektowania i dokumentowania
oprogramowania
Projektowanie oprogramowania
Projektowanie oprogramowania
Wzorce projektowe
Refaktoryzacja
Niezawodność oprogramowania – unikanie błędów, odporność na
błędy
Niezawodność oprogramowania – testowanie
Konserwacja i ponowne wykorzystanie oprogramowania,
dokumentacja techniczna i użytkowa
Narzędzia inżynierii oprogramowania. Zarządzanie zmianami i
konfiguracją
Kolokwium zaliczeniowe
UML. Inżynieria oprogramowania. Wydanie
IIUML. Inżynieria oprogramowania. Wydanie
II, P. Stevens, Helion, Gliwice, 2007
E. Gamma, R. Helm,
Helm, R. Johnson, J. Vlissides,
Vlissides,
Wzorce projektowe. Elementy
oprogramowania obiektowego wielokrotnego
użytku, WNT, 2008
K. Sacha, Inżynieria oprogramowania, PWN,
2010.
R.C. Martin, M. Martin, Agile, programowanie
zwinne, Helion, 2008.
Lata 5050-te
Sprzęt o bardzo ograniczonych
możliwościach
Ograniczone zastosowania
Małe programy
Programy pisane często dla własnych
potrzeb lub potrzeb dobrze znanych osób
Dobrze wyspecyfikowane zadania
2
Rozwój technik wytwarzania
oprogramowania
Lata 6060-te
Kryzys oprogramowania
Profesjonalni programiści
Nowe języki programowania – COBOL,
Fortran, Algol
Sprzęt o dużo większych możliwościach, np.
pamięć wirtualna
Nowe zastosowania – np. w biznesie
Próba realizacji wielu dużych przedsięwzięć
programistycznych
Rozwój technik wytwarzania oprogramowania
nie nadąża za rozwojem sprzętu
komputerowego
Czy kryzys oprogramowania trwa do dzisiaj?
Zależność osiągnięciaosiągnięciaoczekiwania w wytwarzaniu
oprogramowania
Efekty
Oczekiwania
Przyczyny kryzysu
oprogramowania
Kryzys
Rzeczywiste
osiągnięcia
Czas
Początek inżynierii
oprogramowania
1968 NATO Conference on Software
Engineering
Nadal większość przedsięwzięć przekracza czas
i/lub budżet (choć trend jest pozytywny)
Około 25% przedsięwzięć programistycznych nie
jest kończona
90% firm przyznaje, że dość często zdarzają im się
opóźnienia przedsięwzięć
Powszechna akceptacja kiepskiej jakości
oprogramowania (w pewnych obszarach)
Duża złożoność systemów informatycznych
Złożoność, zmienność, nieadekwatność wymagań
Niepowtarzalność poszczególnych przedsięwzięć
Nieprzejrzystość procesu budowy oprogramowania
Pozorna łatwość wytwarzania i modyfikowania
oprogramowania
oprogramowani
a
Potrzeba kreatywności
Czynnik ludzki
Mało wymagający rynek
Niedoskonałość narzędzi
Zakres inżynierii
oprogramowania
Wytwarzanie oprogramowania i innych
produktów (np. dokumentacji)
Zarządzanie wytwarzaniem
oprogramowania
3
Modele cyklu życia
oprogramowania
Uporządkowanie prac.
Ustalenie kolejności prac.
Planowanie i monitorowanie realizacji.
Programowanie odkrywcze
Ogólne
określenie
wymagań
Ogólny
projekt
Budowa
systemu
Ocena
systemu
Wdrożenie
Model kaskadowy
Tak
System
poprawny
Nie
Dodatkowe fazy w modelu
kaskadowym
Określenie
wymagań
Projektowanie
Implementacja
Testowanie
Konserwacja
Co zastępuje testy w innych
dziedzinach techniki?
Certyfikaty
Zapasy bezpieczeństwa
Symulacje
Prototypy techniczne – spike solutions
Ścisłe i elastyczne
rozumienie modelu
kaskadowego
Określenie
wymagań
Projektowanie
Implementacja
Testowanie
Konserwacja
4
Przykład elastycznego
podejścia do modelu
kaskadowego
analiza
projektowanie
implem entacja testowanie wdrażanie
odniesienie do
12 modelu wodspadowego
100%
Wady i zalety modelu
kaskadowego (rozumianego ściśle)
90%
10
80%
wdrożenie
60%
50%
6
40%
4
30%
im plementacja
projektowanie
współpraca z odbiorcą
zarządzanie konfiguracją
zarządzanie projektem
2
10%
0%
analiza
liczba pracowników
20%
zapewnianie jakości
8
pracownicy
pracochłonność
70%
+ Łatwość zarządzania – planowanie i
monitorowanie
- Wysoki koszt błędów popełnionych we
wstępnych fazach
Koszt błędu w wymaganiach 100100-1000 razy
większy od kosztu błędu programistycznego!
- Długa przerwa w kontaktach z klientem
- Nie lubiany przez wykonawców
0
1
2
3
4
5
6
7
8
9
10
czas
Prototypowanie
Cel – lepsze określenie wymagań
Fazy:
Ogólne określenie wymagań
Budowa prototypu
Weryfikacja prototypu przez klienta
Pełne określenie wymagań
Realizacja pełnego systemu zgodnie z
modelem kaskadowym lub innym
profesjonalnym modelem
Wady i zalety
prototypowania
+ Mniejsze ryzyko popełnienia
kosztownych błędów we wczesnych
fazach.
+ Możliwość szybkiej demonstracji
prototypu i szkolenia użytkowników.
- Koszt budowy prototypu, który może
się nie zwrócić.
- Możliwość nieporozumień z klientem.
Sposoby budowy prototypu
Prototyp musi być zbudowany szybko i niskim
kosztem
Niepełna realizacja
Języki wysokiego poziomu
Wykorzystanie gotowych komponentów
Generatory interfejsu użytkownika
Szybkie programowanie (quick
quick--andand-dirty
programming)
Papier
Programowanie odkrywcze
Realizacja przyrostowa
Określenie
wymagań
i wstępny
projekt
Wybór przyrostu
- podzbioru
funkcji
Proces realizowany
iteracyjnie
Realizacja
przyrostu
Wdrożenie
przyrostu
5
Wady i zalety realizacji
przyrostowej
+ Możliwość wcześniejszego
korzystania z pewnych funkcji systemu
+ Skrócenie przerw w kontaktach z
klientem
+ Możliwość elastycznego reagowania na
opóźnienia
- Kłopoty z integracją oddzielnie
realizowanych modułów
Łączenie realizacji przyrostowej
z prototypowaniem
1.
2.
Jeden prototyp na początku, potem
realizacja przyrostowa
Prototyp w ramach każdego przyrostu
Rational unified process
Realizacja przyrostowa
Zalecana w większości żwawych (agile)
metodyk – np. w programowaniu
ekstremalnym – często małe przyrosty
(kilka tygodni)
Dobrze opisuje realizację wielu
(zwłaszcza udanych) projektów wolnego
oprogramowania (free
(free/
/open source)
source)
Cykl życia w lekich
metodykach
Ogólne określenie
wymagań i
projekt
architektury
Wybór przyrostu
(podzbioru
funkcji)
Analiza wymagań
i projektowanie
Opracowanie
przypadków
testowych
Implementacja
Implementacja
i testy jednostkowe
Integracja i testy
Wdrożenie
przyrostu
Refaktoryzacja
Rational unified process
Faza rozpoczęcia
(Inception phase)
Faza opracowywania
(Elaboration phase)
Faza konstrukcji
(Construction phase)
Faza przekazania
systemu
(Transition phase)
6
Wybór modelu do
konkretnego przedsięwzięcia
Duże przedsięwzięcia, np. > 6 miesięcy –
realizacja przyrostowa, mniejsze m.
Kaskadowy
W żwawych metodykach także dla mniejszych
przedsięwzięć
Trudności w określeniu wymagań:
nowatorski system z punktu widzenia klienta
mała znajomość dziedziny problemu przez
wykonawcę:
Jeżeli tak, to prototypowanie
Typowe zasady nowoczesnych
metodyk
Praca zespołowa z udziałem klienta
Opowieści (scenariusze) użytkownika
Krótkie cykle
Plan iteracji i wydania
Testy akceptacyjne na bazie opowieści
użytkownika
Programowanie w parach
Wytwarzanie sterowane testami
Typowe zasady nowoczesnych
metodyk
Wspólna własność
Ciągła integracja
Równe tempo
Prosty projekt, metafora
Refaktoryzacja
7