Pomiary w
Pomiary w
inżynierii
inżynierii
oprogramowania
oprogramowania
Jarosław Kuchta
Jarosław Kuchta
Dokumentacja i Jakość
Dokumentacja i Jakość
Oprogramowania
Oprogramowania
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ń
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
http://yunus.hacettepe.edu.tr/~sencer/co
http://yunus.hacettepe.edu.tr/~sencer/co
mplexity.html
mplexity.html