Jakość osiągana przez stosowanie: technik i metod: właściwego
Transkrypt
Jakość osiągana przez stosowanie: technik i metod: właściwego
INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - wstęp Wykład 4 (1) Jakość osiągana przez stosowanie: technik i metod: właściwego zarządzania • weryfikacji, • walidacji, Weryfikacja – proces oceny produktu (lub jego składników) w celu stwierdzenia czy spełnia on na zakończeniu fazy rozwojowej założenia stawiane na jej początku • przeglądów, • inspekcji, • audytów, • testowania, • dowodzenia poprawności Wykład 4 (3) Walidacja – proces oceny stopnia spełnienia przez produkt wymagań stawianych mu w specyfikacji INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - weryfikacja Faza cyklu Podstawowy cel weryfikacji Zalecane techniki Analiza wymagań Sensowność, niesprzeczność, realizowalność wymagań Inspekcje, przeglądy Specyfikacja zewnętrzna Zgodność z wymaganiami, kompletność, spójność, realizowalność techniczna, adekwatność kryteriów akceptacji Inspekcje, przeglądy Projekt architektury Zgodność z wymaganiami i specyfikacją zewnętrzną, realizowalność techniczna, Inspekcje, przeglądy Projekt szczegółowy Poprawność techniczna, zgodność z PA, Inspekcje, przeglądy, dowody formalne Kodowanie Spełnienie atrybutów formalnej poprawności kodu, poprawność pragmatyczna, zgodność z PS Inspekcje, przeglądy, dowody formalne, analiza dynamiczna Testowanie Kompletność i adekwatność projektu testów, rzetelność wykonania testów, udowodnienie wyeliminowania znalezionych błędów, wykazanie spełnienia wymagań dla ustalonych danych Eksperymenty z programem, Dokumentowanie Czytelność i użyteczność dokumentacji, zgodność ze stanem faktycznym Przeglądy, eksperymenty z programem 1 INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - wstęp Wykład 4 (4) Współczynniki eliminacji defektów w różnych technikach Removal Step Lowest Rate Modal Rate Highest Rate ------------------------------------------------------------------------------------------------------------Personal checking of 15% 35% 70% design documents Informal group design reviews 30% 40% 60% Formal design inspections 35% 55% 75% Formal code inspections 30% 60% 70% Personal desk-checking of code 20% 40% 60% Unit testing (single routine) 10% 25% 50% Integration testing (related routines) 20% 35% 55% System testing 25% 45% 60% (complete system) Field testing (live data) 35% 50% 65% ------------------------------------------------------------------------------------------------------------Cumulative effect of complete series 93% 99% 99% INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - testowanie Wykład 4 (2) Błąd: • Nieudokumentowana cecha systemu, • Działanie niezgodne ze specyfikacją, • Niespełnienie wymagań określonych w specyfikacji systemu Klasyfikacja błędów w/g źródeł pochodzenia Klasa błędu Źródło pochodzenia Funkcjonalny Zła lub brakująca funkcja Systemowy Błąd w interfejsach, błędne sterowanie Przetwarzania Niewłaściwe przetwarzanie danych w modułach Danych Błędna specyfikacja, projekt, rozmieszczenie lub inicjacja struktur danych Kodowania Niewłaściwe użycie języka programowania Dokumentacyjny Niepełna lub błędna treść dokumentu Inny 2 INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - testowanie Wykład 4 (5) Znaczenie testowania jako: • Metody zwiększania zaufania do produktu, • Stymulatora analizy i weryfikacji projektu i kodu • Metody potwierdzania stabilności produktu Rodzaje testów: • Jednostkowe – sprawdzenie poprawności działania wydzielonej jednostki modularyzacji (funkcji, procedury, klasy, biblioteki) względem jej specyfikacji, • Integracyjne – sprawdzenie poprawności współpracy jednostek pod względem współdziałania na poziomie interfejsu i poprawności realizacji funkcji złożonych • Systemowe – sprawdzenie poprawności realizacji funkcji całego systemu (wsparcie walidacji) • Akceptacyjne – dowiedzenie poprawności realizacji funkcji dla danych określonych w kryteriach akceptacji • Regresywne – wykazanie zachowania poprawności realizacji funkcji systemu w kolejnych jego wersjach Wykład 4 (6) INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - testowanie Kategorie testowania systemowego Test Czynność użyteczności Sprawdzenie wymagań funkcjonalnych objętości Sprawdzenie działania dla danych wejściowych dużych rozmiarów zmęczeniowe Sprawdzenie zachowania przy dużej intensywnosci strumienia danych wejściowych obsługi Sprawdzenie zgodności ze specyfikacją w zakresie interfejsu i ergonomii poufności Sprawdzenie odporności na próby nieuprawnionego dostępu do danych pamięci Sprawdzenie zapotrzebowania na pamięć konfiguracji Próba pracy w różnych konfiguracjach (np. z różnymi wersjami SO) kompatybilnosci Sprawdzenie poprawności pracy po rozbudowie (np. współdziałanie z danymi o poprzednim formacie, sprawdzenie skuteczności rekonstrukcji danych itp) instalacji Sprawdzenie poprawności przebiegu instalacji niezawodności Zebranie statystyk charakteryzujących niezawodność w określonym środowisku podnoszenia z upadku Sprawdzenie skuteczności odtwarzania po wymuszonym upadku (np. po awarii zasilania, zamknięciu przez SO itp.) obsługi Obserwacja sposobu eksploatacji przez przeszkolony personel dokumentacji Sprawdzenie przydatności dokumentcji 3 Wykład 4 (7) INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - wstęp Strategie testów: • Funkcjonalne (black box) – testowanie poprawności realizacji funkcji systemu bez analizy sposobu ich wykonania, • Strukturalne (glass box) – testowanie działania konstrukcji składających się na system Metody doboru danych testowych (projektowania testów): a) Dla strategii funkcjonalnych: • Metoda sprawdzenia wszystkich wymagań funkcjonalnych – wykonanie testów dla wszystkich wyróżnionych w specyfikacji wymagań funkcjonalnych i przypadków użycia • Metoda pokrycia punktów funkcyjnych – taki dobór danych/interakcji aby każdy punkt funkcyjny (dana wejściowa, dana wyjściowa, element interfejsu, wydruk) był użyty co najmniej raz • Metoda z podziałem na klasy równoważności – podział dziedziny danych wejściowych na obszary, w których podejrzewa się podobne lub identyczne działanie programu • Metoda specjalnych wartości – sprawdzenie działania programu dla granicznych lub niepoprawnych wartości danych (dane na granicy lub spoza zakresu, duże dane (np. bardzo duże rozmiary tabel, bardzo długie napisy, b. wielkie lub b. małe liczby, b. duże lub b. małe rozdzielczości obrazów itp.) Wykład 4 (8) INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - testowanie Metody doboru danych testowych (projektowania testów) - cd: • Metoda Monte-Carlo – sprawdzenie działania programu dla danych generowanych losowo, automatycznie w/g rozkładu równomiernego w dziedzinie danych wejściowych a) Dla strategii strukturalnych: • Metoda pokrycia elementów niekompilowanych – dobór danych zapewniających wykonanie każdego elementu niekompilowanego co najmniej raz (np. wywołania programów zewnętrznych, zapytania SQL itp.) • Metoda pokrycia jednostek modularyzacji – każda jednostka użyta co najmniej raz • Metoda pokrycia rozgałęzień – taki dobór danych, aby każde rozgałęzienie było wykonane co najmniej raz • Metody oparte o analizę przepływu danych: • A) dla każdej pary a -> b gdzie a – miejsce obliczenia danej w, b – miejsce użycia danej w wygenerować dane wymuszające przejście od a do b, • B) niech w1, w2, wn – dane używane w wyrażeniu w miejscu b a zi – miejsca obliczania danej wi; wygenerować dane wymuszające przejście do b przez wszystkie miejsca możliwego powstawania wartości używanych w wyrażeniu w b, 4 Wykład 4 (9) ` Dokumentacja testów: Dokumentacja przeprowadzenia testów: Projekt testów: • Identyfikator przypadku testowego • Wydzielenie obszarów testowania • Specyfikacja przypadków testowych • Data wykonania i dane testera, • Wersja testowanego oprogramowania, • Status zaliczenia, • Zasady organizacji pracy przy testowaniu • Dane o środowisku wykonania, • Harmonogram testów • Zauważone nieprawidłowości, Specyfikacja przypadku testowego: • Identyfikacja zgłoszonych błędów • Identyfikator testu i planu • Cel testu ze wskazaniem wymagania lub przypadku użycia • Opis lub wskazanie środowiska wykonania (np. baza dancyh, rodzaj SO) • Opis danych wejściowych i/lub interakcji • Opis spodziewanego rezultatu Wykład 4 (10) INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - wstęp Elementy procesu testowania systemowego: przygotowanie planu testów określenie ogólnego celu testowania określenie szczegółowych obszarów podlegających testowaniu zaprojektowanie zbioru przypadków testowych: określenie ważności testów i kolejności ich przeprowadzania określenie składu zespołu testującego zamrożenie kodu iteracje przeprowadzania testu kompilacja modułów wykonywalnych przeprowadzenie testów ocena błędów poprawa 5 Wykład 4 (11) INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - wstęp Elementy procesu testowania systemowego – cd: sporządzenie raportu końcowego: lista błędów wykrytych, lista błędów pozostałych, oszacowanie czasochłonności procesu testowania archiwizacja danych i opisu testów dla celów testowania regresywnego Inne techniki wykrywania błędów w kodzie: • Analiza statyczna (czytanie i autoanaliza kodu), • Stosowanie analizatorów kodu (co najmniej wysokich poziomów ostrzeżeń kompilatora) • Śledzenie wykonania programu, • Dowodzenie poprawności programów Wykład 4 (25) INŻYNIERIA OPROGRAMOWANIA Przeglądy Przegląd (w/g IEEE - 1990 ) - proces lub spotkanie w czasie którego produkt pracy lub zbiór produktów jest przedstawiony personelowi, kierownikom, użytkownikom lub innym zainteresowanym w celu skomentowania lub akceptacji Podstawowe metodologie przeglądów: • formalne przeglądy projektu, • inspekcje i przejścia • opinie ekspertów 6 Wykład 4 (13) INŻYNIERIA OPROGRAMOWANIA Przeglądy Cele przeglądu: • bezpośrednie - związane z projektem poddanym przeglądowi • pośrednie - związane z doskonaleniem zespołu Cele bezpośrednie: • wykrycie błędów analizy i projektu oraz wymaganych poprawek, zmian i uzupełnień w kontekscie specyfikacji i zatwierdzonych zmian • wykrycie źródeł ryzyka mogących wpłynąć n aprzebieg rezlizacji projektu, • wykrycie odchyleń od wzorców, stylów, procedur i konwencji • zaakceptowanie produktów analizy lub projektu Wykład 4 (14) INŻYNIERIA OPROGRAMOWANIA Przeglądy Cele pośrednie: • motywowanie zespołu do stosowania ustalonych procedur,wzorców i zasad • dostarczenie platformy wymiany wiedzy zawodowej dotyczącej metod, narzędzi i technik, • odnotowanie błędów analizy i projektu dla celów doskonalenia metod prowadzenie projektów i organizacji pracy 7 Wykład 4 (15) INŻYNIERIA OPROGRAMOWANIA Przeglądy Przeglądy formalne - prowadzone w celu akceptacji produktów danej fazy. Uczestnicy przeglądu • prowadzący przegląd, • zespół przeglądający, • zespół projektowy. Cechy prowadzącego przegląd: • wiedza i doświadczenie merytoryczne w zakresie obszaru projektu, • Staż co najmniej taki jak kierownika zespołu, • Dobre stosunki z kierownikiem zespołu i jego członkami • Stanowisko pracy niezwiązane z zespołem. Wykład 4 (16) INŻYNIERIA OPROGRAMOWANIA Przeglądy Dobrzy kandydaci na kierowników przeglądów to: • kierownik działu R&D, • kierownik innego projektu, • kierownik działu QA, • kierownik działu IT klienta. Członkowie zespołu przeglądającego: • liczność: 3-5 osób, • uczestnicy - starsi stażem członkowie zespołów projektowych z innych projektów 8 Wykład 4 (17) INŻYNIERIA OPROGRAMOWANIA Przeglądy Przygotowanie do przeglądu: prowadzący: • wyznaczenie spotkań i umówienie wszystkich uczestniczących stron, • przygotowanie agendy spotkań, • przydzielenie członkom zespołu poszczególnych dokumentów projektowych do przeglądu • dostarczenie dokumentów projektowych do uczestników przeglądu • przygotowanie list kontrolnych zawierających elementy podlegające sprawdzeniu w trakcie przeglądu członkowie zespołu przeglądowego: • analiza dostarczonych dokumentów, • przygotowanie uwag Wykład 4 (18) INŻYNIERIA OPROGRAMOWANIA Przeglądy członkowie zespołu projektowego • przygotowanie krótkich prezentacji dokumentów podlegających przeglądowi, Przebieg sesji przeglądu: Obowiązkiem prowadzącego jest: • nadzorowanie przebiegu dyskusji, • zapobieganie dygresjom, • dbanie o zgodność z agendą. • prezentacje powinny koncentrować się na aspektach projektu wymagających akceptacji, • unikać długich prezentacji wyczerpujących członków zespołu. 9 Wykład 4 (19) INŻYNIERIA OPROGRAMOWANIA Przeglądy Plan przebiegu sesji: • krótka prezentacji dokumentu podlegającego przeglądowi, • komentarze i uwagi członków zespołu przeglądającego, • weryfikacja wszystkich uwag i określenie dla każdej z nich wymaganych działań (poprawki, zmiany, rozszerzenia), • dyskusja o dokumencie mająca na celu określenie postępów projektu; pełna akceptacja - umożliwia przejście do następnej fazy projektu. Niekiedy mogą jej towarzyszyć wymagania drobnych zmian lub poprawek, częściowa akceptacja - dotyczy niektórych części projektu, dla których jest możliwe przejście do następnej fazy; pozostałe części projektu wymagają znacznych korekt; ich kontynuacja będzie możliwa po wykonaniu zaleconych akcji korekcyjnych i po przeprowadzeniu kolejnej sesji przeglądu, całkowite odrzucenie - występuje w sytuacji licznych usterek i niemożności wydzielenie częsci projektu, które moga być kontunuowane.Cała sesja przeglądu musi być w tej sytuacji powtórzona. Wykład 4 (20) INŻYNIERIA OPROGRAMOWANIA Przeglądy Raport z przebiegu sesji musi być przygotowany i przesłany uczestnikom sesji bezpośrednio po jej zakończeniu zawartość raportu: • podsumowanie dyskusji, • decyzja o kontynuacji projektu, • pełna lista zaakceptowanych zastrzeżeń i uzgodnionych akcji korekcyjnych, dla każdej akcji powinna być podana przewidywana data zakończenia • przewidywana data sesji uzupełniającej, • lista osób przydzielonych do przeprowadzenia sesji uzupełniającej. Typowe błędy w raportach: • brak listy znalezionych usterek, • brak wyspecyfikowania akcji korekcyjnych, 10 Wykład 4 (21) INŻYNIERIA OPROGRAMOWANIA Przeglądy Wskazówki dotyczące infrastruktury przeglądów: • przygotuj listy kontrolne dla typowych dokumentów podlegających przeglądowi, • prowadź doskonalenie prowadzących przeglądy, • prowadź analizę efektywności przeglądów i udoskonalaj metodykę prowadzenia przeglądów, • uwzględniaj przeglądy w harmonogramach realizacji projektów, zarezerwuj odpowiednie zasoby do ich przeprowadznia. Wykład 4 (22) INŻYNIERIA OPROGRAMOWANIA Przeglądy Wskazówki dotyczące przebiegu sesji przeglądu: • czas trwania sesji nie powinien przekraczać dwóch godzin, • dyskutuj tylko nad\ aspektami merytorycznymi, unikaj personalizacji; • zapewnij przyjacielską atmosferę dyskusji, • dbaj o zgodność przebiegu sesji z harmonogramem, unikaj przedłużania, • skupiaj się na wykrywaniu defektów a nie na szukaniu przyczyn i dyskutowaniu możliwości ich poprawy • unikaj przeciągania dyskusji w kwestiach spornych przekładając ją na inne spotkania, • zapewnij przeprowadzenie sesji uzupełniających - jeśli projekt nie został w całości zaakceptowany. 11 INŻYNIERIA OPROGRAMOWANIA Przeglądy kodu – przejścia (walkthroughs) Wykład 4 (23) Przeglądy nieformalne – przejscia (walkthroughs) Technika o najlepszej skuteczności (od 50% do 80%; średnia 60%; dla testowania średnia 30%, max 50%) Cechy przejścia: • charakter nieformalny, • krótkie przygotowanie obu stron, • koncentracja na ulepszeniu jakości dokumentu/kodu (nie procesu) a nie jego ocenie • ocena produktu a nie osób, • wyłączenie kierownictwa z procesu, • znalezione defekty i zastrzeżenia notowane • notatka z przeglądu umieszczana w dokumentacji przebiegu zadania INŻYNIERIA OPROGRAMOWANIA Przeglądy kodu - przejścia Wykład 4 (24) Wskaźniki liczbowe do przeprowadzenia przejścia: • limity czasu: o czas trwania sesji przejścia - 2h o czas dodatkowej dyskusji - 1h • maksymalnie jedna sesja dzienie: • szybkość przygotowywania recenzenta - 100 .. 500 lini/h • szybkość przejścia - 50..500 linni/h • poziom odrzucenia sesji - 5% linii kwestionowanych 12