Szacowanie kosztu oprogramowania
description
Transcript of Szacowanie kosztu oprogramowania
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 1
Szacowanie kosztu oprogramowania
Szacowanie kosztu i pracy niezbędnej do wyprodukowania oprogramowania
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 2
Zawartość Produktywność Metody szacowania Modelowanie algorytmiczne kosztów Czas trwania przedsięwzięcia i praca personelu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 3
Najważniejsze pytania szacowania Ile pracy trzeba na ukończenie czynności? Ile czasu kalendarzowego trzeba na ukończenie
czynności? Jaki jest całkowity koszt czynności? Szacowanie i ustalanie harmonogramu
przedsięwzięcia zwykle wykonuje się równolegle
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 4
Składniki kosztu Koszty sprzętu i oprogramowania Koszty podróży i szkoleń Koszty pracy (zazwyczaj dominujące)
• Płace programistów • Ubezpieczenie i podatki
Dodatkowe koszty, które trzeba brać pod uwagę• wynajęcie budynku, ogrzewanie i oświetlenie• koszt sieci i komunikacji• udogodnienia centralne (biblioteka, pomieszczenia rekreacyjne)
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 5
Kosztorysowanie i wycena Koszt wytworzenia oprogramowania jest
szacowany Nie ma prostej zależności pomiędzy kosztem
wytworzenia oprogramowania i ceną przedstawianą klientowi
Szerokie powody organizacyjne, ekonomiczne, polityczne i biznesowe wpływają na ostateczną cenę
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 6
Czynniki wpływające na cenęCzynnik Opis
Okazjarynkowa
Przedsiębiorstwo produkujące może podać niską cenę, aby wejść na nowy segment rynku. Zdobyte doświadczenie może potem zaprocentować
Niepewnośćkosztów
Jeśli oszacowanie kosztów jest niepewne, to przedsiębiorstwo może sobie zostawić większy niż zazwyczaj margines zysku
Warunkiumowy
Jeśli kod zostaje własnością przedsiębiorstwa, to może ono obniżyć cenę licząc na jego wielokrotne wykorzystanie
Płynnośćwymagań
Jeśli wymagania będą się zmieniać, to przedsiębiorstwo może obniżyć cenę żądając później wyższej ceny za zmiany wymagań
Kondycjafinansowa
Firma w złej kondycji finansowej może obniżać swoje ceny. Od wypadnięcia z rynku lepszy jest mały zysk lub nawet strata
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 7
Miara indywidualnego wkładu pracy włożonej przez pojedynczego programistę w tworzenie systemu i dokumentacji
Nie jest rozpatrywana jakościowo, chociaż zapewnienie jakości jest jednym z procesów podczas tworzenia oprogramowania
Generalnie chcemy mierzyć jak duża funkcjonalność produkowana jest w jednostce czasu
Produktywność programistów
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 8
Miary wielkościowe oparte są na części wyników powstających podczas tworzenia oprogramowania. Mogą to być linie kodu, klasy itp.
Miary funkcyjne są związane z funkcjonalnością dostarczonego oprogramowania. Punkty funkcyjne to najlepiej znana miara tego typu
Miary produktywności
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 9
Określenie metody pomiaru Określenie czasu pracy programistów Oszacowanie produktywności poddostawców (np.
dokumentacja) i umieszczenie tego czasu w całkowitym szacowaniu
Problemy z produktywnością
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 10
Co to jest linia kodu?• Miara została zaproponowana, gdy programiści dziurkowali
karty• Ma się to nijak do programów w nowoczesnych językach
programowania Które programy są częściami systemu? Zakłada zależność liniową pomiędzy rozmiarem
systemu a dokumentacji
Linie kodu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 11
Im niższy poziom języka tym produktywność wyższa• Tą samą funkcjonalność da się zapisać w mniejszej liczbie linii
przy użyciu języka programowania wyższego poziomu Im bardziej rozwlekły programista tym wyższa
produktywność • Liczenie linii kodu karze programistów piszących zwięzły kod
sugerując, że im więcej kodu tym lepiej
Porównywanie produktywności
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 12
Języki wysokiego i niskiego poziomu
Analiza Projektowanie Kodowanie Testowanie Dokumentowanie
Asembler 3 tyg. 5 tyg. 8 tyg. 10 tyg. 2 tyg.
Java 3 tyg. 5 tyg. 8 tyg. 6 tyg. 2 tyg.
Wielkość Praca Produktywność
Asembler 5000 wierszy 28 tygodni
714 w/m
Java 1500 wierszy 20 tygodni
300 w/m
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 13
Punkty funkcyjne Oparte na połączeniu następujących elementów
programu • Zewnętrzne wejścia i wyjścia• Interakcje z użytkownikiem• Interfejsy zewnętrzne• Pliki używane przez system
Z każdym elementem jest skojarzona waga (3-15) Liczba punktów funkcyjnych jest wyznaczana na
podstawie sumy wag elementów systemu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 14
Punkty funkcyjne Punkty funkcyjne powinny uwzględniać czynnik
skomplikowania przedsięwzięcia Punkty funkcyjne mogą służyć do szacowania
liczby linii kodu • LLK = SLLK * liczba punktów funkcyjnych• SLLK zależy od języka i waha się od 200-300 dla asemblera do
2-40 dla języków czwartej generacji PF są subiektywne i zależą od szacującego
• Nie można policzyć punktów funkcyjnych automatycznie
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 15
Punkty obiektowe Punkty obiektowe są alternatywą dla miar
zorientowanych na funkcje i są używane w językach czwartej generacji
Punkty obiektowe NIE są klasami Liczba punktów obiektowych jest ważoną sumą
• Liczby rożnych wyświetlanych ekranów • Liczby raportów generowanych przez system • Liczby modułów 3GL tworzonych dla wsparcia modułów 4GL
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 16
Szacowanie punktów obiektowych
Punkty obiektowe są łatwiejsze do oszacowania na podstawie specyfikacji niż punkty funkcyjne
Można je szacować we wczesnych fazach procesu tworzenia oprogramowania. W tej fazie bardzo trudno szacować liczbę linii kodu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 17
Systemy czasu rzeczywistego, 40-160 LK/PM
Programy systemowe, 150-400 LK/PM Aplikacje komercyjne, 200-800
LK/PM W punktach obiektowych produktywność wynosi
od 4 do 50 punktów na miesiąc w zależności od stosowanych narzędzi
Szacunki produktywności
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 18
Czynniki wpływające na produktywnośćCzynnik Opis
Wiedza z dziedziny zastosowania
Inżynierowie rozumiejący dziedzinę są bardziej produktywni
Jakość procesu Im lepszy proces tworzenia tym wyższa produktywność
Wielkość przedsięwzięcia
Im większe przedsięwzięcie tym więcej komunikacji potrzeba i zmniejsza się produktywność
Wspomaganie technologiczne
Narzędzia CASE i pomocnicze systemy zwiększają efektywność
Środowisko pracy Ciche środowisko pracy z prywatnymi miejscami pracy zwiększa produktywność
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 19
Metryki mierzące rozmiar jednostkowej czynności mają zapominają o jakości
Produktywność łatwo zwiększyć zmniejszając jakość
Trudno ocenić jak miary jakości i produktywności mają się do siebie
Jeśli zmiany następują ciągle to podejście polegające na liczeniu linii kodu przestaje się liczyć
Jakość i produktywność
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 20
Techniki szacowania Nie ma prostych metod służących do dokładnego
szacowania wysiłku koniecznego do budowy systemu• Szacowanie wstępne jest oparte na wyliczeniach opartych na
niedokładnych wymaganiach użytkownika • Oprogramowanie może być tworzone przy użyciu nowej
technologii • Ludzie w przedsięwzięciu mogą być niewiadomą
Szacunki mogą być samospełniające• Szacunki określają budżet a produkt jest dostosowywany do
budżetu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 21
Techniki szacowania Algorytmiczne modelowanie kosztów Ocena ekspertów Szacowanie przez analogię Prawo Parkinsona Ustalanie ceny pod zwycięstwo
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 22
Modelowanie algorytmiczne Tworzenie obliczalnej formuły, która jest oparta
na danych historycznych i generalnie ocenia koszt oprogramowania na podstawie jego rozmiaru
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 23
Ocena ekspertów Jeden lub więcej ekspertów zarówno w dziedzinie
tworzenia jak również użytkowania oprogramowania w dziedzinie szacują koszt.
Zalety: Relatywnie tania metoda. Może być dokładna jeśli eksperci mają doświadczenie z podobnymi systemami
Wady: bardzo niedokładna jeśli eksperci są kiepscy!
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 24
Przez analogię Kosz jest obliczany przez porównanie
przedsięwzięcia z podobnymi przedsięwzięciami z tej samej dziedziny
Zalety: Dokładna jeśli mamy dostęp do koniecznych danych
Wady: Nie można jej zastosować jeśli nie mamy z czym porównywać naszego przedsięwzięcia. Konieczna ciągła aktualizacja danych
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 25
Prawo Parkinsona Przedsięwzięcie zużyje wszystkie dostępne
zasoby Zalety: Nie przekroczymy budżetu Wady: Zazwyczaj nie ukończymy systemu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 26
Cena pod zwycięstwo Cena przedsięwzięcia to tyle ile klient może
wydać Zalety: Mamy kontrakt Wady: Prawdopodobieństwo, że klient otrzyma
system jakiego chciał jest małe. Koszty nie odwzorowują nakładu pracy
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 27
Zstępujące i wstępujące szacowanie kosztów
W każdej metodzie można zastosować oba Zstępujące
• Zaczynamy od poziomu całego systemu, określamy jego koszt a następnie dopasowujemy ją do podsystemów
Wstępujące• Zaczynamy od wyceny komponentów a dopiero potem je
sumujemy
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 28
Zstępujące Można go używać nie rozumiejąc jaka jest
architektura systemu i z jakich komponentów może się on składać
Bierze pod uwagę koszt integracji, konfiguracji i dokumentacji
Za nisko szacuje trudne do rozwiązania problemy techniczne
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 29
Wstępujące Konieczna jest znajomość architektury systemu Metoda jest dokładna jeśli system został
zaprojektowany w szczegółach Za nisko szacuje koszty integracji i dokumentacji
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 30
Metody szacowania Każda ma swoje mocne i słabe strony Szacowanie powinno być oparte na kilku
metodach Jeśli różne metody zwracają różne wyniki, to
znaczy to, że jest za mało danych Trzeba wtedy podjąć działania mające na celu
znalezienie brakujących danych Czasami jedynie ustalanie ceny pod zwycięstwo
jest dopuszczalne
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 31
Szacowanie oparte na doświadczeniu Szacowanie jest oparte głównie na doświadczeniu Niestety zmieniająca się rzeczywistość wpływa
na szacowanie i czyni go niedokładnym• Zmiana projektowania funkcyjnego na obiektowe • Systemy klient serwer zamiast centralnych • Gotowe komponenty• Inżynieria oprogramowania z wykorzystaniem wielokrotnego
użycia• Narzędzia CASE i generatory kodu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 32
Szacowanie pod zwycięstwo Wydaje się nieetyczne i niebiznesowe Jednak, przy braku koniecznych informacji może
być jedyną drogą Koszt przedsięwzięcia jest uzgodniony i
ogranicza on jego zakres Można negocjować dokładną specyfikację lub
użyć podejścia ewolucyjnego
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 33
Modelowanie algorytmiczne Koszt jest otrzymywany jako funkcja atrybutów
produktu, przedsięwzięcia i procesu tworzenia szacowanych przez menadżerów • Praca = A RozmiarB M
• A jest stałe i zależy od lokalnych zwyczajów firmy, B oddaje nieproporcjonalność pracy w przypadku wielkich przedsięwzięć a M oddaje atrybuty przedsięwzięcia
Jako rozmiar najczęściej bierze się rozmiar kodu Modele są podobne za wyjątkiem różnych wartości
A, B i M
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 34
Dokładność szacowania Rozmiar systemu znamy dokładnie po jego
ukończeniu Czynniki mające wpływ na rozmiar
• Użycie gotowych komponentów• Język programowania• Dystrybuowanie systemu
W miarę postępu prac dokładność szacowania się zwiększa
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 35
Niepewność
x
2x
4x
0.5x
0.25x
Feasibility Requirements Design Code Delivery
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 36
Model COCOMO Model empiryczny oparty na doświadczeniu Dobrze udokumentowany i niezależny od żadnej
dużej firmy Pierwsza wersja z 1981 roku (COCOMO-81)
aktualna COCOMO 2 COCOMO 2 bierze pod uwagę różne podejścia
do procesu tworzenia oprogramowania
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 37
COCOMO 81
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 38
Poziomy COCOMO 2 COCOMO 2 jest modelem trójpoziomowym który
pozwala na szacowanie kosztów z wzrastającą dokładnością
Poziom wczesnego prototypowania• Podstawą oszacowań są punkty obiektowe
Poziom wczesnego projektowania• Podstawą oszacowań są punkty funkcyjne przeliczane na linie kodu
Poziom post-architektoniczny• Podstawą oszacowań jest rozmiar kodu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 39
Poziom wczesnego prototypowania Gotowe do użycia w fazie prototypowania z
dużym wykorzystaniem wielokrotnego użycia Oparte na szacowaniu produktywności
programisty w punktach obiektowych na miesiąc Bierze pod uwagę użycie narzędzi CASE Formuła wygląda następująco:
• PM = ( NOP (1 - %reuse/100 ) ) / PROD
• PM to praca w osobomiesiącach, NOP to liczba punktów obiektowych a PROD to produktywność
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 40
Produktywność w punktach obiektowych
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 41
Poziom wczesnego projektowania Oszacowania można dokonać po uzgodnieniu
wymagań Oparte jest na standardowej formule
• PM = A WielkośćB M + PMm gdzie
• M = PERS RCPX RUSE PDIF PREX FCIL SCED• PMm = (ASLOC (AT/100)) / ATPROD
• A = 2.5 jest początkowym oszacowaniem, rozmiar jest liczony w tysiącach linii kodu, B waha się od 1.1 do 1.24 w zależności od nowatorstwa przedsięwzięcia, elastyczności, zarządzania ryzykiem i dojrzałości procesu oraz zespołu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 42
Mnożniki Mnożniki odzwierciedlające umiejętności
programistów, wymagania niefunkcjonalne znajomość platformy, itd. • RCPX – niezawodność i złożoność• RUSE – wymagane użycie wielokrotne• PDIF – trudność platformy• PREX – doświadczenie personelu• PERS – możliwości personelu• SCED – wymagany harmonogram• FCIL – udogodnienia pomocnicze
PMm - ilość automatycznie generowanego kodu
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 43
Poziom post-architektoniczny Używa tych samych formuł co poprzedni Dokładniejsze szacowanie rozmiaru kodu
• Płynność wymagań. Potrzeba więcej pracy• Rozszerzenie możliwego użycia wielokrotnego. Trzeba zwiększyć ilość
linii kodu, które w rzeczywistości powstaną • ESLOC = ASLOC (AA + SU +0.4DM + 0.3CM +0.3IM)/100
» ESLOC równoważna liczba wierszy nowego kodu. ASLOC to liczba linii kodu koniecznych do zmodyfikowania, DM to procent modyfikowanego projektu, CM to procent modyfikowanego kodu, IM to odsetek pierwotnej pracy integracyjnej.
» SU to czynnik oparty na koszcie zrozumienia kodu, AA to czynnik odzwierciedlający koszt ustalenia czy oprogramowanie może być użyte wielokrotnie
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 44
Zależy od pięciu czynników. Ich suma jest dzielona przez 100 i dodawana do 1.01
Przykład• Nadrzędność – nowy projekt - 4• Elastyczność tworzenia – klient niezaangażowany – bardo
wysoka - 1• Panowanie nad ryzykiem - brak - 5• Spójność zespołu – nowy zespół - 3• Dojrzałość procesu - częściowa - 3
Wykładnik wynosi więc 1.17
Wykładnik
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 45
Czynniki
Czynnik Wyjaśnienie Nadrzędność Oddaje doświadczenie organizacji w podobnych przedsięwzięciach. Elastyczność tworzenia Odzwierciedla stopień elastyczności procesu tworzenia. Mała –
użycie nakazanego procesu. Duża – klient ustala cele. Panowanie nad ryzykiem architektonicznym
Zakres wykonywanej analizy ryzyka.
Spójność zespołu Jak dobrze członkowie zespołu się znają i jak dobrze ze sobą współpracują.
Dojrzałość procesu Odzwierciedla dojrzałość procesu w przedsiębiorstwie. Można ją mierzyć w modelu CMM
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 46
Atrybuty produktu• Oczekiwane właściwości tworzonego produktu
Atrybuty komputera• Ograniczenia narzucone przez wybór platformy sprzętowej
Atrybuty personelu• Doświadczenie i możliwości osób biorących udział w
przedsięwzięciu
Atrybuty przedsięwzięcia• Właściwości przedsięwzięcia budowania oprogramowania
Mnożniki
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 47
Czynniki kosztów przedsięwzięcia
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 48
Wpływ czynników kosztów
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 49
Algorytmiczne modelowanie kosztu może stanowić podstawę dla planowania. Pozwala na porównywanie różnych strategii
System w statku kosmicznym• Niezawodny• Mała waga (mało układów scalonych)• Mnożniki niezawodności i sprzętu > 1
Składniki kosztu• Sprzęt docelowy• Platforma tworzenia oprogramowania• Wymagany wysiłek
Planowanie przedsięwzięcia
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 50
Opcje menedżerówA. Use existing hardware,development system and
development team
C. Memoryupgrade only
Hardware costincrease
B. Processor andmemory upgrade
Hardware cost increaseExperience decrease
D. Moreexperienced staff
F. Staff withhardware experience
E. New developmentsystem
Hardware cost increaseExperience decrease
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 51
Koszt różnych opcji
Option RELY STOR TIME TOOLS LTEX Total effort Software cost Hardware cost
Total cost
A 1.39 1.06 1.11 0.86 1 63 949393 100000 1049393 B 1.39 1 1 1.12 1.22 88 1313550 120000 1402025 C 1.39 1 1.11 0.86 1 60 895653 105000 1000653 D 1.39 1.06 1.11 0.86 0.84 51 769008 100000 897490 E 1.39 1 1 0.72 1.22 56 844425 220000 1044159 F 1.39 1 1 1.12 0.84 57 851180 120000 1002706
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 52
Wybór opcji Opcja D (lepszy personel) wydaje się być
najlepsza• Niestety ryzyko nie znalezienia doświadczonego personelu jest
wysokie Opcja C (więcej pamięci) mniej oszczędza koszty
ale jest mniej ryzykowna Model pokazuje, że bardzo ważny jest
doświadczony personel
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 53
Czas trwania przedsięwzięcia Oprócz kosztu konieczne jest szacowanie czasu
trwania przedsięwzięcia Formuła COCOMO 2
• TDEV = 3 (PM)(0.33+0.2*(B-1.01))
• PM oszacowanie pracy B wykładnik obliczony uprzednio (1 dla wczesnego prototypu)
Konieczny czas jest niezależny od liczby osób zaangażowanych w przedsięwzięcie
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 54
Praca personelu Nie można obliczyć rozmiaru zespołu dzieląc
oszacowanie pracy przez pensję W różnych fazach w przedsięwzięcie jest
zaangażowana różna liczba ludzi Im więcej ludzi zaangażowanych tym większe
oszacowanie pracy Gwałtowny wzrost liczby osób zbiega się z
opóźnieniem harmonogramu