Szacowanie złożoności oprogramowania Maciej Wereski & Michał Wolski
Wstęp Szacowanie kosztów wyznaczamy na podstawie: Kosztu sprzętu i oprogrmowania wraz z konserwacją Koszty podrózy i szkoleń Koszty pracy
Koszty pracy Udostępnienie, ogrzanie, oświetlenie przestrzeni biurowej Personel pomocniczy (sekretarki, księgowe, sprzątaczki) Sieć oraz telekomunikacja Udogodnienia centralne (biblioteka, pomieszczenia rekreacyjne) Ubezpieczenia społeczne oraz świadczenia dla pracowników
Metody szacowania Algorytmiczne modelowanie kosztów Ocena ekspertów Szacowanie przez analogię Ustalanie ceny pod zwycięstwa (wpływ na koszty ma klient – np. przetarg)
Prawo Parkinsona Koszt jest determinowany przez dostępne zasoby, a nie przez obiektywną ocenę.
LOC – szacowanie linii kodu Metryka Halstead'a Metryka McCabe'a Pierwsze metody LOC – szacowanie linii kodu Metryka Halstead'a Metryka McCabe'a
Metryka Halsteada Oznaczenia: n1 - liczba różnych operatorów n2 - liczba różnych operandów N1 - całkowita liczba wystąpień operatorów w P N2 - całkowita liczba wystąpień operandów w P P - program słownik P zawiera n = n1 + n2 elementów wielkość P wynosi N = N1 + N2 twierdzenie: szacunkowa wartość N wynosi n1*logn1 + n2*logn2 twierdzenie: wysiłek potrzebny do wytworzenia P wynosi: E = n1*N2*N*logn/2*n2 (jednostek elementarnych) twierdzenie: czas potrzebny do wytworzenia P wynosi: T = E/18 sek.
Metryka McCabe'a Jesli g jest schematem blokowym programu P i G posiada e krawędzi (łuków) i n węzłów, to v(P) = e - n + 2 gdzie: v(P) jest liczbą niezależnych ścieżek w G Prościej, jeśli d jest liczbą węzłów decyzyjnych w G, wtedy: v(P) = d+1
Metoda analizy punktów funkcyjnych Metoda punktów funkcyjnych oszacowuje koszt projektu na podstawie funkcji użytkowych, które system ma realizować. Stąd wynika, ze metoda ta może być stosowana dopiero wtedy, gdy funkcje te są z grubsza znane. Metoda jest oparta na zliczaniu ilości wejść i wyjść systemu, miejsc przechowywania danych i innych kryteriów. Te dane są następnie mnożone przez zadane z góry wagi i sumowane. Rezultatem jest liczba „punktów funkcyjnych”. Punkty funkcyjne mogą być następnie modyfikowane zależnie od dodatkowych czynników złożoności oprogramowania. Istnieją przeliczniki punktów funkcyjnych na liczbę linii kodu, co może być podstawą dla metody COCOMO.
Metoda analizy punktów funkcyjnych Liczbę nie skorygowanych punktów funkcyjnych wylicza się na podstawie formuły korzystając z następujących danych: Wejścia użytkownika: obiekty wejściowe wpływających na dane w systemie Wyjścia użytkownika: obiekty wyjściowe związane z danymi w systemie Zbiory danych wewnętrzne: liczba wewnętrznych plików roboczych. Zbiory danych zewnętrzne: liczba plików zewnętrznych zapełnianych przez produkt programowy Zapytania zewnętrzne: interfejsy z otoczeniem programu
UFP – nieskorygowane punkty funkcyjne gdzie: wij - wagi, nij - ilość elementów
Korekcja punktów funkcyjnych Dodatkowo wprowadza się korekcję w zależności od 14 czynników: występowanie urządzeń komunikacyjnych rozproszenie przetwarzania długość czasu oczekiwania na odpowiedź systemu stopień obciążenia sprzętu istniejącego częstotliwość wykonywania dużych transakcji wprowadzanie danych w trybie bezpośrednim wydajność użytkownika końcowego
Korekcja Punktów Funkcyjnych aktualizacja danych w trybie bezpośrednim złożoność przetwarzania danych możliwość ponownego użycia programów w innych zastosowaniach łatwość instalacji łatwość obsługi systemu rozproszenie terytorialne łatwość wprowadzania zmian - pielęgnowania systemu
Skorygowane Punkty Funkcyjne FP = UFC * TCF gdzie TCF – współczynnik złożoności technicznej (między 0,65 a 1,35) http://www.ifpug.org/ - Międzynarodowa Grupa Użytkowników Punktów Funkcyjnych (m.in. określają zasady liczenia FP)
Czyje to „punkty funkcyjne?” ;) Zagadka Czyje to „punkty funkcyjne?” ;)
Metoda COCOMO COCOMO – COnstructive COst Model Model empiryczny
Metoda COCOMO 1. Szacujemy KDSI (Thousands of Delivered Source Code Instructions) – Tysiąc instrukcji kodu źródłowego.
Metoda COCOMO 2. Zaliczamy projekt do jednej z klas: Projekt organiczny – mały zespół, znana dziedzina problemu, do 50 KDSI Projekt półoderwany – różny stopień zaawansowania członków zespołu, nie dokońca znana dziedzina problemu, do 300 KDSI Projekt osadzony – brak doświadczenia członków zespołu w podobnych projektach, bardzo złożone systemy
Metoda COCOMO 3. Liczymy Nakład (w osobogodzinach): Dla organicznych: Nakład = 2,4(KDSI)^1,05 Dla półoderwanych: Nakład = 3(KDSI)^1,12 Dla osadzonych: Nakład = 3,6(KDSI)^1,20
COCOMO
Metoda COCOMO 4. Liczymy Czas (w miesiącach): Dla organicznych: Czas = 2,5(Nakład)^0,32 Dla półoderwanych: Czas = 2,5(Nakład)^0,35 Dla osadzonych: Czas = 2,5(Nakład)^0,38
COCOMO
COCOMO 5. Liczymy liczbę osób: Liczba osób = Nakład / Czas Większa liczba osób nie zawsze oznacza szybsze zakończenie projektu!
COCOMO – Czynniki modyfikujące Wymagania wobec niezawodności systemu Rozmiar bazy danych w stosunku do rozmiaru kodu Wymagania co do wydajności Ograniczenia pamięci Zmienność sprzętu i oprogramowania tworzącego środowisko pracy systemu Różne firmy tworzące oprogramowanie mają różną wydajność
COCOMO
Rozwiązanie zagadki Jessica Alba ;)
Bibliografia Ian Sommerville – Inżynieria Oprogramowania, WNT, 2003 Andrzej Jaszkiewicz – Inżynieria Oprogramowania CASE, Helion, 1997 Inżynieria Oprogramowania w projekcie informatycznym pod redakcją Janusza Górskiego, Mikom, 2000 Wykłady Google Images ;)