Wprowadzenie do informatyki Wykad 7 Inynieria oprogramowania Jerzy

  • Slides: 35
Download presentation
Wprowadzenie do informatyki Wykład 7 Inżynieria oprogramowania Jerzy. Nawrocki@put. poznan. pl http: //www. cs.

Wprowadzenie do informatyki Wykład 7 Inżynieria oprogramowania Jerzy. Nawrocki@put. poznan. pl http: //www. cs. put. poznan. pl/jnawrocki/wdi/ J. Nawrocki, Metody numeryczne Copyright, 2007 © Jerzy R. Nawrocki

Kryzys oprogramowania • Przekraczanie terminów • Przekraczanie budżetu • Nadgodziny • Kiepska jakość J.

Kryzys oprogramowania • Przekraczanie terminów • Przekraczanie budżetu • Nadgodziny • Kiepska jakość J. Nawrocki, Metody numeryczne

Definicja inżynier ia Zastosowanie • systematyczneg o, • zdyscyplinowane go, • ilościowego podejścia do

Definicja inżynier ia Zastosowanie • systematyczneg o, • zdyscyplinowane go, • ilościowego podejścia do • rozwoju, • eksploatacji i • utrzymania IEEE Std 610. 12 -1990 oprogramowania. IEEE Standard Glossary of Software Eng. J. Nawrocki, Metody numeryczne Terminology

Plan wykładu • Specyfikacja wymagań • Kontrola jakości artefaktów • Testowanie oprogramowania • Metody

Plan wykładu • Specyfikacja wymagań • Kontrola jakości artefaktów • Testowanie oprogramowania • Metody formalne • Język UML • Zarządzanie konfiguracją • Standard kodowania J. Nawrocki, Metody numeryczne

Cykl życia Wymagania Projekt http: //groups. sims. berkeley. edu/CDE-Events/SMJUML. jpg J. Nawrocki, Metody numeryczne

Cykl życia Wymagania Projekt http: //groups. sims. berkeley. edu/CDE-Events/SMJUML. jpg J. Nawrocki, Metody numeryczne Wykonanie

Inżynieria wymagań Wymagania Problem i koncepcja rozwiązania Zbieranie wymagań Analiza wymagań Negocjacja wymagań J.

Inżynieria wymagań Wymagania Problem i koncepcja rozwiązania Zbieranie wymagań Analiza wymagań Negocjacja wymagań J. Nawrocki, Metody numeryczne

Inżynieria wymagań Wymagania • Wymagania funkcjonalne • Wymagania pozafunkcjonalne J. Nawrocki, Metody numeryczne

Inżynieria wymagań Wymagania • Wymagania funkcjonalne • Wymagania pozafunkcjonalne J. Nawrocki, Metody numeryczne

Artefakty Specyfikacja wymagań Testy akceptacyjne Kod programu Podręcznik użytkownika J. Nawrocki, Metody numeryczne

Artefakty Specyfikacja wymagań Testy akceptacyjne Kod programu Podręcznik użytkownika J. Nawrocki, Metody numeryczne

Rodzaje kontroli jakości Testowanie J. Nawrocki, Metody numeryczne Przeglądy

Rodzaje kontroli jakości Testowanie J. Nawrocki, Metody numeryczne Przeglądy

Czym jest testowanie? Robert Binder Testowanie oprogramowania jest wykonaniem kodu dla kombinacji danych wejściowych

Czym jest testowanie? Robert Binder Testowanie oprogramowania jest wykonaniem kodu dla kombinacji danych wejściowych i stanów w celu wykrycia błędów J. Nawrocki, Metody numeryczne

Czym jest testowanie? – c. d. Wariant testu (przypadek testowy, ang. test case) Testowana

Czym jest testowanie? – c. d. Wariant testu (przypadek testowy, ang. test case) Testowana implementacja Dane wejściowe J. Nawrocki, Metody numeryczne Zaobserwow ane wyjście Stan wstępny

Czym jest testowanie? – c. d. Oczekiwane wyjście Porównanie Dane wejściowe Testowany system Stan

Czym jest testowanie? – c. d. Oczekiwane wyjście Porównanie Dane wejściowe Testowany system Stan wstępny J. Nawrocki, Metody numeryczne Wynik testu Faktyczne wyjście

Cele testowania wg Glena Myersa (1979) Jakość przypadku testowego: prawdopodob. znalezienia jeszcze nie wykrytego

Cele testowania wg Glena Myersa (1979) Jakość przypadku testowego: prawdopodob. znalezienia jeszcze nie wykrytego błędu. Udany test : taki, który wykrywa jeszcze nie wykryty błąd. J. Nawrocki, Metody numeryczne

Pracochłonność testowania • Testowanie: ~ % % całkowitej pracochłonności. Testowanie systemów krytycznych: %- %

Pracochłonność testowania • Testowanie: ~ % % całkowitej pracochłonności. Testowanie systemów krytycznych: %- % całkowitej pracochłonności (!) Roger S. Pressman J. Nawrocki, Metody numeryczne -- Roger Pressman’ 97

Metody formalne Przetestuję. Czy on jest poprawny? Przeczytam. Program Udowodnię. J. Nawrocki, Metody numeryczne

Metody formalne Przetestuję. Czy on jest poprawny? Przeczytam. Program Udowodnię. J. Nawrocki, Metody numeryczne

Ograniczenia testowania „Testowanie może ujawnić obecność błędów, ale nigdy ich braku” Dijkstra J. Nawrocki,

Ograniczenia testowania „Testowanie może ujawnić obecność błędów, ale nigdy ich braku” Dijkstra J. Nawrocki, Metody numeryczne

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ int k,

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ int k, s; k= 0; s= 1; while (k != n) { k= k + 1; s= s * k; } return s; /*** POST s== n! ***/ J. Nawrocki, Metody numeryczne

Silnia int Silnia (int n) { = 0! /*** PRE n 1>= 0 ***/

Silnia int Silnia (int n) { = 0! /*** PRE n 1>= 0 ***/ int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k != n) { k= k + 1; s= s * k; /*** INV s== k! ***/ } J. Nawrocki, Metody numeryczne

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ s== k!

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ s== k! int k, s; k= 0; s= 1; k== /***s== INVk!s== k! k + 1 s == ***/ while (k != n) { k= k + 1; s= s * k; /*** INV s== k! ***/ } J. Nawrocki, Metody numeryczne

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ s== (k

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ s== (k – 1)! int k, s; == INV (k – 1)! s == s k= 0; s= 1; s/*** s== k! *k ***/ while (k != n) { s == k= k + 1; s= s * k; /*** INV s== k! ***/ } J. Nawrocki, Metody numeryczne

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ int k,

Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k != n) { k= k + 1; s= s * k; /*** INV s== k! k == n ***/ } J. Nawrocki, Metody numeryczne

Specyfikac ja Wolfgang Reif J. Nawrocki, Metody numeryczne 7 000 LOC 5 000 LOC

Specyfikac ja Wolfgang Reif J. Nawrocki, Metody numeryczne 7 000 LOC 5 000 LOC Dowodzenie poprawności programów Program

www. uml. org J. Nawrocki, Metody numeryczne

www. uml. org J. Nawrocki, Metody numeryczne

Diagramy UML Diagramy stanów Diagramy przypadków użycia Diagramy sekwencji Diagramy czynności Diagramy klas. .

Diagramy UML Diagramy stanów Diagramy przypadków użycia Diagramy sekwencji Diagramy czynności Diagramy klas. . . J. Nawrocki, Metody numeryczne

Diagram stanów /Zdanie Matury Maturzysta /Złożenie podania na studia Kandydat Nieprzyjęty Zakwalifikowa ny /Złożenie

Diagram stanów /Zdanie Matury Maturzysta /Złożenie podania na studia Kandydat Nieprzyjęty Zakwalifikowa ny /Złożenie oryginału świadectwa Przyjęty /Złożenie ślubowania Student J. Nawrocki, Metody numeryczne

Diagram stanów Maturzysta Akcja /Złożenie podania na studia Kandydat J. Nawrocki, Metody numeryczne

Diagram stanów Maturzysta Akcja /Złożenie podania na studia Kandydat J. Nawrocki, Metody numeryczne

Diagram przypadków użycia Złożenie podania Maturzyst a Obejrzenie wyników rekrutacji Zakwalifikowa ny J. Nawrocki,

Diagram przypadków użycia Złożenie podania Maturzyst a Obejrzenie wyników rekrutacji Zakwalifikowa ny J. Nawrocki, Metody numeryczne Nieprzyjęty

Diagram przypadków użycia Przypadek użycia Aktor J. Nawrocki, Metody numeryczne

Diagram przypadków użycia Przypadek użycia Aktor J. Nawrocki, Metody numeryczne

Diagram sekwencji Maturzysta System rekrutacji Składa podanie i wprowadza oceny Potwierdza przyjęcie podania i

Diagram sekwencji Maturzysta System rekrutacji Składa podanie i wprowadza oceny Potwierdza przyjęcie podania i ocen Wnosi opłatę rekrutacyjną Potwierdza przyjęcie opłaty J. Nawrocki, Metody numeryczne KRe. M Czy oceny są poprawne? Są poprawne

Diagram sekwencji Obiekt-1 Obiekt-2 Linia życia obiektu J. Nawrocki, Metody numeryczne

Diagram sekwencji Obiekt-1 Obiekt-2 Linia życia obiektu J. Nawrocki, Metody numeryczne

Koncepcja systemu zarządzania konfiguracją Progra m J. Nawrocki, Metody numeryczne

Koncepcja systemu zarządzania konfiguracją Progra m J. Nawrocki, Metody numeryczne

Standard kodowania /*******************************/ /* Program: Kolor. Graf */ /* Autor: Jerzy Nawrocki */ /*

Standard kodowania /*******************************/ /* Program: Kolor. Graf */ /* Autor: Jerzy Nawrocki */ /* Data: 20. 05. 2006 */ /* Funkcja: Program koloruje wezly podanego grafu nieskiero- */ /* wanego w taki sposób, aby kazda para wezlow */ /* polaczonych lukiem miala różny kolor. */ /* Wejscie: Liczba naturalna N>0 okreslajaca liczbe wezlow. */ /* Sekwencja par liczb A, B (0 < A, B <= N). Para taka*/ /* oznacza, ze wezly A, B sa polaczone lukiem. */ /* Wyjscie: Minimalna liczba potrzebnych kolorow */ /*Efekt ub: Brak */ /* Uwagi: Program koloruje graf metoda brutalnej sily. */ /*******************************/ J. Nawrocki, Metody numeryczne

Standard kodowania int int int N; /* Liczba wezlow w grafie: 0 < N

Standard kodowania int int int N; /* Liczba wezlow w grafie: 0 < N <= Max. N */ A, B; /* Numery rozwazanych wezlow: 0 < A, B <= N */ Kolor; /* Numer rozwazanego koloru: 0 < Kolor <= N */ x 41; Pop. KG; J. Nawrocki, Metody numeryczne

Standard kodowania while (scanf("%d %d", &A, &B)>0){ if (0<A && A<=N && 0<B &&

Standard kodowania while (scanf("%d %d", &A, &B)>0){ if (0<A && A<=N && 0<B && B<=N) Luk[A, B]= True; Liczba. Lukow++; } J. Nawrocki, Metody numeryczne

Standard kodowania while (scanf("%d %d", &A, &B)>0){ /* /* if (0<A && A<=N &&

Standard kodowania while (scanf("%d %d", &A, &B)>0){ /* /* if (0<A && A<=N && 0<B && B<=N) /* Luk[A, B]= True; /* /* } Czytaj kolejne pary */ wezlow A, B i dla kazdej, */ o ile jest poprawna, */ zapamietaj, ze jest luk */ miedzy tymi wezlami. */ while (scanf("%d %d", &A, &B)>0){ Jak dlugo funkcja scanf, */ czytajac wartosci A, B, */ zwraca wartosc dodatnia, */ sprawdz, czy A, B naleza */ do przedzialu [1, N] i */ zapamietaj wartosc True */ w tablicy Luk o wspol- */ rzednych A, B. */ /* /* /* if (0<A && A<=N && 0<B && B<=N) /* /* Luk[A, B]= True; /* /* /* } J. Nawrocki, Metody numeryczne