Kontrola jakości oprogramowania

49
Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania [email protected] www.cs.put.poznan.pl/jnawrocki/io Inżynieria oprogramowania II Wykład 3

description

Inżynieria oprogramowania II Wykład 3. Kontrola jakości oprogramowania. [email protected] www.cs.put.poznan.pl/jnawrocki/io. Plan wykładu. Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami - PowerPoint PPT Presentation

Transcript of Kontrola jakości oprogramowania

Page 1: Kontrola jakości oprogramowania

Copyright © Jerzy R. Nawrocki

Kontrola jakości oprogramowaniaKontrola jakości oprogramowania

[email protected]/jnawrocki/io

Inżynieria oprogramowania IIWykład 3

Page 2: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Plan wykładu

•Pojęcie jakości•Testowanie•Przeglądy

•Kontrola jakości•Szacowanie rozmiaru i•Standardy serii ISO 9000•Modele CMM/CMMI•Inżynieria wymagań•Zarządzanie projektami •Personal Software Process•Team Software Process•Zwinne metodyki•Rational Unified Process•Projekty dyplomowe

Page 3: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Plan wykładu

•Pojęcie jakości•Testowanie•Przeglądy

•Kontrola jakości•Szacowanie rozmiaru i•Standardy serii ISO 9000•Modele CMM/CMMI•Inżynieria wymagań•Zarządzanie projektami •Personal Software Process•Team Software Process•Zwinne metodyki•Rational Unified Process•Projekty dyplomowe

Page 4: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Jakość oprogramowania

Crosby: Jakość = zgodność z wymaganiami

Prewencja > Sprawdzanie

Philip Crosby (1926 – 2001)

Page 5: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Koszt naprawy błędu

Względny czas identyfikacji błędu (IBM ): w trakcie przeglądu projektu: 1 w trakcie inspekcji kodu: 20 w trakcie testów maszynowych: 82

Page 6: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Zasady skutecznego działania

Bądź proaktywny Bądź proaktywny

Zaczynaj mając koniec na względzieZaczynaj mając koniec na względzie

Aby rzeczy pierwsze były pierwszeAby rzeczy pierwsze były pierwsze

Myśl o obopólnej korzyściMyśl o obopólnej korzyści

Najpierw staraj się zrozumiećNajpierw staraj się zrozumieć

Dbaj o synergięDbaj o synergię

Ostrz piłęOstrz piłę

Page 7: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Jakość oprogramowania

Jakość projektu (wymagania a projekt)

Jakość wykonania (projekt a implementacja)

Page 8: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Osiem wymiarów jakości

1. Wydajność (szybkość, ..)

2. Niezawodność (częst. błędów)

3. Wytrzymałość (jak długo)

4. Łatwość naprawy

5. Estetyka

6. Cechy funkcjonalne

7. Reputacja

8. Zgodność ze standardami i wymaganiami

D.A. Garvin, Competing in the Eight Dimensions of Quality, Harvard Business Review, Sept.-Oct. 1987.

David A. Garvin

Harvard Business School

Page 9: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Refakto

ryzacja

Cztery filary zapewniania jakości

Testo

wan

ie

Zarz. ko

nfig

uracją

Przeg

lądy

Jakość oprogramowania

Page 10: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Przetargi dot. kontroli jakości

• SI Platforma Wyborcza: ok. 1 mln zł

• SI GIIF (MF): kilkaset tysięcy złotych

• System Zintegrowanej Taryfy Celnej ISZTAR2: 600 godz. x 300 zł/godz. 200 tys. zł

Page 11: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Plan wykładu

•Pojęcie jakości•Testowanie•Przeglądy

•Kontrola jakości•Szacowanie rozmiaru i•Standardy serii ISO 9000•Modele CMM/CMMI•Inżynieria wymagań•Zarządzanie projektami •Personal Software Process•Team Software Process•Zwinne metodyki•Rational Unified Process•Projekty dyplomowe

Page 12: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Cele testowania wg Glena Myersa (1979)

Testowanie =

Jakość przypadku testowego:

Udany test :

wykonanie programu celem znalezienia błędu.

prawdopodob. znalezienia jeszcze nie wykrytego błędu.

taki, który wykrywa jeszcze nie wykryty błąd.

Page 13: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Pracochłonność testowania

Testowanie: ~ % - % całkowitej pracochłonności.

30 40

Testowanie systemów krytycznych: 70% - 80% całkowitej pracochłonności (!)

-- Roger Pressman’97

Roger S. Pressman

Page 14: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

Page 15: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

Page 16: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

Page 17: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Jeden program w dwóch plikach

#include "liczbacy.c"void main() { int X, C; scanf("%d", &X); C= LiczbaCyfr(X); printf("%d ma cyfr: %d \n", X, C); return; }

int LiczbaCyfr(int n) { int C, G; C= 1; G= 10; while (n >= G) { C= C + 1; G= G * 10; } return C; }

liczbacy.c

Page 18: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Organizacja plików

Testowana

funkcja

Oprogramowanie korzystające z tej

funkcji

#include ...

Program testujący

#include ...

Page 19: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Prosty program testujący#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 20: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Prosty program testujący#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Dane wejściowe

Oczekiwane wyniki

Faktyczne wyniki

Page 21: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Prosty program testujący#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Oczekiwane wyniki

Faktyczne wyniki

Page 22: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Prosty program testujący#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 23: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Prosty program testujący#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 24: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Prosty program testujący#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (fWynik != oWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 25: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Wada prostego programu testującego#include "liczbacy.c"void main() { int n, fWynik, oWynik, Blad;

int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){

printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);Blad=1;}

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 26: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Testowanie sterowane danymi

Testowana

funkcja

Oprogramowanie Oprogramowanie korzystające z tej korzystające z tej

funkcjifunkcji

#include ...#include ...

Program testujący

#include ...

Danetestowe

Page 27: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Testowanie sterowane danymi – Program testujący

#include "liczbacy.c"void main() { int n, fWynik, oWynik; int Blad=0; while (scanf("%d %d", &n, &oWynik)>0){

fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);

Blad=1; } }

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 28: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Testowanie sterowane danymi – Program testujący

#include "liczbacy.c"void main() { int n, fWynik, oWynik; int Blad=0; while (scanf("%d %d", &n, &oWynik)>0){

fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);

Blad=1; } }

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Jest w pliku jeszcze jeden przypadek testowy

Page 29: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Testowanie sterowane danymi – Program testujący

#include "liczbacy.c"void main() { int n, fWynik, oWynik; int Blad=0; while (scanf("%d %d", &n, &oWynik)>0){

fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik);

Blad=1; } }

if (Blad == 0) {printf("Wszystko OK. Brawo!\n");}

return; }

Page 30: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Wszystko OK. Brawo!

Dane testowe dla LiczbaCyfr

Testowana

funkcja

Program testujący

#include ...

0 1 1 1 2 1 9 1 10 2 11 2 99 2100 3999 3

Page 31: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Rodzaje testów

{ n+=NF; }{ n+=NF; }

END { print n; }END { print n; }

Testy systemoweTesty integracyjneTesty jednostkowe

Page 32: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Kto testuje?

{ n+=NF; }{ n+=NF; }

END { print n; }END { print n; }

ProgramistaTester dostawcyKlient/użytkownik

Page 33: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Zasady testowania

Wszystkie testy powinny być powiązane z wymaganiami użytkownika.

Testowanie należy planować na długo przed jego rozpoczęciem.

W przypadku testowania obowiązuje zasada Pareto (80 /20).

Page 34: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Zasady testowania

Testowanie należy przeprowadzać “od dołu do góry”.

Testowanie wyczerpujące nie jest możliwe.Pewne testy powinny być wykonane przez

niezależną trzecią stronę.

Page 35: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Słabości testowania

Testowaniem nie można wykazać braku błędów, można w ten sposób jedynie wykazać ich obecność.

-- E.W. ...............

Powiedzenie

Dijkstra

Dijkstry

Page 36: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Plan wykładu

•Pojęcie jakości•Testowanie•Przeglądy

•Kontrola jakości•Szacowanie rozmiaru i•Standardy serii ISO 9000•Modele CMM/CMMI•Inżynieria wymagań•Zarządzanie projektami •Personal Software Process•Team Software Process•Zwinne metodyki•Rational Unified Process•Projekty dyplomowe

Page 37: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Artefakt

Przegląd

Przegląd (review) = Analiza artefaktu (np.kodu, dokumentu) realizowana przez grupę osób.

Inspekcja (inspection) = Najbardziej sformalizowana postać przeglądu

Page 38: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Rola przeglądów

Zapewnianie jakościPrzekazywanie informacji

Page 39: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Projek

tant

Projek

tant

Inspekcje Fagana

Implem

entator

Implem

entator

Mod

erat

or

Mod

erat

or Tester

Tester

Sesja

przeglądu

Page 40: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

1. Omówienie (cały zespół)2. Przygot. (indywidualnie)3. Inspekcja (cały zespół)4. Naprawa5. Sprawdzenie

Prokta

nt

Prokta

nt Implem

.

Implem

.

Mod

erat

or

Mod

erat

or Tester

Tester

Reviewsession

Page 41: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

Pro

jekt

Pro

jekt

Kod

Kod

Tes

tT

est

Specyfikacje zewnętrzne (funkcje)

Specyfikacje wewnętrzne (moduł) - I0

Specyfikacje logiki przetw - I1 inspek projek

Kodowanie (logika) - I2 inspek kodu

Testowanie jednostkowe

Cykl życiaCykl życiaCykl życiaCykl życia

Test funkcji (zewn.), składnika, systemu

Page 42: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

DesignDesignDesignDesign CodeCodeCodeCodeUnitUnit

testtestUnitUnit

testtestI1 I2 I3

Oszczędności (godz/KLOC):

I1: 94

I2 : 51

I3 : -20

Page 43: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

Omówienie (zespół) 500 niepotrzebnePrzygotowanie (indyw.) 100 125Inspekcja (zespół) 130 150Naprawa 50 60Sprawdzenie - -

II11 II22

Prędkość (loc/h)Prędkość (loc/h)

Spotkanie inspekcyjne <= 2 godz1 - 2 spotkania na dzień

Page 44: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

Czy wszystkie stałe są zdefiniowane?Czy w trakcie manipulacji kolejką może wystąpić

przerwanie? Jeśli tak, to czy kolejka jest ujęta w rejon krytyczny?

Czy rejestry są odtwarzane przy wyjściu?Czy wszystkie liczniki są odpowiednio inicjowane

(0 lub 1)?Czy są literały numeryczne, które powinny być

zastąpione stałymi symbolicznymi?Czy wszystkie bloki na schemacie są potrzebne

Lista kontrolna dla inspekcji projektuLista kontrolna dla inspekcji projektu

Ex

Ex

Wr

Wr

Mis

sing

Mis

sing

Page 45: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Plan wykładu

•Pojęcie jakości•Testowanie•Przeglądy

•Kontrola jakości•Szacowanie rozmiaru i•Standardy serii ISO 9000•Modele CMM/CMMI•Inżynieria wymagań•Zarządzanie projektami •Personal Software Process•Team Software Process•Zwinne metodyki•Rational Unified Process•Projekty dyplomowe

Page 46: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Zapewnianie jakości

Pewien dyrektor w SopociePracując w PZJ-cieChcąc robić coś w robocieWymyślał standardy na krocieZa co dostanie w XXXX po robocie.

-- Anonim

Ostrzeżenie

Page 47: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Pytania?

Page 48: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Ocena wykładu

1. Wrażenie ogólne (1 - 6)2. Za szybko czy za wolno?3. Czy dowiedziałeś się czegoś ważnego?4. Co i jak poprawić?

Page 49: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Plan wykładu

•Pojęcie jakości•Testowanie•Przeglądy

•Kontrola jakości•Szacowanie rozmiaru i•Standardy serii ISO 9000•Modele CMM/CMMI•Inżynieria wymagań•Zarządzanie projektami •Personal Software Process•Team Software Process•Zwinne metodyki•Rational Unified Process•Projekty dyplomowe