Inżynieria oprogramowania (c) Jerzy Nawrocki Wykł. 9 Wprowadzenie do informatyki Wykład 7 Inżynieria oprogramowania Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/jnawrocki/wdi/ Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie do informatyki
Kryzys oprogramowania (c) Jerzy Nawrocki Kryzys oprogramowania Wykł. 9 Przekraczanie terminów Przekraczanie budżetu Nadgodziny Kiepska jakość Kryzys J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Wykł. 9 Definicja inżynieria Zastosowanie systematycznego, zdyscyplinowanego, ilościowego podejścia do rozwoju, eksploatacji i utrzymania oprogramowania. IEEE Std 610.12-1990 IEEE Standard Glossary of Software Eng. Terminology J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Plan wykładu Wykł. 9 Specyfikacja wymagań Kontrola jakości artefaktów Testowanie oprogramowania Metody formalne Język UML Zarządzanie konfiguracją Standard kodowania J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Cykl życia Wykł. 9 Wymagania Projekt Wykonanie http://groups.sims.berkeley.edu/CDE-Events/SMJ-UML.jpg J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Problem i koncepcja rozwiązania (c) Jerzy Nawrocki Inżynieria wymagań Wykł. 9 Problem i koncepcja rozwiązania Wymagania Zbieranie wymagań Analiza wymagań Negocjacja wymagań J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Inżynieria wymagań Wykł. 9 Wymagania Wymagania funkcjonalne Wymagania pozafunkcjonalne J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Podręcznik użytkownika (c) Jerzy Nawrocki Artefakty Wykł. 9 Specyfikacja wymagań Testy akceptacyjne Kod programu Podręcznik użytkownika J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Rodzaje kontroli jakości (c) Jerzy Nawrocki Rodzaje kontroli jakości Wykł. 9 Testowanie Przeglądy J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Czym jest testowanie? Wykł. 9 Testowanie oprogramowania jest wykonaniem kodu dla kombinacji danych wejściowych i stanów w celu wykrycia błędów Robert Binder J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Czym jest testowanie? – c.d. (c) Jerzy Nawrocki Czym jest testowanie? – c.d. Wykł. 9 Wariant testu (przypadek testowy, ang. test case) Testowana implementacja Dane wejściowe Zaobserwowane wyjście Stan wstępny J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Czym jest testowanie? – c.d. (c) Jerzy Nawrocki Czym jest testowanie? – c.d. Wykł. 9 Oczekiwane wyjście Wynik testu Porównanie Dane wejściowe Testowany system Faktyczne wyjście Stan wstępny J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
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: % - % całkowitej pracochłonności (!) -- Roger Pressman’97 Roger S. Pressman J.Nawrocki, Metody numeryczne
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Metody formalne Wykł. 9 Przetestuję. Czy on jest poprawny? Program Przeczytam. Udowodnię. J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Ograniczenia testowania (c) Jerzy Nawrocki Ograniczenia testowania Wykł. 9 „Testowanie może ujawnić obecność błędów, ale nigdy ich braku” Dijkstra J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Silnia Wykł. 9 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 Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Silnia Wykł. 9 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! ***/ } return s; /*** POST s== n! ***/ 1 = 0! J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Silnia Wykł. 9 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! ***/ } return s; /*** POST s== n! ***/ s== k! s== k! k== k + 1 s == J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Silnia Wykł. 9 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! ***/ } return s; /*** POST s== n! ***/ s == (k – 1)! s == s * k s == s== (k – 1)! J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Silnia Wykł. 9 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! ***/ } return s; /*** POST s== n! ***/ k == n J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Dowodzenie poprawności programów (c) Jerzy Nawrocki Dowodzenie poprawności programów Wykł. 9 Program Specyfikacja 5 000 LOC 7 000 LOC Wolfgang Reif J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Wykł. 9 www.uml.org J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Diagramy UML Wykł. 9 Diagramy stanów Diagramy przypadków użycia Diagramy sekwencji Diagramy czynności Diagramy klas . . . J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Diagram stanów Wykł. 9 /Zdanie Matury Maturzysta /Złożenie podania na studia Kandydat Nieprzyjęty Zakwalifikowany /Złożenie oryginału świadectwa Przyjęty /Złożenie ślubowania Student J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Diagram stanów Wykł. 9 Akcja Maturzysta /Złożenie podania na studia Kandydat J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Diagram przypadków użycia (c) Jerzy Nawrocki Diagram przypadków użycia Wykł. 9 Złożenie podania Maturzysta Obejrzenie wyników rekrutacji Zakwalifikowany Nieprzyjęty J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Diagram przypadków użycia (c) Jerzy Nawrocki Diagram przypadków użycia Wykł. 9 Przypadek użycia Aktor J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Diagram sekwencji Maturzysta System rekrutacji KReM (c) Jerzy Nawrocki Diagram sekwencji Wykł. 9 Maturzysta System rekrutacji KReM Składa podanie i wprowadza oceny Czy oceny są poprawne? Są poprawne Potwierdza przyjęcie podania i ocen Wnosi opłatę rekrutacyjną Potwierdza przyjęcie opłaty J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Diagram sekwencji Wykł. 9 Obiekt Obiekt-1 Obiekt-2 Linia życia obiektu J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Koncepcja systemu zarządzania konfiguracją (c) Jerzy Nawrocki Wykł. 9 Koncepcja systemu zarządzania konfiguracją Program System zarz. konfiguracją J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Standard kodowania Wykł. 9 Nagłówek programu /*************************************************************/ /* Program: KolorGraf */ /* 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 Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Standard kodowania Wykł. 9 Identyfikatory int N; /* Liczba wezlow w grafie: 0 < N <= MaxN */ int A, B; /* Numery rozwazanych wezlow: 0 < A,B <= N */ int Kolor; /* Numer rozwazanego koloru: 0 < Kolor <= N */ int x41; int PopKG; J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
J.Nawrocki, Metody numeryczne (c) Jerzy Nawrocki Standard kodowania Wykł. 9 Wcięcia while (scanf("%d %d", &A, &B)>0){ if (0<A && A<=N && 0<B && B<=N) Luk[A,B]= True; LiczbaLukow++; } J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki
Komentowanie instrukcji (c) Jerzy Nawrocki Standard kodowania Wykł. 9 Komentowanie instrukcji while (scanf("%d %d", &A, &B)>0){ /* Czytaj kolejne pary */ /* wezlow A,B i dla kazdej,*/ if (0<A && A<=N && 0<B && B<=N) /* o ile jest poprawna, */ Luk[A,B]= True; /* 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,*/ if (0<A && A<=N && 0<B && B<=N) /* sprawdz, czy A,B naleza */ /* do przedzialu [1, N] i */ Luk[A,B]= True; /* zapamietaj wartosc True */ /* w tablicy Luk o wspol- */ /* rzednych A,B. */ } J.Nawrocki, Metody numeryczne Wprowadzenie do informatyki