background image

Pomiary w 

Pomiary w 

inżynierii 

inżynierii 

oprogramowania

oprogramowania

Jarosław Kuchta

Jarosław Kuchta

Dokumentacja i Jakość 

Dokumentacja i Jakość 

Oprogramowania

Oprogramowania

background image

Dokumentacja i Jakość 
Oprogramowania

2

Pomiary w inżynierii 

oprogramowania

Cel pomiarów

Cel pomiarów

ocena jakości produktu

ocena jakości produktu

ocena procesów (produktywności ludzi)

ocena procesów (produktywności ludzi)

stworzenie podstawy dla szacowania

stworzenie podstawy dla szacowania

ocena korzyści (nowe techniki i narzędzia)

ocena korzyści (nowe techniki i narzędzia)

ocena potrzeby nowych narzędzi lub szkoleń

ocena potrzeby nowych narzędzi lub szkoleń

background image

Dokumentacja i Jakość 
Oprogramowania

3

Pomiary w inżynierii 

oprogramowania

Kategorie pomiarów

Kategorie pomiarów

pomiary bezpośrednie (np. długość, czas)

pomiary bezpośrednie (np. długość, czas)

pomiary pośrednie

pomiary pośrednie

background image

Dokumentacja i Jakość 
Oprogramowania

4

Pomiary w inżynierii 

oprogramowania

Kategorie pomiarów w 

Kategorie pomiarów w 

inżynierii 

inżynierii 

oprogramowania

oprogramowania

Metryki techniczne

Metryki techniczne

złożoność, modularność

złożoność, modularność

Metryki jakości

Metryki jakości

spełnienie wymagań 

spełnienie wymagań 

użytkownika

użytkownika

Metryki produktywności

Metryki produktywności

wydajność procesu 

wydajność procesu 

wytwarzania

wytwarzania

Metryki zorientowane na rozmiar

Metryki zorientowane na rozmiar

odnoszą się do rozmiaru kodu

odnoszą się do rozmiaru kodu

Metryki zorientowane na funkcje

Metryki zorientowane na funkcje

odnoszą się do liczby funkcji

odnoszą się do liczby funkcji

Metryki zorientowane na ludzi

Metryki zorientowane na ludzi

odnoszą się do pracy ludzkiej

odnoszą się do pracy ludzkiej

Metryki 

techniczne

Metryki jakości

Metryki 

produktywności

Metryki 

zorientowane na 

rozmiar

Metryki 

zorientowane na 

funkcje

Metryki 

zorientowane na 

ludzi

background image

Dokumentacja i Jakość 
Oprogramowania

5

Pomiary w inżynierii 

oprogramowania

Metryki zorientowane 

Metryki zorientowane 

na rozmiar (1)

na rozmiar (1)

Metryki bezpośrednie

Metryki bezpośrednie

wielkość kodu [KLOC]

wielkość kodu [KLOC]

wielkość dokumentacji [strony]

wielkość dokumentacji [strony]

pracochłonność [osobomiesiące]

pracochłonność [osobomiesiące]

koszt

koszt

liczba defektów

liczba defektów

background image

Dokumentacja i Jakość 
Oprogramowania

6

Pomiary w inżynierii 

oprogramowania

Metryki zorientowane 

Metryki zorientowane 

na rozmiar (2)

na rozmiar (2)

Metryki pośrednie

Metryki pośrednie

produktywność = wielkość 

produktywność = wielkość 

kodu/pracochłonność

kodu/pracochłonność

awaryjność = ilość defektów/wielkość kodu

awaryjność = ilość defektów/wielkość kodu

kosztowność = koszt/wielkość kodu

kosztowność = koszt/wielkość kodu

udokumentowanie = wielkość 

udokumentowanie = wielkość 

dokumentacji/wielkość kodu

dokumentacji/wielkość kodu

background image

Dokumentacja i Jakość 
Oprogramowania

7

Pomiary w inżynierii 

oprogramowania

Metryki zorientowane 

Metryki zorientowane 

na rozmiar (za i 

na rozmiar (za i 

przeciw)

przeciw)

Za

Za

wielkość kodu może 

wielkość kodu może 

być łatwo policzona

być łatwo policzona

wielkość kodu jest 

wielkość kodu jest 

używana w wielu 

używana w wielu 

modelach szacowania 

modelach szacowania 

oprogramowania

oprogramowania

wpływ wielkości kodu 

wpływ wielkości kodu 

jest dobrze 

jest dobrze 

udokumentowany

udokumentowany

Przeciw

Przeciw

wielkość kodu jest 

wielkość kodu jest 

zależna od języka 

zależna od języka 

programowania

programowania

zwięzłe, krótkie 

zwięzłe, krótkie 

programy mają gorsze 

programy mają gorsze 

wskaźniki

wskaźniki

nie nadają się dla 

nie nadają się dla 

języków 

języków 

nieproceduralnych

nieproceduralnych

szacowanie wielkości 

szacowanie wielkości 

kodu jest konieczne 

kodu jest konieczne 

przed rozpoczęciem 

przed rozpoczęciem 

kodowania

kodowania

background image

Dokumentacja i Jakość 
Oprogramowania

8

Pomiary w inżynierii 

oprogramowania

Metryki zorientowane 

Metryki zorientowane 

na funkcje

na funkcje

punkty funkcyjne (FP – Function Points)

punkty funkcyjne (FP – Function Points)

punkty funkcjonalne (FP – Feature Points)

punkty funkcjonalne (FP – Feature Points)

background image

Dokumentacja i Jakość 
Oprogramowania

9

Pomiary w inżynierii 

oprogramowania

Punkty funkcyjne (1)

Punkty funkcyjne (1)

Parametr pomiarowy

Liczb

a

Współczynnik wagowy

Liczba 

ważona

Prosty

Średni

Złożony

Liczba wejść od 

użytkownika

× 3

4

6 =

Liczba wyjść do 

użytkownika

× 4

5

7 =

Liczba interakcji z 

użytkownikiem

× 3

4

6 =

Liczba plików

× 7

10

15 =

Liczba interfejsów 

zewnętrznych

× 5

7

10 =

Liczba punktów

background image

Dokumentacja i Jakość 
Oprogramowania

10

Pomiary w inżynierii 

oprogramowania

Punkty funkcyjne (2)

Punkty funkcyjne (2)

1.

1.

Czy system wymaga wiarygodnego zachowywania i odzyskiwania danych?

Czy system wymaga wiarygodnego zachowywania i odzyskiwania danych?

2.

2.

Czy wymagane jest przekazywanie danych?

Czy wymagane jest przekazywanie danych?

3.

3.

Czy występują funkcje przetwarzania rozproszonego?

Czy występują funkcje przetwarzania rozproszonego?

4.

4.

Czy wydajność jest krytyczna?

Czy wydajność jest krytyczna?

5.

5.

Czy system ma pracować w istniejącym, trudnym środowisku operacyjnym?

Czy system ma pracować w istniejącym, trudnym środowisku operacyjnym?

6.

6.

Czy system wymaga wprowadzania danych 

Czy system wymaga wprowadzania danych 

on-line

on-line

?

?

7.

7.

Czy dane wprowadzane 

Czy dane wprowadzane 

on-line

on-line

 wymagają transakcji wejściowych 

 wymagają transakcji wejściowych 

zbudowanych na wielu ekranach lub operacjach?

zbudowanych na wielu ekranach lub operacjach?

8.

8.

Czy główne pliki są aktualizowane 

Czy główne pliki są aktualizowane 

on-line

on-line

?

?

9.

9.

Czy wejścia, wyjścia, pliki lub interakcje są złożone?

Czy wejścia, wyjścia, pliki lub interakcje są złożone?

10.

10.

Czy wewnętrzne przetwarzanie jest złożone?

Czy wewnętrzne przetwarzanie jest złożone?

11.

11.

Czy kod jest zaprojektowany do powtórnego wykorzystania?

Czy kod jest zaprojektowany do powtórnego wykorzystania?

12.

12.

Czy konwersja i instalacja jest zawarta w projekcie?

Czy konwersja i instalacja jest zawarta w projekcie?

13.

13.

Czy system został zaprojektowany dla wielu instalacji w różnych 

Czy system został zaprojektowany dla wielu instalacji w różnych 

organizacjach?

organizacjach?

14.

14.

Czy aplikacja jest zaprojektowana w sposób przyjazny dla użytkownika i 

Czy aplikacja jest zaprojektowana w sposób przyjazny dla użytkownika i 

tak, by ułatwiać wprowadzanie zmian?

tak, by ułatwiać wprowadzanie zmian?

F

i

:

brak wpływu incydentalnie

umiarkowanieśrednio znacząco zasadniczo

0

1

2

3

4

5

background image

Dokumentacja i Jakość 
Oprogramowania

11

Pomiary w inżynierii 

oprogramowania

Punkty funkcyjne (3)

Punkty funkcyjne (3)

FP = liczba punktów × [0,65 + 0,01 x 

FP = liczba punktów × [0,65 + 0,01 x 

Sum(F

Sum(F

i

i

)]

)]

Metryki pośrednie

Metryki pośrednie

produktywność = FP/pracochłonność

produktywność = FP/pracochłonność

awaryjność = ilość defektów/FP

awaryjność = ilość defektów/FP

kosztowność = koszt/FP

kosztowność = koszt/FP

udokumentowanie = wielkość 

udokumentowanie = wielkość 

dokumentacji/FP

dokumentacji/FP

background image

Dokumentacja i Jakość 
Oprogramowania

12

Pomiary w inżynierii 

oprogramowania

Punkty funkcjonalne

Punkty funkcjonalne

Parametr pomiarowy

Liczb

a

Waga

Liczba 

ważona

Liczba wejść od 

użytkownika

×

4

=

Liczba wyjść do 

użytkownika

×

5

=

Liczba interakcji z 

użytkownikiem

×

4

=

Liczba plików

×

7

=

Liczba interfejsów 

zewnętrznych

×

7

=

Algorytmy

×

3

=

Liczba punktów

background image

Dokumentacja i Jakość 
Oprogramowania

13

Pomiary w inżynierii 

oprogramowania

Punkty funkcyjne/ 

Punkty funkcyjne/ 

funkcjonalne 

funkcjonalne 

(za i przeciw)

(za i przeciw)

Za

Za

są niezależne od języka 

są niezależne od języka 

programowania

programowania

nadają się zarówno dla 

nadają się zarówno dla 

języków 

języków 

proceduralnych jak i 

proceduralnych jak i 

nieproceduralnych

nieproceduralnych

mogą być stosowane 

mogą być stosowane 

we wczesnych fazach 

we wczesnych fazach 

planowania

planowania

Przeciw

Przeciw

obliczenia mają 

obliczenia mają 

charakter częściowo 

charakter częściowo 

subiektywny

subiektywny

dane są trudne do 

dane są trudne do 

zebrania

zebrania

nie mają 

nie mają 

bezpośredniego 

bezpośredniego 

znaczenia fizycznego

znaczenia fizycznego

background image

Dokumentacja i Jakość 
Oprogramowania

14

Pomiary w inżynierii 

oprogramowania

Zależność LOC/FP dla 

Zależność LOC/FP dla 

różnych języków 

różnych języków 

programowania

programowania

Język programowania

Język programowania

LOC/FP

LOC/FP

Asembler

Asembler

300

300

COBOL

COBOL

100

100

FORTRAN

FORTRAN

100

100

PASCAL

PASCAL

90

90

ADA

ADA

70

70

Języki obiektowe

Języki obiektowe

30

30

Języki czwartej 

Języki czwartej 

generacji

generacji

20

20

Generatory kodu

Generatory kodu

15

15

background image

Dokumentacja i Jakość 
Oprogramowania

15

Pomiary w inżynierii 

oprogramowania

Metryki złożoności

Metryki złożoności

metryka Halsteada

metryka Halsteada

metryka cyklometryczna McCabe’a

metryka cyklometryczna McCabe’a

background image

Dokumentacja i Jakość 
Oprogramowania

16

Pomiary w inżynierii 

oprogramowania

Metryki Halsteada (1)

Metryki Halsteada (1)

n

n

1

1

 – liczba różnych operatorów w programie

 – liczba różnych operatorów w programie

n

n

2

2

 – liczba różnych operandów w programie

 – liczba różnych operandów w programie

N

N

1

1

 – całkowita liczba operatorów

 – całkowita liczba operatorów

N

N

2

2

 – całkowita liczba operandów

 – całkowita liczba operandów

background image

Dokumentacja i Jakość 
Oprogramowania

17

Pomiary w inżynierii 

oprogramowania

Metryki Halsteada – 

Metryki Halsteada – 

przykład (1)

przykład (1)

   

   

Sub

Sub

 Sort(X,N)

 Sort(X,N)

Dim

Dim

 X(N)

 X(N)

If

If

 N<2 

 N<2 

Return

Return

For

For

 I = 2 

 I = 2 

To

To

 N

 N

  

  

For

For

 J = 1 

 J = 1 

To

To

 I

 I

    

    

IF

IF

 X(I)<X(J) 

 X(I)<X(J) 

Then

Then

      

      

Save = X(I)

Save = X(I)

      

      

X(I) = X(J)

X(I) = X(J)

      

      

X(J) = Save

X(J) = Save

    

    

End If

End If

  

  

Next

Next

Next

Next

   

   

End Sub

End Sub

Lp

Lp

Operator

Operator

Liczba

Liczba

1

1

koniec instrukcji

koniec instrukcji

7

7

2

2

indeksowanie

indeksowanie

6

6

3

3

=

=

5

5

4

4

IF

IF

2

2

5

5

FOR

FOR

2

2

6

6

,

,

2

2

7

7

<

<

2

2

8

8

RETURN

RETURN

1

1

9

9

koniec programu

koniec programu

1

1

n

n

1

1

=9

=9

N

N

1

1

=28

=28

background image

Dokumentacja i Jakość 
Oprogramowania

18

Pomiary w inżynierii 

oprogramowania

Metryki Halsteada – 

Metryki Halsteada – 

przykład (2)

przykład (2)

   

   

Sub

Sub

 Sort(X,N)

 Sort(X,N)

Dim

Dim

 X(N)

 X(N)

If

If

 N<2 

 N<2 

Return

Return

For

For

 I = 2 

 I = 2 

To

To

 N

 N

  

  

For

For

 J = 1 

 J = 1 

To

To

 I

 I

    

    

IF

IF

 X(I)<X(J) 

 X(I)<X(J) 

Then

Then

      

      

Save = X(I)

Save = X(I)

      

      

X(I) = X(J)

X(I) = X(J)

      

      

X(J) = Save

X(J) = Save

    

    

End If

End If

  

  

Next

Next

Next

Next

   

   

End Sub

End Sub

Lp

Lp

Operand

Operand

Liczba

Liczba

1

1

X

X

6

6

2

2

I

I

5

5

3

3

J

J

4

4

4

4

N

N

2

2

5

5

2

2

2

2

6

6

Save

Save

2

2

7

7

1

1

1

1

n

n

2

2

=7

=7

N

N

2

2

=22

=22

background image

Dokumentacja i Jakość 
Oprogramowania

19

Pomiary w inżynierii 

oprogramowania

Metryki Halsteada (3)

Metryki Halsteada (3)

długość programu: 

długość programu: 

N

N

 = 

 = 

N1 + N2

N1 + N2

rozmiar słownika:

rozmiar słownika:

 

 

n = n

n = n

1

1

 + n

 + n

2

2

objętość algorytmu: 

objętość algorytmu: 

V

V

 = 

 = 

N

N

 log

 log

2

2

(

(

n

n

)

)

stosowana zamiast LOC

stosowana zamiast LOC

objętość funkcji powinna być od 20 do 1000

objętość funkcji powinna być od 20 do 1000

objętość pliku powinna być od 100 do 8000

objętość pliku powinna być od 100 do 8000

poziom trudności: 

poziom trudności: 

D = (n

D = (n

1

1

/2)*(N

/2)*(N

2

2

/n

/n

2

2

)

)

wyznacza stopień odporności na błędy

wyznacza stopień odporności na błędy

poziom programu: 

poziom programu: 

L = 1/D

L = 1/D

wysiłek implementacyjny

wysiłek implementacyjny

E = V*D

E = V*D

czas na implementację: 

czas na implementację: 

T = E/18

T = E/18

 (w sekundach)

 (w sekundach)

liczba potencjalnych błędów

liczba potencjalnych błędów

B = E 

B = E 

(2/3)

(2/3)

  / 3000

  / 3000

 

 

background image

Dokumentacja i Jakość 
Oprogramowania

20

Pomiary w inżynierii 

oprogramowania

Metryka złożoności 

Metryka złożoności 

cyklometrycznej 

cyklometrycznej 

McCabe’a

McCabe’a

R

1

R

2

R

3

R

4

R

5

v(G) = 5

oznacza liczbę potencjalnych ścieżek wykonania
dla funkcji powinna nie większa niż 15
dla plików powinna nie większa niż 100

background image

Dokumentacja i Jakość 
Oprogramowania

21

Pomiary w inżynierii 

oprogramowania

Spójność grafów

Spójność grafów

Spójność grafu

Spójność grafu

spójność słaba

spójność słaba

nierozdzielność (węzłowa, krawędziowa)

nierozdzielność (węzłowa, krawędziowa)

spójność silna

spójność silna

background image

Dokumentacja i Jakość 
Oprogramowania

22

Pomiary w inżynierii 

oprogramowania

Ankiety 

Ankiety 

(kwestionariusze)

(kwestionariusze)

Brak metryk obiektywnych

Brak metryk obiektywnych

Duża subiektywność

Duża subiektywność

Wymuszenie obiektywności – pytania 

Wymuszenie obiektywności – pytania 

tak/nie

tak/nie

Duża liczba pytań

Duża liczba pytań

niechęć do odpowiedzi

niechęć do odpowiedzi

nierzetelność odpowiedzi

nierzetelność odpowiedzi

Wiarygodność oceny

Wiarygodność oceny

Duża liczba oceniających

Duża liczba oceniających

background image

Dokumentacja i Jakość 
Oprogramowania

23

Pomiary w inżynierii 

oprogramowania

Bibliografia

Bibliografia

Pressman R.S., 

Pressman R.S., 

Software engineering. A 

Software engineering. A 

practitioner’s approach

practitioner’s approach

, McGraw-Hill, 

, McGraw-Hill, 

International Edition, 1992

International Edition, 1992

Halstead Maurice, 

Halstead Maurice, 

Elements of Software 

Elements of Software 

Science

Science

, Elsevier Science Ltd, 1977

, Elsevier Science Ltd, 1977

http://www-ivs.cs.uni-magdeburg.de/sw-en

http://www-ivs.cs.uni-magdeburg.de/sw-en

g/us/experiments/hals/

g/us/experiments/hals/

http://yunus.hacettepe.edu.tr/~sencer/co

http://yunus.hacettepe.edu.tr/~sencer/co

mplexity.html

mplexity.html


Document Outline