Programuj tak, aby nie naprawiać. Planowanie projektów i systemów - Helion
Tytuł oryginału: Righting Software
Tłumaczenie: Piotr Rajca
ISBN: 978-83-283-6793-7
stron: 480, Format: 168x237, okładka: miękka
Data wydania: 2020-12-08
Księgarnia: Helion
Cena książki: 89,00 zł
Tworzenie oprogramowania, zwłaszcza dużych i złożonych aplikacji, bywa problemem. Często objawy złego planowania projektu nie mają wiele wspólnego z uwarunkowaniami technicznymi: wysoki poziom stresu, duża rotacja pracowników, wypalenie zawodowe, brak zaufania, niska samoocena, a nawet różnego rodzaju dolegliwości fizyczne. Przyczyny tego stanu rzeczy są podobne: określane w nierealny sposób koszty, terminy i wymagania. Później okazuje się, że wewnętrznej złożoności systemu nikt nie rozumie, nad koniecznymi ciągłymi zmianami nikt nie panuje, a wytworzone oprogramowanie jest niemal niemożliwe do utrzymania. Jak widać, problem jest wielowymiarowy. Wielowymiarowe musi więc też być narzędzie, które umożliwi jego rozwiązanie.
W tym praktycznym przewodniku uniwersalne zasady projektowania zostały dostosowane do specyfiki wytwarzania oprogramowania. Znalazł się tu zbiór najważniejszych zasad inżynierii oprogramowania, jak również wyczerpujący zestaw narzędzi i technik do stosowania w projektach programistycznych. Ich zastosowanie sprawi, że gotowy system będzie łatwy do utrzymania, rozszerzalny, nie będzie zbyt kosztowny, a jego wykonanie będzie realne pod względem czasu i ryzyka. Koncepcje opisane w książce stanowią doskonały punkt wyjścia, gdyż pozwalają sporządzić dobry projekt systemu oprogramowania oraz dobry plan budowy tego systemu. Dopiero to umożliwi ukończenie pracy w wyznaczonym terminie i bez przekroczenia założonego budżetu, a wytworzony produkt będzie łatwy w utrzymaniu, możliwy do rozszerzania oraz wielokrotnego użycia.
W książce między innymi:
- koncepcja projektowania systemu i planowania projektu
- dekompozycja systemu, jego struktura i łączenie komponentów
- narzędzia i techniki potrzebne w planowaniu i projektowaniu
- mierzenie i wyliczanie ryzyka projektu i jego wariantów
- zaawansowane techniki projektowania systemów o wysokiej złożoności
Mistrz w projektowaniu oprogramowania rozważa bardzo niewiele opcji!
Osoby które kupowały "Programuj tak, aby nie naprawiać. Planowanie projektów i systemów", wybierały także:
- Superinteligencja. Scenariusze, strategie, zagro 66,67 zł, (14,00 zł -79%)
- Poradnik design thinking - czyli jak wykorzysta 48,28 zł, (14,00 zł -71%)
- Kosymulacja. Elastyczne projektowanie i symulacja wielodomenowa 38,39 zł, (11,90 zł -69%)
- F# 4.0 dla zaawansowanych. Wydanie IV 96,45 zł, (29,90 zł -69%)
- Systemy reaktywne. Wzorce projektowe i ich stosowanie 65,31 zł, (20,90 zł -68%)
Spis treści
Programuj tak, aby nie naprawiać. Planowanie projektów i systemów -- spis treści
Wstęp 19
Podziękowania 29
O autorze 31
Rozdział 1. Metoda 35
- Czym jest metoda? 36
- Weryfikacja projektu 37
- Presja czasu 38
- Eliminowanie paraliżu analizy 39
- Komunikacja 41
- Czym metoda nie jest? 42
CZĘŚĆ I. PROJEKT SYSTEMU 43
Rozdział 2. Dekompozycja 45
- Unikanie dekompozycji funkcjonalnej 46
- Problemy dekompozycji funkcjonalnej 46
- Wnioski o dekompozycji funkcjonalnej 52
- Unikanie dekompozycji dziedziny 55
- Błędna motywacja 57
- Możliwości testowania i projekt 58
- Przykład: system handlowy zaprojektowany funkcjonalnie 60
- Dekompozycja w oparciu o niestabilność 63
- Dekompozycja, utrzymanie i wdrażanie 65
- Uniwersalna zasada 65
- Dekompozycja w oparciu o niestabilność i testowanie 67
- Wyzwanie niestabilności 67
- Identyfikacja niestabilności 70
- Niestabilny a zmienny 70
- Osie niestabilności 70
- Rozwiązania udające wymagania 74
- Lista niestabilności 75
- Przykład: system obrotu akcjami tworzony z użyciem dekompozycji w oparciu o niestabilność 75
- Nie ulegać syreniemu śpiewowi 81
- Niestabilność a biznes 81
- Projektowanie z myślą o konkurentach 84
- Niestabilność i długowieczność 85
- Znaczenie praktyki 86
Rozdział 3. Struktura 89
- Przypadki użycia i wymagania 90
- Wymagane zachowania 90
- Podejście warstwowe 93
- Stosowanie usług 93
- Typowe warstwy 94
- Warstwa klienta 95
- Warstwa logiki biznesowej 96
- Warstwa dostępu do zasobów 98
- Warstwa zasobu 99
- Pasek narzędzi 99
- Wskazówki dotyczące klasyfikacji 100
- Co zawiera nazwa? 100
- Cztery pytania 101
- Proporcja menedżerów do silników 102
- Kluczowe obserwacje 103
- Podsystemy i usługi 105
- Konstrukcja inkrementalna 105
- O mikrousługach 107
- Architektury otwarte i zamknięte 110
- Architektura otwarta 110
- Architektura zamknięta 111
- Architektura półzamknięta/półotwarta 111
- Rozluźnianie reguł 112
- Czego należy unikać? 115
- Dążenie do symetrii 117
Rozdział 4. Kompozycja 119
- Wymagania i zmiany 119
- Awersja do zmian 120
- Główne zalecenie programowe 120
- Projekt umożliwiający kompozycję 121
- Podstawowe przypadki użycia 121
- Misja architekta 122
- Brak możliwości 127
- Obsługa zmian 128
- Opanowanie zmian 129
Rozdział 5. Przykład projektu systemu 131
- Przegląd systemu 132
- Stary system 133
- Nowy system 135
- Firma 135
- Przypadki użycia 136
- Wysiłki antyprojektowe 141
- Monolit 142
- Szczegółowe elementy konstrukcyjne 142
- Dekompozycja na podstawie dziedziny 144
- Zgodność z działalnością biznesową 146
- Wizja 146
- Cele biznesowe 147
- Myśl przewodnia 148
- Architektura 149
- Słownik systemu TradeMe 149
- Obszary niestabilności systemu TradeMe 150
- Architektura statyczna 153
- Koncepcje operacyjne 156
- Menedżer toku pracy 159
- Weryfikacja projektu 160
- Przypadek użycia: dodanie fachowca/dewelopera 161
- Przypadek użycia: żądanie wyboru fachowca 162
- Przypadek użycia: dopasowanie fachowca 163
- Przypadek użycia: przypisanie fachowca 166
- Przypadek użycia: zakończenie pracy fachowca 169
- Przypadek użycia: zapłata fachowcowi 170
- Przypadek użycia: utworzenie projektu 171
- Przypadek użycia: zamknięcie projektu 171
- Co dalej? 173
CZĘŚĆ II. PLAN PROJEKTU 175
Rozdział 6. Motywacja 177
- Do czego jest potrzebny plan projektu? 177
- Plan projektu i zdrowy rozsądek 179
- Instrukcja wykonania 179
- Hierarchia potrzeb 180
Rozdział 7. Przegląd planu projektu 183
- Definiowanie sukcesu 183
- Raportowanie sukcesu 184
- Początkowa obsada projektu 185
- Architekt, nie architekci 185
- Podstawowy zespół 187
- Mądre decyzje 190
- Plany, a nie plan 190
- Przegląd planu realizacji oprogramowania 191
- Usługi i programiści 192
- Projekt a wydajność zespołu 193
- Ciągłość zadań 195
- Szacowanie pracochłonności 196
- Klasyczne błędy 197
- Techniki szacowania 199
- Ogólne szacunki projektu 201
- Szacunki dotyczące czynności 204
- Analiza ścieżki krytycznej 205
- Sieć projektu 206
- Ścieżka krytyczna 209
- Przydzielanie zasobów 210
- Określanie harmonogramu czynności 215
- Dystrybucja obsady 216
- Koszty projektu 223
- Efektywność projektu 224
- Planowanie wartości wypracowanej 226
- Klasyczne błędy 228
- Płytka krzywa S-kształtna 230
- Role i odpowiedzialności 233
Rozdział 8. Sieć i zapas 235
- Diagram sieci 235
- Diagram węzłów 236
- Diagram strzałkowy 236
- Diagramy strzałkowe a diagramy węzłów 237
- Zapasy 240
- Zapas całkowity 240
- Zapas swobodny 241
- Obliczanie zapasów 242
- Wizualizacja zapasów 243
- Planowanie w oparciu o zapasy 245
- Zapas i ryzyko 247
Rozdział 9. Czas i koszty 249
- Przyspieszanie projektów programistycznych 249
- Skracanie harmonogramu 252
- Stosowanie lepszych zasobów 253
- Praca równoległa 253
- Praca równoległa i koszty 255
- Krzywa zależności czas-koszt 256
- Punkty na krzywej zależności czas-koszt 257
- Modelowanie dyskretne 259
- Unikanie klasycznych błędów 260
- Wykonalność projektu 261
- Znajdowanie rozwiązania normalnego 263
- Elementy kosztu projektu 265
- Koszty bezpośrednie 265
- Koszty pośrednie 266
- Księgowanie a wartość 266
- Koszt całkowity, koszty bezpośrednie i pośrednie 266
- Skracanie i elementy kosztów 268
- Obsada a elementy kosztów 272
- Koszty stałe 273
- Skracanie sieci 274
- Przebieg skracania 275
Rozdział 10. Ryzyko 277
- Wybór wariantu 278
- Krzywa zależności czas-ryzyko 278
- Faktyczna krzywa zależności ryzyko-czas 280
- Modelowanie ryzyka 281
- Normalizacja ryzyka 281
- Ryzyko a zapasy 282
- Ryzyko i koszty bezpośrednie 283
- Ryzyko krytyczności 283
- Ryzyko Fibonacciego 286
- Ryzyko czynności 288
- Ryzyko krytyczności a ryzyko czynności 290
- Skracanie a ryzyko 290
- Ryzyko wykonania 291
- Dekompresja ryzyka 292
- Sposoby przeprowadzania dekompresji 292
- Cel dekompresji 293
- Metryki ryzyka 295
Rozdział 11. Planowanie projektu w praktyce 297
- Cel 298
- Statyczna architektura 298
- Łańcuchy wywołań 299
- Lista czynności 302
- Diagram sieci 303
- Założenia do planu 305
- Znajdowanie rozwiązania normalnego 307
- Nieograniczone zasoby (iteracja 1.) 307
- Problemy z siecią i zasobami 309
- Najpierw infrastruktura (iteracja 2.) 309
- Ograniczone zasoby 311
- Zejście na poziom podkrytyczny (iteracja 7.) 315
- Wybór rozwiązania normalnego 318
- Skracanie sieci 319
- Skracanie poprzez wykorzystanie lepszych zasobów 319
- Wprowadzanie pracy równoległej 321
- Koniec iteracji skracania 329
- Analiza przepustowości 330
- Analiza efektywności 332
- Krzywa zależności czas-koszt 333
- Modele korelacji zależności czas-koszt 333
- Strefa śmierci 335
- Planowanie i ryzyko 337
- Dekompresja ryzyka 337
- Ponowne wyznaczenie krzywej zależności czas-koszt 342
- Modelowanie ryzyka 343
- Włączanie i wykluczanie ryzyka 346
- Przegląd PRO 347
- Prezentacja wariantów 348
Rozdział 12. Techniki zaawansowane 349
- Boskie czynności 349
- Postępowanie z boskimi czynnościami 350
- Punkt przecięcia ryzyka 351
- Wyznaczanie punktu przecięcia ryzyka 351
- Znajdowanie celu dekompresji 355
- Ryzyko geometryczne 357
- Geometryczne ryzyko krytyczności 358
- Geometryczne ryzyko Fibonacciego 359
- Geometryczne ryzyko czynności 360
- Zachowanie geometrycznego ryzyka czynności 360
- Złożoność wykonania 363
- Złożoność cyklomatyczna 363
- Typ projektu i złożoność 364
- Skracanie i złożoność 365
- Bardzo duże projekty 367
- Złożone systemy i wrażliwość 367
- Sieć sieci 370
- Tworzenie sieci sieci 371
- Małe projekty 374
- Planowanie w oparciu o warstwy 375
- Zalety i wady 376
- Warstwy i konstruowanie 377
Rozdział 13. Przykład planowania projektu 379
- Szacunki 380
- Szacunki poszczególnych czynności 380
- Ogólne oszacowanie projektu 383
- Zależności i sieć projektu 383
- Zależności behawioralne 383
- Zależności niebehawioralne 384
- Nadpisywanie niektórych zależności 385
- Sprawdzenie sensowności 386
- Rozwiązanie normalne 386
- Diagram sieci 387
- Planowane postępy 388
- Planowany rozkład obsady 388
- Koszt i efektywność 389
- Podsumowanie wyników 390
- Rozwiązanie skrócone 390
- Dodanie czynności umożliwiających skrócenie 390
- Przydzielanie zasobów 392
- Planowane postępy 392
- Planowany rozkład obsady 392
- Koszt i efektywność 394
- Podsumowanie wyników 394
- Planowanie w oparciu o warstwy 395
- Planowanie w oparciu o warstwy i ryzyko 396
- Rozkład obsady 396
- Podsumowanie wyników 396
- Rozwiązanie subkrytyczne 397
- Czas realizacji, planowane postępy i ryzyko 397
- Koszt i efektywność 398
- Podsumowanie wyników 398
- Porównanie wariantów 399
- Planowanie i ryzyko 400
- Dekompresja ryzyka 400
- Przeliczenie kosztu 403
- Przygotowanie przeglądu PRO 404
Rozdział 14. Wnioski podsumowujące 407
- Kiedy planować projekt? 407
- Prawdziwa odpowiedź 408
- Wybieganie w przód 409
- Wskazówki ogólne 411
- Architektura a szacunki 411
- Podejście do planowania 412
- Opcjonalność 412
- Skracanie 413
- Planowanie i ryzyko 416
- Planowanie planu projektu 417
- Z perspektywy 419
- Podsystemy i oś czasu 420
- Przekazanie 421
- Przekazanie do młodszych programistów 422
- Przekazanie do starszych programistów 422
- Starsi programiści a młodsi programiści 423
- W praktyce 424
- Przeglądanie planów projektu 425
- Kilka słów o jakości 427
- Czynności związane z kontrolą jakości 428
- Czynności związane z zapewnianiem jakości 429
- Jakość i kultura 430
Dodatek A. Śledzenie projektów 431
- Cykl życia i stan czynności 432
- Warunki zakończenia fazy 434
- Waga fazy 435
- Stan czynności 435
- Stan projektu 437
- Postęp i wartość wypracowana 437
- Łączny wysiłek 438
- Łączny koszt pośredni 439
- Śledzenie postępu i wysiłku 439
- Prognozowanie 440
- Prognozy i czynności korekcyjne 443
- Wszystko jest w porządku 443
- Niedoszacowanie 444
- Wyciek zasobów 446
- Przeszacowanie 447
- Więcej informacji o prognozach 448
- Kwintesencja projektu 449
- Postępowanie w przypadku zmian zakresu 449
- Budowanie zaufania 450
Dodatek B. Projektowanie kontraktu usługi 451
- Czy ten projekt jest dobry? 452
- Modularność a koszt 453
- Koszt na usługę 454
- Koszt integracji 455
- Obszar minimalnych kosztów 455
- Usługi i kontrakty 456
- Kontrakty i aspekty 456
- Od projektu usługi do projektu kontraktu 457
- Cechy dobrego kontraktu 457
- Wyodrębnianie kontraktów 459
- Przykład projektu 460
- Wyodrębnianie w dół 460
- Wyodrębnianie w bok 461
- Wyodrębnianie w górę 463
- Metryki projektów kontraktów 463
- Pomiary kontraktów 464
- Metryki wielkości 464
- Unikanie właściwości 465
- Ograniczanie liczby kontraktów 466
- Stosowanie metryk 466
- Wyzwanie projektowania kontraktów 467
Dodatek C. Standardy projektowania 469
- Dyrektywa podstawowa 470
- Dyrektywy 470
- Wskazówki dotyczące projektowania systemu 470
- Wytyczne planowania projektów 472
- Wytyczne dotyczące śledzenia projektów 474
- Wytyczne dotyczące projektowania kontraktów usług 474