Szacowanie rozmiaru kodu Jerzy Nawrocki & Adam Wojciechowski Po co szacować wielkość kodu? Opracowanie planów pracy Ocena pracochłonności Konstruowanie wiarygodnych harmonogramów Sizing represents the project planner s first major challenge -- R.S. Pressman COCOMO: Effort = a Size b COCOMO 2.0: Effort = ( e i ) A Size B Walston-Felix model: Effort = 5.2 Size Size 0.9 Software equation (Putnam): Effort = (Size B 0.333 /P) 3 / t 4.. Project planning.. Size estimating Cyclic dev. Design templates Code & design reviews Task & schedule planning Size estimating + Test report Coding strd+size measuremnt+pip Time & defect recording Cyclic Quality Planning Baseline
Putnam 92: Wysoki Średni Potrzebujemy wiarygodnych, choć nie koniecznie dokładnych oszacowań kodu. Oszacowanie warto budować na bazie wcześniejszych Mały doświadczeń - dane z realizowanych projektów Graniczne wartości przedziałów Zakres Dół Środek Góra B.mały 000 2 000 4 000 Mały 4 000 8 000 6 000 Średni 6 000 32 000 64 000 Duży 64 000 28 000 256 000 B.duży 256 000 52 000 024 000 B.mały: S - A Mały: A - B Średni: B - C Duży: C - D B.duży: D - L Mając najmniejszy (S) oraz największy (L) rozmiar programu, wyznaczamy granice przedziałów A, B, C, D takie, że S, A, B, C, D, L stanowią ciąg geometryczny. A/S = B/A = C/B = D/C = L/D = p L/S = p 5 p = (L/S) 0.2 Dla S= 000 i L= 024 000, p=4 Wysoki Średni Mały? Uwagi: Dane historyczne powinny być zebrane z dużej liczby projektów. Nie zmieniaj granic przedziałów. W razie potrzeby można dodać nowy przedział. 2
Planowanie przedsięwzięcia Humphrey, CMU, 995 PROxy-Based Estimating Proxies to obiekty i inne charakterystyczne struktury występujące w kodzie programu Dane historyczne Metoda Probe Metody styatystyczne Wymagania Projekt koncepcyjny Szacowanie rozmiaru Szacowanie zasobów Harmonogram Produkt b.d. rozmiarów b.d. produktywności dostępne zasoby rozmiar, zasoby, harmon, dane Projekt koncepcyjny Identyfikacja obiektów Liczba Typy Względny Kategoria metod obiektów rozmiar re-użycia Ile będzie nowych i zmodyfikowanych LOC. Przygotuj projekt koncepcyjny (obiekty, metody + funkcje) Ocena rozmiaru kodu Wyznaczenie przedziału predykcji Linie kodu 2. Określ typ każdego obiektu. Logic I/O Text Calculation Data Set-up Probe method 3. Dla każdego obiektu określ jego przedział wielkości. Wieżowiec Ratusz Garaż B. duży Duży Średni Mały B. mały 3
4. Znając: Język programowania Typy obiektów Przedziały wielkości Liczbę metod oraz korzystając ze zgromadzonych danych historycznych Oszacować rozmiar (LOC) każdego obiektu. 2 + 3 = 5 5. Oszacować wstępny rozmiar całego programu, X, dodając wartości wyznaczone w poprzednim kroku dla poszczególnych obiektów. 5 means 0 6. Zastosować zasady regresji liniowej w celu uzyskania szacowanego rozmiaru programu, Y: Y = X + 0 = x i y i x i2 - n x avg y avg - n x 2 avg 0 = y avg - x avg Na 00% przedział jest taki [0; + ] 7. Stosując rozkład T oraz wyznaczając odchylenie standardowe wyznaczyć prognozowany przedział dla zadanego poziomu pewności [%]. 7a. Wyznaczyć odchylenie standardowe,, posiadanych danych historycznych. n 2 = (y i - 0 - x i ) 2 n-2 i= 4
Rozkład t 7b. W tablicach wartość rozkładu t (dla wyników dwustronnych), dla zadanego prawdopodobieństwa q, odszukać wartość t przy p( )= (+q)/2 i n-2 stopni swobody gdzie n jest liczbą wyników historycznych uwzględnionych w obliczeniach z punktu 6. St.swob. p( )=.6 p( )=.7 p( )=.85 p( )=.9 5.267.559.56.476 6.265.553.34.440 7.263.549.9.45 8.262.546.08.397 9.26.543.00.383 promień = t 7c. Przedział wyznaczyć wg formuły: + Wstępne oszacowanie wyznaczone w kroku 5 n + (X - x avg ) 2 (x i - x avg ) 2 Przedział: ( Y-promień promień, Y+promień promień) Program do modyfikacji Kod programu Program do modyfikacji Kod programu Matrix Linear system Linked list Data entry Matrix Linear system Linked list Linked list 2 Data entry 5
Wyznaczenie granic przedziałów wielkości dla poszczególnych typów obiektów b. mały średni duży b.duży mały Calculation 2.34 5.3.25 24.66 54.04 Data 2.60 4.79 8.84 6.3 30.09 I/O 9.0 2.06 6.5 2.62 28.93 Logic 7.55 0.98 5.98 23.25 33.83 Set-up 3.88 5.04 6.56 8.53.09 Text 3.75 8.00 7.07 36.4 77.66 Kod programu LOC modified (M)... 5 Nowe obiekty Typ Metody Rozmiar Razem LOC Matrix Data 3 Medium 5 Linear sys. Calc. 8 Large 97 Linked list Data 3 Large 49 Razem nowe & zmodyfikowane (X)... 366 0... 62....3 Szacowane nowe & zmodyfikowane (Y)... 538 Szacowane nowe & zmodyfikowane (Y)... 538 Procent pewności oszacowania... 80% p = ( + procent)/2... 0.9 Liczba programów w b.d. hist. (n)... 0 Och.stand. z regresji liniowej... 98 L. stopni swobody (n-2)......... 8 t (8, 0.9)....4 ( + /0 +.. )....05 Promień przedziału... 290 Górna granica przedziału (Y + promień)... 828 Dolna granica przedziału (Y - promień)... 248 Podsumowanie Szacowanie wielkości kodu stanowi podstawę dla oceny pracochłonności przedsięwzięcia : Potrzebne są dane hist. Metody statystyczne Otrzymujemy przedział szacowanego rozmiaru kodu dla zadanego prawdopodobieństwa. Lektura Ocena wykładu W. Humphrey, A Discipline for Software Engineering, Addison- Wesley, Reading, 995, Chapter 5.. Ogólne wrażenie? ( - 6) 2. Za wolno, czy za szybko? 3. Czy dowiedziałe(a)ś się czegoś nowego? 4. Co należy zmienić, aby ten wykład był ciekawszy? 6