background image

1

Inżynieria oprogramowania

wykład 7

Zapewnienie jakości 

oprogramowania

background image

2/33

Zapewnienie jakości

jest podstawowym priorytetem stosowania inżynierii 
oprogramowania

jest czynnością przekrojową → wykonywaną na 
każdym etapie procesu wytwórczego

zapewnienie jakości obejmuje następujące czynności:

zarządzanie jakością

metody i narzędzia wspomagające stosowanie inżynierii 
oprogramowania

przeglądy techniczne na różnych etapach procesu 
wytwórczego

testowanie produktu

zarządzanie dokumentacją

zapewnienie zgodności oprogramowania ze standardami

prowadzenie pomiarów i raportowanie 

background image

3/33

Definicja jakości w sensie 
ogólnym

jakość (w jęz. grec. poiotes) – przyjmuje się że po raz 1. 
użył go Platon, a oznaczało „pewien stopień
doskonałości”, jakość posiada cechy obiektywne -
mierzalne (np. kształt, masa) i subiektywne (np. barwa, 
zapach) (źródło: pl.wikipedia.org)

Cyceron wprowadził łaciński odpowiednik qualitas
tłumaczone jako ang. quality (źródło: pl.wikipedia.org)

„wartość czegoś” (źródło: http://sjp.pwn.pl)

„istotne cechy przedmiotu wyróżniające go spośród 
innych” (źródło:

http://sjp.pwn.pl/

)

background image

4/33

Jakość w inżynierii oprogramowania

podstawą do mierzenia jakości są ściśle 
sformułowane wymagania – odstępstwa od nich 
oznaczają niską jakość

oprogramowanie powinno powstawać z 
zachowanie norm, odstępstwo od norm 
prowadzi często do obniżania jakości

oprogramowanie powinno spełniać również
wymagania niepisane, zwyczajowe (np. łatwość
obsługi)  

background image

5/33

Definicja dobrego oprogramowania

definicja dobrego oprogramowania wg Roberta Glassa 
(Defending Quality Intuitively, IEEE Software,1998):

satysfakcja użytkownika = działający produkt + dobra 
jakość + dotrzymany budżet i harmonogram

background image

6/33

Czynniki wpływające istotnie 
na jakość oprogramowania

mierzalne bezpośrednio, np. liczba usterek na 
punkt funkcyjny

mierzalne pośrednio – np. pielęgnowalność, 
łatwość użytkowania 

background image

7/33

Rodzaje jakości wg cech 
mierzalnych

jakość projektu → oparta na cechach projektu 
ustalonych przez projektantów

np. efektywność

dotyczy specyfikacji wymagań i projektu systemu

jakość wykonania – związana z dokładnością
realizacji projektu

znaczenie ujawnia się na etapie implementacji

background image

8/33

Czynniki jakości wg McCalla*

zgodność ze specyfikacją i potrzebami klienta

niezawodność – zdolność wykonywania zadań z określoną
dokładnością

efektywność – zasoby i wielkość kodu potrzebne do funkcjonowania 
programu

integralność – kontrola dostępu do programu i danych

łatwość użytkowania – obsługa, łatwość wprowadzania danych i 
korzystanie z danych wyjściowych

pielęgnowalność – łatwość zdiagnozowania i usunięcia usterek

elastyczność – łatwość modyfikacji programu

testowalność – łatwość testowania programu i stwierdzania 
poprawności działania

przenośność do innego środowiska sprzętowego/programowego

możliwość ponownego użycia programu/części programu w innych 
programach

współoperatywność – łatwość połączenia z innym systemem 

* J. McCall, P. Richards, G. Walters: Factors in software quality, NTIS, 1977 

background image

9/33

Kontrola jakości

polega na ocenie różnorodności (minimalizacja 
wśród egzemplarzy tego samego typu)

może odbywać się w oparciu o dane 
historyczne

realizowana poprzez wykonywanie inspekcji, 
przeglądów i testów

jest oceną skuteczności działań procesu 
wytwórczego

czynności kontrolne mogą być częściowo lub 
całkowicie zautomatyzowane lub prowadzone 
„ręcznie”

background image

10/33

Koszt jakości

analiza kosztu jakości może stanowić cenne 
dane porównawcze w przyszłych 
przedsięwzięciach oraz cenne źródło 
poszukiwań możliwości zapewnienia jakości 
mniejszymi środkami

składniki kosztu jakości:

czynności zapobiegające

ocena

usuwanie skutków

background image

11/33

Składniki kosztu jakości

koszt zapobiegania

planowanie jakości

formalne przeglądy techniczne

testowanie

szkolenia

koszt oceniania

inspekcja procesu wytwórczego

konfigurowanie i pielęgnacja narzędzi

testowanie

koszt niepowodzeń wewnętrznych (przed udost. użytk.)

przeróbki, poprawki, analiza wykrytych błędów

koszt niepowodzeń zewnętrznych

analiza zgłoszonej usterki, zwrot lub wymiana produktu, pomoc 
użytkownikom, naprawy gwarancyjne

background image

12/33

Względny koszt poprawiania błędu na 
różnych etapach procesu wytwórczego*

w

z

g

d

n

y

 k

o

s

z

p

o

p

ra

w

ia

n

ia

 b

łę

d

u

1

3-6

10

15-40

30-70

40-1000

w

ym

ag

an

ia

pr

oj

ek

t

ko

do

w

an

ie

te

st

lo

ka

ln

e

te

st

sy

st

em

ow

e

po

 

w

dr

en

iu

* B. Boehm: Software Engineering Economics, Prentice-Hall,1981 

background image

13/33

Zarządzanie jakością -TQM

termin ten powstał w latach 70-80 XX. wieku w Japonii

TQM – total quality management (kompleksowe 
kierowanie jakością)

4 kroki zarządzania jakością

kaizen → usprawnianie realizowanego procesu wytwórczego 
(przejrzysty, mierzalny, powtarzalny)

atarimae hinshitsu → analiza czynników negatywnie 
wpływających na proces wytwórczy

kansei → analiza użytkowania produktu

miryokuteki hinshitsu → nowy produkt na bazie aktualnego 
jako odpowiedź na odbiór produktu przez rynek 

background image

14/33

Czynności prowadzące do zapewnienia 
jakości (zespół kontroli jakości)

planowanie zapewnienia jakości

sposoby oceny jakości

rodzaje inspekcji i przeglądów

normy wykorzystywane do realizacji przedsięwzięcia

procedury obsługi błędów (wyszukiwania i zgłaszania)

dokumentacja związana z kontrolą jakości

informacje dla zespołu wytwórczego

sprawdzanie zgodności modelu proc. wytw. z normami i planem 
przedsięwzięcia

sprawdzanie zgodności prac wytwórczych z przyjętym rodzajem proc. wytw.

kontrola produktu roboczego z wymaganiami

zapewnienie dokumentowania i poprawianie sytuacji odstępstw od założeń
procesu wytwórczego i produktu

archiwizowanie dokumentacji o odstępstwach i niezgodnościach a także 
raportowanie o tego typu sytuacji 

background image

15/33

Przeglądy techniczne 
oprogramowania w kontroli jakości

prowadzą je głównie twórcy oprogramowania

cele

wykrycie błędów w oprogramowaniu 
(funkcjonowanie, struktura logiczna, implementacja)

porównanie zgodności z założeniami

sprawdzenie zgodności z normami

uzyskanie spójnego sposobu wytwarzania

pomoc z zarządzaniu przedsięwzięciem 
programistycznym

background image

16/33

Statystyczne metody zapewnienia 
jakości

zebranie, sklasyfikowanie i pogrupowanie danych o 
usterkach

analiza przyczyn powstawania usterek (błędy 
projektowe, naruszenie norm, niezgodność ze 
specyfikacją, niepoprawna komunikacja z 
użytkownikami)

wybór (wg zasady Pareto – 20% najważniejszych 
zagrożeń powoduje 80% usterek) 20% głównych 
przyczyn występowania usterek

rozwiązanie problemów powodujących wybrane (jak 
wyżej) usterki

obliczanie indeksu błędów (EI)

background image

17/33

Obliczanie indeksu błędów (EI)

indeks obliczany jest dla każdego etapu (i) procesu wytwórczego

indeks obliczany jest na podstawie tabeli zawierającej zestawienie 
błędów z podziałem na rodzaj błędu i skutki: poważne (S

i

), 

umiarkowane (M

i

), drobne (T

i

)

obliczanie wielkości produktu PS [w liniach kodu]

określanie wag błędów, zalecane wartości: w

s

=10, w

m

=3, w

t

=1

dla każdego etapu proc. wytw. oblicza się indeks etapu PI

i

PI

i

=w

s

(S

i

/E

i

)+w

m

(M

i

/E

i

)+w

t

(T

i

/E

i

),

gdzie E

i

– całkowita liczba błędów na i-tym etapie proc. wytw.

obliczanie indeksu błędów (wagi zwiększają się dla kolejnych etapów 
procesu wytwórczego):
EI= Σ(i∙PI

i

)/PS=(PI

1

+2PI

2

+3PI

3

+…+iPI

i

)/PS

indeks błędów można wykorzystać do oceny poprawy jakości 
wytwarzanego produktu (oprogramowania)

background image

18/33

Niezawodność oprogramowania

jest stosunkowo łatwe do mierzenia i 
prognozowania

jest to prawdopodobieństwo bezawaryjnego 
działania programu komputerowego w 
określonym środowisku przez określony czas*

w kontekście jakości i niezawodności 
oprogramowania awaria jest rozumiana jako 
niezgodność z wymaganiami

* J. D. Musa, A. Iannino, K. Okomuko: Engineering and managing software with reliability measures, 
McGraw-Hill, 1987 

background image

19/33

Stosowanie modeli 
niezawodności

istnieją 2 główne aspekty zastosowania modeli 
niezawodności

ocena niezawodności wytworzonego produktu-
oprogramowania

mogą być użyte do oszacowania liczby niewykrytych defektów 
w oprogramowaniu dostarczonym klientowi

aproksymowana liczba defektów może służyć jako:

miara jakości produktu

miara do szacowania nakładów niezbędnych w fazie serwisu

stosowane metryki

liczba defektów lub liczba defektów na tysiąc linii kodu

czas między awariami

background image

20/33

Podział modeli niezawodności

statyczne → liczba defektów oceniana na podstawie innych 
parametrów  projektu lub jego części (rozmiar, złożoność, 
umiejętności zespołu) oraz uwzględniają błąd spowodowany 
śladowym wpływem mniej istotnych czynników, dane oparte na 
poprzednich projektach (bieżący projekt traktowany jako kolejna 
część poprzedniego), zwykle mniej dokładne niż dynamiczne, ale 
sprawdzają się w przypadkach małych jednostek (modułów) jako 
źródło wskazówek

dynamiczne → oparte na rozkładach statystycznych, korzystają
z wzorca pojawiania się defektów w aktualnym procesie, model 
ten odpowiada w znacznym stopniu rzeczywistości, sprawdzają
się przy weryfikacji hipotez (wpływ czynników na jakość lub 
niezawodność), dwa typy modeli: obejmujące cały proces 
wytwórczy lub tylko fazę testów 

background image

21/33

Rozkład Weibulla

m

c

t

m

e

c

t

t

m

t

f

)

/

(

)

(

)

(

m

c

t

e

1

t

F

)

/

(

)

(

gęstość prawdopodobieństwa

skumulowana funkcja rozkładu 

(dystrybunata)

m - współczynnik kształtu, c - współczynnik skali, t - czas

w analizie 

niezawodności 

oprogramowania 

stosowano rozkłady 

dla m=1 oraz m=2

0,0

0,5

1,0

1,5

2,0

0

0,5

1

1,5

2

2,5

3

m=0.5

m=1

m=2

m=4

m=6

background image

22/33

Model Rayleigha

należy do rodziny rozkładów Weibulla

jest przypadkiem szczególnym dla m=2

krzywa gęstości prawdopodobieństwa rośnie do osiągnięcia maksimum, 
potem maleje szybciej niż liniowo

po przyrównaniu pochodnej funkcji gęstości prawdopodobieństwa do 0 
otrzymuje się zależność na t

m

– czas osiągnięcia maksimum: t

m

=c/sqrt(2) 

po oszacowaniu t

m

można określić kształt krzywej rozkładu

obszar pod krzywą do punktu t

m

jest równy 39,35%

w rzeczywistych zastosowaniach wzór na funkcję gęstości 
prawdopodobieństwa mnożony jest przez stałą K wyrażającą całkowitą
liczbę defektów lub łączną częstość defektów

badania doświadczalne dowodzą zgodność rzeczywistych danych z tym 
modelem (np. wzorzec usuwania defektów)

background image

23/33

Model Rayleigha

1984, Gafney, jednostka czasu – model 6 faz cyklu produkcji stosowany w IBM

Gafney zaobserwował duże podobieństwo występowania defektów w 6 fazach cyklu 
produkcji oprogramowania do rozkładu Rayleigha

IO-przegląd projektu wysokiego poziomu, I1-przegląd projektu niskiego poziomu, I2-inspekcja 
kodu, UT-test jednostki, CT-test komponentu, ST-test systemu, GA-faza ogólnej dostępności

faza produkcji

c

z

ę

s

to

ś

ć

 d

e

fe

k

w

IO

I1

I2

UT

CT

ST

GA

background image

24/33

Założenia użycia krzywej Rayleigha do 
modelowania jakości oprogramowania (1)

1.

częstość defektów wykrytych w procesie wytwarzania oprogramowania 
jest dodatnio skorelowana z częstością defektów operacyjnych 
(wykrytych przez użytkownika) → im wyższa krzywa, tym wyższa 
częstość defektów operacyjnych (faza GA) i odwrotnie

faza produkcji

c

z

ę

s

to

ś

ć

 d

e

fe

k

w

IO

I1

I2

UT

CT

ST

GA

background image

25/33

Założenia użycia krzywej Rayleigha do 
modelowania jakości oprogramowania (2)

2.

im więcej defektów wykrytych i usuniętych we wczesnych faza 
wytwarzania oprogramowania, tym mniej pozostanie ich w fazach 
późniejszych (zakładając taką samą częstość wprowadzania 
błędów w całym procesie) → poprawa końcowej jakości produktu

faza produkcji

c

z

ę

s

to

ś

ć

 d

e

fe

k

w

IO

I1

I2

UT

CT

ST

GA

background image

26/33

Analiza zależności częstości 
defektów – przykład* 

tabela przedstawia przykładowe wartości współczynnika korelacji Spearmana (duża 
fluktuacja danych) między częstościami defektów w fazach produkcji oraz częstością
defektów operacyjnych

badany produkt składał się z 65 komponentów, dostępne były dane o wprowadzaniu i 
wykrywaniu defektów we wszystkich fazach wytwarzania, również w czasie 
użytkowania

istotna korelacja istnieje dla faz I2, CT, ST oraz łącznie dla wszystkich, dane 
potwierdzają 1. założenie modelu Rayleigha

potwierdzenie 2. złożenia: badania w IBM Houston (Developing Error-Free Software, 
IEEE AES Magazine, 1988): odsetek wcześnie wykrytych defektów wzrósł z 50 do 
85%, a częstość defektów operacyjnych spadła o ok. 70%

0,01

0,31

Łącznie (IO, I1, I2, CT, ST)

0,0001

0,49

test systemu (ST)

0,0001

0,48

test komponentu (CT)

0,02

0,28

kodowanie (I2)

nieważne

0,01

projekt niskiego poziomu (I1)

nieważne

0,11

projekt wysokiego poziomu (IO)

poziom ważności

wart. wsp. korelacji

faza

* S. H. Kan: Metryki i modele w inżynierii oprogramowania, WN PWN, Warszawa, 2006

background image

27/33

Implementacje modelu 
Rayleigha

SLIM (Software Life-cycle Model) – opracowany przez 
Quantitative Software Management, pakiet pomagający 
ocenić wymagane zasoby (środki, czas i koszty) projektu, 
jedną z funkcjonalności jest szacowanie liczby defektów 
oprogramowania

STEER (Software Error Estimation Reporter, IBM, 1985) –
wykorzystuje wersję dyskretną modelu Rayleigha, dane 
procesu porównywane są z 11 wzorcami modelu oraz 
wzorcami użytkownika, modele zapisane są w postaci 
procentowego rozkładu liczby defektów w poszczególnych 
fazach procesu wytwórczego, algorytm dopasowujący 
składa się z transformacji logarytmicznej danych, 
obliczania wskaźnika separacji między wprowadzonymi 
danymi a modelami wzorcowymi oraz wybór modelu o 
najniższym wskaźniku separacji

background image

28/33

Miary niezawodności

w przypadku produktu typu maszyna awarie są najczęściej 
spowodowane zużyciem, bardzo rzadko błędami projektowymi

w przypadku oprogramowania jest dokładnie odwrotnie: błędy zużycia 
nie występują, awarie spowodowane są błędami projektowymi lub 
implementacją

średni czas międzyawaryjny (mean time between failure, MTBF) 

MTBF = MTTF + MTTR

MTTF – średni czas przedawaryjny (mean time to failure)

MTTR– średni czas do usunięcia awarii (mean time to repair)

dostępność oprogramowania (prawdopodobieństwo poprawnego 
działania w losowo wybranej chwili)

dostępność = ( MTTF/( MTTF+MTTR ) )∙100%

MTBF zależy w równym stopniu od MTTF i MTTR, dostępność zależy 
bardziej od MTTR

background image

29/33

Normy jakości – ISO 9000

oznaczają zgodność metod wytwarzania produktu z 
określonymi procedurami

celem stosowania jest zapewnienie jakości produktu

obejmują praktycznie każdy etap procesu wytwórczego, 
począwszy do planowania, poprzez zarządzani, 
prowadzenie pomiarów, testowanie, raportowanie

implementacja norm jest nie jest w nich zdefiniowana, 
należy do zadań osób zarządzających firmą i procesem 
wytwórczym

background image

30/33

Norma ISO 9001

zawiera 20 wymagań do spełnienia przez system 
zapewnienia jakości

zadania kierownictwa, system jakości, sprawdzanie projektów, 
dokumentacji, danych, zarządzanie procesami wytwórczymi, 
inspekcje i testowanie, czynności zapobiegawcze i naprawcze, 
zarządzanie danymi o jakości, wewnętrzne kontrole jakości, 
szkolenia i obsługa klienta, użycie metod statystycznych

specjalny zestaw procedur dla potrzeb wytwarzania 
oprogramowania znajduje się w normie ISO 9000-3

background image

31/33

Czynniki jakości w normie ISO 9126

najważniejsze cechy oprogramowania dobrej 
jakości:

funkcjonalność

niezawodność

łatwość użytkowania

efektywność

pielęgnowalność

przenośność

background image

32/33

Plan zapewnienia jakości

jest to schemat czynności zapewniających jakość

czynności:

określenie celu, zakresu i etapów proc. wytw. podlegających kontroli

określenie przywoływanych dokumentów i norm 

rola zapewnienia jakości strukturze organizacyjnej firmy

zadania i czynności zapewnienia jakości

określenie dokumentacji przedsięwzięcia, dokumentacji technicznej 
(specyfikacja, plany testów…), dokumentacji dla użytkownika (pomoc 
itp.)

opis norm i zasad stosowanych w procesie wytwórczym oraz miar 
produktu i procesu

lista przeglądów i audytów wraz z podaniem metod

testy: plany, procedury, gromadzenie i przechowywanie wyników, 
raportowanie, procedury wykrywania i poprawiania usterek

narzędzia i metody wspomagania zapewnienia jakości

background image

33

Dziękuję za uwagę

źródło: „Praktyczne podejście do inżynierii oprogramowania”, R.S. Pressman