Kontrola jakości oprogramowania

50
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ładów. 11.03 Zasady skutecznego działania 18.03 Kontrola jakości oprogramowania 1.04 Szacowanie rozmiaru i pracochłonności - PowerPoint PPT Presentation

Transcript of Kontrola jakości oprogramowania

Page 1: Kontrola jakości oprogramowania

Copyright © Jerzy R. Nawrocki

Kontrola 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ładów

11.03 Zasady skutecznego działania18.03 Kontrola jakości oprogramowania 1.04 Szacowanie rozmiaru i pracochłonności 8.04 Standardy serii ISO 900015.04 Modele CMMI22.04 Inżynieria wymagań29.04 Zarządzanie projektami i PRINCE2 6.05 Personal Software Process13.05 Team Software Process20.05 Rational Unified Process3+10.06 Zwinne metodyki programowania17.06 Projekty dyplomowe i XPrince

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 ...

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 5: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Jakość oprogramowania

Crosby: Jakość = zgodność z wymaganiami

Prewencja > Sprawdzanie

Philip Crosby (1926 – 2001)

Page 6: 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 7: 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 pierwszeMyśl o obopólnej korzyściMyśl o obopólnej korzyściNajpierw staraj się zrozumiećNajpierw staraj się zrozumieć

Dbaj o synergięDbaj o synergięOstrz piłęOstrz piłę

Page 8: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Jakość oprogramowania

Jakość projektu (wymagania a projekt)

Jakość wykonania (projekt a implementacja)

Page 9: 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ść naprawy5. Estetyka6. Cechy funkcjonalne7. Reputacja8. Zgodność ze standardami i

wymaganiami

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

David A. GarvinHarvard Business School

Page 10: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Refaktoryzacja

Cztery filary zapewniania jakości

Testowanie

Zarz. konfiguracją

Przeglądy

Jakość oprogramowania

Page 11: 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 12: 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 13: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Cele testowania

Testowanie = wykonanie programu celem znalezienia błędu.

Jakość przypadku testowego: prawdopodobieństwo znalezienia jeszcze nie wykrytego błędu.

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

-- Glen Myers’79

Page 14: 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 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 ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

Page 18: 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 19: 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 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; }

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; }

Dane wejściowe

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; }

Oczekiwane wyniki

Faktyczne wyniki

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 (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 25: 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 26: 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 27: 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 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; }

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; }

Jest w pliku jeszcze jeden przypadek testowy

Page 30: 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 31: 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 32: 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 33: 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 34: 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 35: 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 36: 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 37: 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 38: 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 39: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Rola przeglądów

Zapewnianie jakościPrzekazywanie informacji

Page 40: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Projek

tant

Projek

tant

Inspekcje Fagana

Implementator

Implementator

Modera

tor

Modera

tor Tester

Tester

Sesja

przeglądu

Page 41: 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

Proktan

t

Proktan

t Implem.

Implem.

Modera

tor

Modera

tor Tester

Tester

Reviewsession

Page 42: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

Pro

jekt

Pro

jekt

KodKod

Test

Test

Specyfikacje zewnętrzne (funkcje)Specyfikacje wewnętrzne (moduł) - I0 Specyfikacje logiki przetw - I1 inspek projek

Kodowanie (logika) - I2 inspek koduTestowanie jednostkowe

Cykl życiaCykl życia

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

Page 43: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

DesignDesign CodeCode UnitUnittesttest

I1 I2 I3

Oszczędności (godz/KLOC):

I1: 94

I2 : 51

I3 : -20

Page 44: 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 45: 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

ExEx

Wr

Wr

Mis

sing

Mis

sing

Page 46: 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 47: 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 48: Kontrola jakości oprogramowania

J.Nawrocki, Kontrola jakości ...

Pytania?

Page 49: 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 50: 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