280 likes | 442 Views
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
E N D
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 • Personel pomocniczy (sekretarki, księgowe, sprzątaczki) • Sieć oraz telekomunikacja • Udogodnienia centralne (biblioteka, pomieszczenia rekreacyjne) • Ubezpieczenia społeczne oraz świadczenia dla pracowników
Algorytmiczne modelowanie kosztów Ocena ekspertów Szacowanie przez analogię Ustalanie ceny podzwycięstwa (wpływ na koszty ma klient – np. przetarg) Metody szacowania
Koszt jest determinowany przez dostępne zasoby, a nie przez obiektywną ocenę. Prawo Parkinsona
LOC – szacowanie linii kodu Metryka Halstead'a Metryka McCabe'a Pierwsze metody
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 Halsteada
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 Metryka McCabe'a
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 Metoda analizy punktów funkcyjnych
gdzie: wij - wagi, nij - ilość elementów UFP – nieskorygowane punkty funkcyjne
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 Korekcja Punktów Funkcyjnych
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) Skorygowane Punkty Funkcyjne
Czyje to „punkty funkcyjne?” ;) Zagadka
Metoda COCOMO • COCOMO – COnstructive COst Model • Model empiryczny
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 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 Metoda 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ść
Jessica Alba ;) Rozwiązanie zagadki
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 ;) Bibliografia