Spis treści
Szacowanie oprogramowania. Kulisy czarnej magii

Wstęp.............................................................................. ix

Część I......................... Podstawowe elementy szacowania

1 Czym jest szacowanie?................................................... 3

1.1 Szacowanie, cel i zobowiązanie.......................................... 3

1.2 Związek między szacowaniem i planowaniem....................... 4

1.3 Informowanie o szacunkach, celach i zobowiązaniach............ 5

1.4 Szacowanie jako ustalanie prawdopodobieństwa................... 6

1.5 Typowe definicje „dobrego” oszacowania........................... 10

1.6 Oszacowanie projektu i sterowanie nim............................. 12

1.7 Prawdziwy cel szacowania............................................... 13

1.8 Definicja robocza „dobrego oszacowania”.......................... 14

Dodatkowe źródła............................................................... 14

       2 Sprawdzanie swoich umiejętności szacowania............ 15

2.1 Prosty test szacowania................................................... 15

2.2 Omówienie wyników testu................................................ 16

Jak pewne jest „90 % pewności”?........................................ 16

Jak szerokie powinny być przedziały?................................. 18

Skąd się bierze presja na stosowanie wąskich przedziałów?... 18

Na ile podany test jest reprezentatywny dla faktycznych oszacowań
oprogramowania?
   19

       3 Wartość dokładnych oszacowań................................... 21

3.1 Czy lepsze jest oszacowanie za wysokie czy za niskie?........ 21

Argumenty przeciwko zby wysokiemu oszacowaniu............... 21

Argumenty przeciwko zbyt niskiemu oszacowaniu ................ 22

Porównanie argumentów................................................... 23

3.2 Szczegółowe dane na temat skuteczności oszacowań w przemyśle
oprogramowania
............................................................. 24

Jak bardzo spóźnione są projekty realizowane po czasie?...... 26

Przypadek pewnej firmy................................................... 26

Problem systemowy przemysłu oprogramowania................... 27

3.3 Korzyści płynące z dokładnego szacowania........................ 27

3.4 Wartość przewidywalności w porównaniu z innymi pożądanymi
cechami projektu
        29

3.5 Problemy z potocznymi technikami szacowania................... 31

Dodatkowe źródła............................................................... 31

       4 Skąd się biorą błędne oszacowania............................. 33

4.1 Źródła niepewności oszacowania...................................... 34

4.2 Stożek niepewności........................................................ 35

Czy można poprawić stożek?............................................ 37

Stożek nie może sam się zwęzić........................................ 37

Wyznaczanie Stożka niepewności dla oszacowań oprogramowania  39

Związek między Stożkiem niepewności i zobowiązaniem........ 40

Stożek niepewności i programowanie iteracyjne.................... 40

4.3 Chaotyczny proces tworzenia........................................... 41

4.4 Niestabilne wymagania................................................... 42

Szacowanie wzrostu wymagań........................................... 42

4.5 Pominięte działania........................................................ 43

4.6 Nieuzasadniony optymizm............................................... 46

4.7 Subiektywność i stronniczość........................................... 46

4.8 Oszacowania podawane bez przygotowania........................ 49

4.9 Niegwarantowana dokładność.......................................... 50

4.10 Inne źródła błędów...................................................... 51

Dodatkowe źródła............................................................... 52

       5 Elementy wpływające na oszacowanie......................... 53

5.1 Wielkość projektu.......................................................... 53

Dlaczego w tej książce mierzy się wielkość w liniach kodu?.... 54

Nieekonomiczność skali................................................... 55

Kiedy można bezpiecznie zignorować nieekonomiczność skali 58

Znaczenie nieekonomiczności skali w szacowaniu oprogramowania 59

5.2 Rodzaj tworzonego oprogramowania................................. 60

5.3 Czynniki ludzkie............................................................ 62

5.4 Język programowania..................................................... 63

5.5 Inne elementy wpływające na projekt................................ 64

5.6 Jeszcze raz o nieekonomiczności skali.............................. 70

Dodatkowe źródła............................................................... 72

Część II.......................... Podstawowe techniki szacowania

       6 Wstęp do technik szacowania....................................... 75

6.1 Rozważania na temat wyboru techniki szacowania............... 75

Czego dotyczy szacowanie................................................ 75

Wielkość projektu........................................................... 75

Style programowania....................................................... 76

Etap programowania........................................................ 77

Możliwa dokładność........................................................ 78

6.2 Tabela stosowalności różnych technik............................... 78

       7 Zliczanie, obliczanie, ocenianie................................... 79

7.1 Najpierw zliczanie......................................................... 80

7.2 Co zliczać.................................................................... 80

7.3 Używanie obliczeń do konwersji zliczonych wielkości na
oszacowanie
     82

7.4 Kierowanie się oceną należy stosować jako ostateczność...... 84

Dodatkowe źródła............................................................... 84

       8 Kalibrowanie i dane historyczne.................................. 85

8.1 Poprawa dokładności i inne korzyści z danych historycznych. 86

Uwzględnienie wpływu organizacji...................................... 86

Unikanie subiektywizmu i nieuzasadnionego optymizmu......... 87

Ograniczenie nacisków na szacowanie................................ 87

8.2 Dane do zbierania......................................................... 89

Kwestie związane z mierzeniem wielkości........................... 89

Kwestie związane z mierzeniem nakładu pracy.................... 90

Kwestie związane z mierzeniem czasu kalendarzowego......... 90

Kwestie związane z mierzeniem liczby usterek..................... 91

Inne kwestie dotyczące zbierania danych............................ 91

8.3 Jak kalibrować.............................................................. 92

8.4 Wykorzystywanie danych projektu do poprawiania oszacowania 93

8.5 Kalibrowanie ze średnimi danymi branżowymi.................... 93

8.6 Podsumowanie.............................................................. 95

Dodatkowe źródła............................................................... 95

       9 Indywidualna ocena eksperta....................................... 97

9.1 Strukturalna ocena eksperta............................................ 98

Kto robi oszacowanie?..................................................... 98

Ziarnistość..................................................................... 98

Użycie przedziałów......................................................... 99

Wzory......................................................................... 100

Listy kontrolne.............................................................. 101

9.2 Porównywanie oszacowań z rzeczywistością...................... 102

Dodatkowe źródła............................................................. 104

     10 Dekompozycja i rekonstrukcja................................... 105

10.1 Obliczanie dokładnego całkowitego oczekiwanego przypadku 106

Prawo wielkich liczb...................................................... 107

Jak małe powinny być szacowane porcje?.......................... 108

10.2 Dekompozycja metodą WBS......................................... 109

10.3 Niebezpieczeństwo sumowania najgorszych i najlepszych oszacowań   111

Uwaga: nadchodzi matematyka!....................................... 111

Co było źle?................................................................. 111

10.4 Tworzenie sensownych globalnych oszacowań najlepszego i
najgorszego przypadku
  113

Obliczanie zagregowanego najlepszego i najgorszego przypadku dla
niewielkiej liczby zadań
  113

Obliczanie zagregowanego najlepszego i najgorszego przypadku
dla dużej liczby zadań
        115

Dokonywanie zagregowanego oszacowania najgorszego i najlepszego
przypadku
         117

Ostrzeżenia dotyczące szacowania poziomów procentowych
ufności
        118

Dodatkowe źródła............................................................. 119

     11 Szacowanie przez analogię......................................... 121

11.1 Podstawowe podejście do szacowania przez analogię...... 121

Krok 1: Ustalenie dokładnej wielkości, pracochłonności i ostatecznego kosztu
podobnego projektu w przeszłości
............................................................ 122

Krok 2: Porównanie wielkości nowego projektu z podobnym projektem w przeszłości    123

Krok 3: Wykonanie oszacowania dla wielkości nowego projektu potraktowanej
jako procent wielkości starego projektu
........................................... 124

Krok 4: Oszacowanie pracochłonności na podstawie porównania wielkości nowego
projektu z wielkością starego
...................................................... 125

Krok 5: Sprawdzenie spójności założeń w starym i w nowym projekcie     125

11.2 Uwagi do niepewności w oszacowaniu systemu Triad........ 126

Niepewność oszacowania, plany i zobowiązania.................. 126

     12 Szacowania oparte na zastępstwie............................. 127

12.1 Logika rozmyta.......................................................... 128

Jak uzyskać przeciętne rozmiary...................................... 128

Jak klasyfikować nowe funkcje......................................... 129

Jak nie używać logiki rozmytej......................................... 129

Rozszerzenia logiki rozmytej.......................................... 130

12.2 Standardowe składniki................................................ 130

Używanie standardowych składników z percentylami........... 132

Ograniczenia metody standardowych składników................ 133

12.3 Punktacja historyjek................................................... 134

Ostrzeżenia dotyczące skali ocen..................................... 135

12.4 Rozmiary T-shirtowe.................................................. 137

12.5 Inne zastosowania technik opartych na zastępstwie ......... 139

12.6 Dodatkowe źródła...................................................... 139

     13 Ocena eksperta w grupach......................................... 141

13.1 Recenzje grupowe...................................................... 141

13.2 Wideband Delphi....................................................... 142

Efektywność metody Wideband Delphi............................... 144

„Prawda jest gdzieś tam”................................................ 146

Kiedy używać Wideband Delphi........................................ 146

Dodatkowe źródła............................................................. 147

     14 Narzędzia programistyczne do szacowania............... 149

14.1 Rzeczy, które można zrobić przy użyciu narzędzi, a nie można ręcznie         149

14.2 Dane potrzebne do kalibracji narzędzi programistycznych 154

14.3 Jedna rzecz, której nie należy robić przy korzystaniu z narzędzi programistycznych, tak samo jak i w innym przypadku................................................ 155

14.4 Podsumowanie dostępnych narzędzi.............................. 155

Dodatkowe źródła............................................................. 156

     15 Stosowanie kilku metod szacowania.......................... 157

Dodatkowe źródła............................................................. 161

     16 Schemat szacowania oprogramowania w przypadku dobrze oszacowanego projektu....................................................................... 163

16.1 Schemat indywidualnego szacowania w przypadku źle oszacowanego projektu 163

16.2 Schemat indywidualnego szacowania w przypadku dobrze oszacowanego projektu     164

16.3 Chronologiczny schemat szacowania dla całego projektu... 166

Schemat szacowania dla dużych projektów........................ 167

Schemat szacowania dla małych projektów........................ 167

16.4 Poprawianie oszacowania............................................ 167

16.5 Jak przedstawić powtórne oszacowanie pozostałym stronom projektu   168

Kiedy podawać kolejne oszacowania................................. 169

Co, jeśli kierownictwo nie zezwala na powtarzanie szacowania? 171

16.6 Obraz dobrze oszacowanego projektu........................... 171

     17 Standardowe procedury szacowania.......................... 173

17.1 Typowe elementy standardowej procedury..................... 173

17.2 Dopasowywanie oszacowania do procesu faza‑bramka..... 174

17.3 Przykład standardowej procedury szacowania dla projektów sekwencyjnych    177

17.4 Przykład standardowej procedury szacowania dla projektów iteracyjnych       180

17.5 Przykład standardowej procedury szacowania pochodzący z zaawansowanej technicznie organizacji................................................................... 182

17.6 Ulepszanie standardowej procedury.............................. 184

Dodatkowe źródła............................................................. 185

Część III.... Szczególne wyzwania związane z szacowaniem

     18 Szczególne problemy z szacowaniem wielkości....... 189

18.1 Różne metody szacowania wielkości.............................. 190

Rola linii kodu w szacowaniu wielkości.............................. 190

18.2 Szacowanie punktów funkcyjnych.................................. 192

Konwertowanie punktów funkcyjnych na linie kodu.............. 194

18.3 Uproszczone techniki punktów funkcyjnych..................... 195

Metoda holenderska...................................................... 195

Elementy GUI................................................................ 196

18.4 Podsumowanie technik szacowania wielkości................... 197

Dodatkowe źródła............................................................. 198

     19 Szczególne problemy szacowania nakładu pracy...... 199

19.1 Elementy wpływające na pracochłonność........................ 199

19.2 Obliczanie pracochłonności na podstawie rozmiaru.......... 201

Dokonywanie oszacowań nakładu pracy za pomocą nieformalnego porównania z wcześniejszymi projektami................................................................ 201

Jaki rodzaj nakładu pracy mieści się w tym oszacowaniu?..... 202

19.3 Obliczanie nakładu pracy przy użyciu nauki szacowania... 202

19.4 Wykresy średniej branżowej nakładu pracy.................... 202

19.5 Metoda ISBSG............................................................ 208

19.6 Porównywanie oszacowań nakładu pracy........................ 210

Dodatkowe źródła............................................................. 211

     20 Szczególne problemy szacowania harmonogramu.... 213

20.1 Podstawowe równanie harmonogramu............................ 213

20.2 Wyliczanie harmonogramu za pomocą nieformalnego porównania z dawnymi projektami       215

20.3 Zasada szacowania pierwszego rzędu Jonesa.................. 216

20.4 Obliczanie oszacowania harmonogramu przy użyciu nauki szacowania  217

20.5 Skracanie harmonogramu i najkrótszy możliwy harmonogram 218

20.6 Szukanie kompromisu między terminem i nakładem pracy. 220

Skracanie harmonogramu a wielkość zespołu..................... 221

20.7 Szacowanie harmonogramu przy ograniczeniach na zespół 222

20.8 Porównanie rezultatów różnych metod........................... 223

Dodatkowe źródła............................................................. 224

     21 Szacowanie parametrów planowania.......................... 225

21.1 Szacowanie podziału pracy nad projektem..................... 225

Szacowanie nakładów pracy na różne działania techniczne... 225

Szacowanie nakładu pracy na wymagania.......................... 226

Szacowanie nakładu pracy na zarządzanie........................ 227

Szacowanie wszystkich działań........................................ 227

Dopasowania wynikające z typu projektu.......................... 228

Przykład dzielenia nakładu pracy między różne działania.... 228

Proporcje programistów do testerów................................ 229

21.2 Szacowanie harmonogramu różnych działań.................... 230

21.3 Konwertowanie szacowanego nakładu pracy (idealnego nakładu pracy) na planowany nakład pracy.......................................................................... 231

21.4 Oszacowania kosztów................................................. 232

Nadgodziny.................................................................. 232

Czy koszt projektu jest oparty na kosztach bezpośrednich, na kosztach ogólnych, czy jeszcze innych?..................................................................... 232

Inne koszty bezpośrednie............................................... 233

21.5 Szacowanie powstawania usterek i ich usuwania.............. 233

Szacowanie usuwania usterek.......................................... 234

Przykład szacowania wydajności usuwania usterek.............. 235

21.6 Szacowanie ryzyka i marginesów bezpieczeństwa............ 237

21.7 Inne praktyczne zasady.............................................. 238

21.8 Dodatkowe źródła...................................................... 239

     22 Style prezentacji oszacowania.................................... 241

22.1 Komunikowanie założeń oszacowania............................ 241

22.2 Wyrażanie niepewności............................................... 243

Kwalifikatory plus‑lub‑minus............................................ 243

Kwantyfikacja ryzyka..................................................... 243

Współczynniki ufności.................................................... 244

Oszacowania oparte na przypadkach................................ 246

Ogólnikowe daty i okresy................................................ 247

22.3 Używanie przedziałów (dowolnego rodzaju).................... 248

Przydatność oszacowań przedstawianych w postaci przedziałów 248

Przedziały a zobowiązania.............................................. 249

Dodatkowe źródła............................................................. 249

     23 Polityka, negocjacje i rozwiązywanie problemów.... 251

23.1 Cechy kierownictwa.................................................... 251

23.2 Polityczne wpływy na oszacowanie................................ 252

Ograniczenia zewnętrzne................................................ 252

Budżet i terminy........................................................... 253

Negocjowanie oszacowania a negocjowanie zobowiązań....... 253

Co robić, jeśli oszacowanie zostało odrzucone................... 254

Odpowiedzialność pracowników technicznych za edukację stron pozbawionych przygotowania technicznego............................................................. 254

23.3 Rozwiązywanie problemu i honorowe negocjacje............. 255

Negocjacje na zasadzie szukania rozwiązania problemu...... 256

Oddzielać ludzi od problemu.......................................... 256

Koncentrować się na interesach, nie na stanowiskach.......... 257

Szukać opcji korzystnych dla wszystkich........................... 258

Nalegać na stosowanie obiektywnych kryteriów................... 260

Dodatkowe źródła............................................................. 261

Dodatki

       A Kontrola rzetelności oszacowania.............................. 263

       B Odpowiedzi do testu z rozdziału 2........................... 265

       C Wskazówki.................................................................... 267

         Bibliografia................................................................... 282

         Indeks........................................................................... 291