Szacowanie złożoności oprogramowania

27
Szacowanie złożoności oprogramowania Maciej Wereski & Michał Wolski

description

Maciej Wereski & Michał Wolski. Szacowanie złożoności oprogramowania. Szacowanie kosztów wyznaczamy na podstawie: Kosztu sprzętu i oprogrmowania wraz z konserwacją Koszty podrózy i szkoleń Koszty pracy. Wstęp. Koszty pracy. Udostępnienie, ogrzanie, oświetlenie przestrzeni biurowej - PowerPoint PPT Presentation

Transcript of Szacowanie złożoności oprogramowania

Page 1: Szacowanie złożoności oprogramowania

Szacowanie złożoności oprogramowania

Maciej Wereski & Michał Wolski

Page 2: Szacowanie złożoności oprogramowania

Wstęp

Szacowanie kosztów wyznaczamy na podstawie: Kosztu sprzętu i oprogrmowania wraz z konserwacją

Koszty podrózy i szkoleń Koszty pracy

Page 3: Szacowanie złożoności oprogramowania

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

Page 4: Szacowanie złożoności oprogramowania

Metody szacowania

Algorytmiczne modelowanie kosztówOcena ekspertów

Szacowanie przez analogięUstalanie ceny pod zwycięstwa (wpływ na koszty

ma klient – np. przetarg)

Page 5: Szacowanie złożoności oprogramowania

Prawo Parkinsona

Koszt jest determinowany przez dostępne zasoby, a nie przez obiektywną ocenę.

Page 6: Szacowanie złożoności oprogramowania

Pierwsze metody

LOC – szacowanie linii koduMetryka Halstead'aMetryka McCabe'a

Page 7: Szacowanie złożoności oprogramowania

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 - programsłownik P zawiera n = n1 + n2 elementów

wielkość P wynosi N = N1 + N2twierdzenie: szacunkowa wartość N wynosi n1*logn1 + n2*logn2twierdzenie: 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.

Page 8: Szacowanie złożoności oprogramowania

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 + 2gdzie: 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

Page 9: Szacowanie złożoności oprogramowania

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.

Page 10: Szacowanie złożoności oprogramowania

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

Page 11: Szacowanie złożoności oprogramowania

UFP – nieskorygowane punkty funkcyjne

gdzie: wij - wagi, nij - ilość elementów

Page 12: Szacowanie złożoności oprogramowania

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

Page 13: Szacowanie złożoności oprogramowania

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

Page 14: Szacowanie złożoności oprogramowania

Skorygowane Punkty Funkcyjne

FP = UFC * TCFgdzie 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)

Page 15: Szacowanie złożoności oprogramowania

Zagadka

Czyje to „punkty funkcyjne?” ;)

Page 16: Szacowanie złożoności oprogramowania

Metoda COCOMO

COCOMO – COnstructive COst Model Model empiryczny

Page 17: Szacowanie złożoności oprogramowania

Metoda COCOMO

1. Szacujemy KDSI (Thousands of Delivered Source Code Instructions) – Tysiąc instrukcji

kodu źródłowego.

Page 18: Szacowanie złożoności oprogramowania

Metoda COCOMO

2. Zaliczamy projekt do jednej z klas:Projekt organiczny – mały zespół, znana

dziedzina problemu, do 50 KDSIProjekt 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

Page 19: Szacowanie złożoności oprogramowania

Metoda COCOMO

3. Liczymy Nakład (w osobogodzinach):

Dla organicznych: Nakład = 2,4(KDSI)^1,05Dla półoderwanych: Nakład = 3(KDSI)^1,12

Dla osadzonych: Nakład = 3,6(KDSI)^1,20

Page 20: Szacowanie złożoności oprogramowania

COCOMO

Page 21: Szacowanie złożoności oprogramowania

Metoda COCOMO

4. Liczymy Czas (w miesiącach):

Dla organicznych: Czas = 2,5(Nakład)^0,32Dla półoderwanych: Czas = 2,5(Nakład)^0,35

Dla osadzonych: Czas = 2,5(Nakład)^0,38

Page 22: Szacowanie złożoności oprogramowania

COCOMO

Page 23: Szacowanie złożoności oprogramowania

COCOMO

5. Liczymy liczbę osób:

Liczba osób = Nakład / Czas Większa liczba osób nie zawsze oznacza szybsze

zakończenie projektu!

Page 24: Szacowanie złożoności oprogramowania

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ść

Page 25: Szacowanie złożoności oprogramowania

COCOMO

Page 26: Szacowanie złożoności oprogramowania

Rozwiązanie zagadkiJessica Alba ;)

Page 27: Szacowanie złożoności oprogramowania

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ładyGoogle Images ;)