1 Pomiary w inżynierii oprogramowaniaJarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania Pomiary w inżynierii oprogramowania
2 Pomiary w inżynierii oprogramowaniaCel pomiarów ocena jakości produktu ocena procesów (produktywności ludzi) stworzenie podstawy dla szacowania ocena korzyści (nowe techniki i narzędzia) ocena potrzeby nowych narzędzi lub szkoleń Jakość Oprogramowania Pomiary w inżynierii oprogramowania
3 Pomiary w inżynierii oprogramowaniaKategorie pomiarów pomiary bezpośrednie (np. długość, czas) pomiary pośrednie Jakość Oprogramowania Pomiary w inżynierii oprogramowania
4 Kategorie pomiarów w inżynierii oprogramowaniaMetryki techniczne złożoność, modularność Metryki jakości spełnienie wymagań użytkownika Metryki produktywności wydajność procesu wytwarzania Metryki zorientowane na rozmiar odnoszą się do rozmiaru kodu Metryki zorientowane na funkcje odnoszą się do liczby funkcji Metryki zorientowane na ludzi 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 Jakość Oprogramowania Pomiary w inżynierii oprogramowania
5 Metryki zorientowane na rozmiar (1)Metryki bezpośrednie wielkość kodu [KLOC] wielkość dokumentacji [strony] pracochłonność [osobomiesiące] koszt liczba defektów Jakość Oprogramowania Pomiary w inżynierii oprogramowania
6 Metryki zorientowane na rozmiar (2)Metryki pośrednie produktywność = wielkość kodu/pracochłonność awaryjność = ilość defektów/wielkość kodu kosztowność = koszt/wielkość kodu udokumentowanie = wielkość dokumentacji/wielkość kodu Jakość Oprogramowania Pomiary w inżynierii oprogramowania
7 Metryki zorientowane na rozmiar (za i przeciw)wielkość kodu może być łatwo policzona wielkość kodu jest używana w wielu modelach szacowania oprogramowania wpływ wielkości kodu jest dobrze udokumentowany Przeciw wielkość kodu jest zależna od języka programowania zwięzłe, krótkie programy mają gorsze wskaźniki nie nadają się dla języków nieproceduralnych szacowanie wielkości kodu jest konieczne przed rozpoczęciem kodowania Jakość Oprogramowania Pomiary w inżynierii oprogramowania
8 Metryki zorientowane na funkcjepunkty funkcyjne (FP – Function Points) punkty funkcjonalne (FP – Feature Points) Jakość Oprogramowania Pomiary w inżynierii oprogramowania
9 Pomiary w inżynierii oprogramowaniaPunkty funkcyjne (1) Parametr pomiarowy Liczba 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 Liczba plików × 7 10 15 = Liczba interfejsów zewnętrznych × 5 7 10 = Liczba punktów Jakość Oprogramowania Pomiary w inżynierii oprogramowania
10 Pomiary w inżynierii oprogramowaniaPunkty funkcyjne (2) Fi: 1 2 3 4 5 brak wpływu incydentalnie umiarkowanie średnio znacząco zasadniczo Czy system wymaga wiarygodnego zachowywania i odzyskiwania danych? Czy wymagane jest przekazywanie danych? Czy występują funkcje przetwarzania rozproszonego? Czy wydajność jest krytyczna? Czy system ma pracować w istniejącym, trudnym środowisku operacyjnym? Czy system wymaga wprowadzania danych on-line? Czy dane wprowadzane on-line wymagają transakcji wejściowych zbudowanych na wielu ekranach lub operacjach? Czy główne pliki są aktualizowane on-line? Czy wejścia, wyjścia, pliki lub interakcje są złożone? Czy wewnętrzne przetwarzanie jest złożone? Czy kod jest zaprojektowany do powtórnego wykorzystania? Czy konwersja i instalacja jest zawarta w projekcie? Czy system został zaprojektowany dla wielu instalacji w różnych organizacjach? Czy aplikacja jest zaprojektowana w sposób przyjazny dla użytkownika i tak, by ułatwiać wprowadzanie zmian? Jakość Oprogramowania Pomiary w inżynierii oprogramowania
11 Punkty funkcyjne (3) FP = liczba punktów × [0,65 + 0,01 x Sum(Fi)]Metryki pośrednie produktywność = FP/pracochłonność awaryjność = ilość defektów/FP kosztowność = koszt/FP udokumentowanie = wielkość dokumentacji/FP Jakość Oprogramowania Pomiary w inżynierii oprogramowania
12 Pomiary w inżynierii oprogramowaniaPunkty funkcjonalne Parametr pomiarowy Liczba Waga Liczba ważona Liczba wejść od użytkownika × 4 = Liczba wyjść do użytkownika 5 Liczba interakcji z użytkownikiem Liczba plików 7 Liczba interfejsów zewnętrznych Algorytmy 3 Liczba punktów Jakość Oprogramowania Pomiary w inżynierii oprogramowania
13 Punkty funkcyjne/ funkcjonalne (za i przeciw)są niezależne od języka programowania nadają się zarówno dla języków proceduralnych jak i nieproceduralnych mogą być stosowane we wczesnych fazach planowania Przeciw obliczenia mają charakter częściowo subiektywny dane są trudne do zebrania nie mają bezpośredniego znaczenia fizycznego Jakość Oprogramowania Pomiary w inżynierii oprogramowania
14 Zależność LOC/FP dla różnych języków programowaniaJęzyk programowania LOC/FP Asembler 300 COBOL 100 FORTRAN PASCAL 90 ADA 70 Języki obiektowe 30 Języki czwartej generacji 20 Generatory kodu 15 Jakość Oprogramowania Pomiary w inżynierii oprogramowania
15 Pomiary w inżynierii oprogramowaniaMetryki złożoności metryka Halsteada metryka cyklometryczna McCabe’a Jakość Oprogramowania Pomiary w inżynierii oprogramowania
16 Pomiary w inżynierii oprogramowaniaMetryki Halsteada (1) n1 – liczba różnych operatorów w programie n2 – liczba różnych operandów w programie N1 – całkowita liczba operatorów N2 – całkowita liczba operandów Jakość Oprogramowania Pomiary w inżynierii oprogramowania
17 Metryki Halsteada – przykład (1)Sub Sort(X,N) Dim X(N) If N<2 Return For I = 2 To N For J = 1 To I IF X(I)
18 Metryki Halsteada – przykład (2)Sub Sort(X,N) Dim X(N) If N<2 Return For I = 2 To N For J = 1 To I IF X(I)
19 Pomiary w inżynierii oprogramowaniaMetryki Halsteada (3) długość programu: N = N1 + N2 rozmiar słownika: n = n1 + n2 objętość algorytmu: V = N log2(n) stosowana zamiast LOC objętość funkcji powinna być od 20 do 1000 objętość pliku powinna być od 100 do 8000 poziom trudności: D = (n1/2)*(N2/n2) wyznacza stopień odporności na błędy poziom programu: L = 1/D wysiłek implementacyjny: E = V*D czas na implementację: T = E/18 (w sekundach) liczba potencjalnych błędów: B = E (2/3) / 3000 Jakość Oprogramowania Pomiary w inżynierii oprogramowania
20 Metryka złożoności cyklometrycznej McCabe’av(G) = 5 R3 R4 oznacza liczbę potencjalnych ścieżek wykonania dla funkcji powinna nie większa niż 15 dla plików powinna nie większa niż 100 Jakość Oprogramowania Pomiary w inżynierii oprogramowania
21 Pomiary w inżynierii oprogramowaniaSpójność grafów Spójność grafu spójność słaba nierozdzielność (węzłowa, krawędziowa) spójność silna Jakość Oprogramowania Pomiary w inżynierii oprogramowania
22 Ankiety (kwestionariusze)Brak metryk obiektywnych Duża subiektywność Wymuszenie obiektywności – pytania tak/nie Duża liczba pytań niechęć do odpowiedzi nierzetelność odpowiedzi Wiarygodność oceny Duża liczba oceniających Jakość Oprogramowania Pomiary w inżynierii oprogramowania
23 Pomiary w inżynierii oprogramowaniaBibliografia Pressman R.S., Software engineering. A practitioner’s approach, McGraw-Hill, International Edition, 1992 Halstead Maurice, Elements of Software Science, Elsevier Science Ltd, 1977 Jakość Oprogramowania Pomiary w inżynierii oprogramowania