Programuj tak, aby nie naprawiać. Planowanie projektów i systemów
52.28zł
Podręczniki szkolne |
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 projektudekompozycja systemu, jego struktura i łączenie komponentównarzędzia i techniki potrzebne w planowaniu i projektowaniumierzenie i wyliczanie ryzyka projektu i jego wariantówzaawansowane techniki projektowania systemów o wysokiej złożonościMistrz w projektowaniu oprogramowania rozważa bardzo niewiele opcji!Spis treści:Wstęp 19Podziękowania 29O autorze 31Rozdział 1. Metoda 35Czym jest metoda? 36Weryfikacja projektu 37Presja czasu 38Eliminowanie paraliżu analizy 39Komunikacja 41Czym metoda nie jest? 42CZĘŚĆ I. PROJEKT SYSTEMU 43Rozdział 2. Dekompozycja 45Unikanie dekompozycji funkcjonalnej 46Problemy dekompozycji funkcjonalnej 46Wnioski o dekompozycji funkcjonalnej 52Unikanie dekompozycji dziedziny 55Błędna motywacja 57Możliwości testowania i projekt 58Przykład: system handlowy zaprojektowany funkcjonalnie 60Dekompozycja w oparciu o niestabilność 63Dekompozycja, utrzymanie i wdrażanie 65Uniwersalna zasada 65Dekompozycja w oparciu o niestabilność i testowanie 67Wyzwanie niestabilności 67Identyfikacja niestabilności 70Niestabilny a zmienny 70Osie niestabilności 70Rozwiązania udające wymagania 74Lista niestabilności 75Przykład: system obrotu akcjami tworzony z użyciem dekompozycji w oparciu o niestabilność 75Nie ulegać syreniemu śpiewowi 81Niestabilność a biznes 81Projektowanie z myślą o konkurentach 84Niestabilność i długowieczność 85Znaczenie praktyki 86Rozdział 3. Struktura 89Przypadki użycia i wymagania 90Wymagane zachowania 90Podejście warstwowe 93Stosowanie usług 93Typowe warstwy 94Warstwa klienta 95Warstwa logiki biznesowej 96Warstwa dostępu do zasobów 98Warstwa zasobu 99Pasek narzędzi 99Wskazówki dotyczące klasyfikacji 100Co zawiera nazwa? 100Cztery pytania 101Proporcja menedżerów do silników 102Kluczowe obserwacje 103Podsystemy i usługi 105Konstrukcja inkrementalna 105O mikrousługach 107Architektury otwarte i zamknięte 110Architektura otwarta 110Architektura zamknięta 111Architektura półzamknięta/półotwarta 111Rozluźnianie reguł 112Czego należy unikać? 115Dążenie do symetrii 117Rozdział 4. Kompozycja 119Wymagania i zmiany 119Awersja do zmian 120Główne zalecenie programowe 120Projekt umożliwiający kompozycję 121Podstawowe przypadki użycia 121Misja architekta 122Brak możliwości 127Obsługa zmian 128Opanowanie zmian 129Rozdział 5. Przykład projektu systemu 131Przegląd systemu 132Stary system 133Nowy system 135Firma 135Przypadki użycia 136Wysiłki antyprojektowe 141Monolit 142Szczegółowe elementy konstrukcyjne 142Dekompozycja na podstawie dziedziny 144Zgodność z działalnością biznesową 146Wizja 146Cele biznesowe 147Myśl przewodnia 148Architektura 149Słownik systemu TradeMe 149Obszary niestabilności systemu TradeMe 150Architektura statyczna 153Koncepcje operacyjne 156Menedżer toku pracy 159Weryfikacja projektu 160Przypadek użycia: dodanie fachowca/dewelopera 161Przypadek użycia: żądanie wyboru fachowca 162Przypadek użycia: dopasowanie fachowca 163Przypadek użycia: przypisanie fachowca 166Przypadek użycia: zakończenie pracy fachowca 169Przypadek użycia: zapłata fachowcowi 170Przypadek użycia: utworzenie projektu 171Przypadek użycia: zamknięcie projektu 171Co dalej? 173CZĘŚĆ II. PLAN PROJEKTU 175Rozdział 6. Motywacja 177Do czego jest potrzebny plan projektu? 177Plan projektu i zdrowy rozsądek 179Instrukcja wykonania 179Hierarchia potrzeb 180Rozdział 7. Przegląd planu projektu 183Definiowanie sukcesu 183Raportowanie sukcesu 184Początkowa obsada projektu 185Architekt, nie architekci 185Podstawowy zespół 187Mądre decyzje 190Plany, a nie plan 190Przegląd planu realizacji oprogramowania 191Usługi i programiści 192Projekt a wydajność zespołu 193Ciągłość zadań 195Szacowanie pracochłonności 196Klasyczne błędy 197Techniki szacowania 199Ogólne szacunki projektu 201Szacunki dotyczące czynności 204Analiza ścieżki krytycznej 205Sieć projektu 206Ścieżka krytyczna 209Przydzielanie zasobów 210Określanie harmonogramu czynności 215Dystrybucja obsady 216Koszty projektu 223Efektywność projektu 224Planowanie wartości wypracowanej 226Klasyczne błędy 228Płytka krzywa S-kształtna 230Role i odpowiedzialności 233Rozdział 8. Sieć i zapas 235Diagram sieci 235Diagram węzłów 236Diagram strzałkowy 236Diagramy strzałkowe a diagramy węzłów 237Zapasy 240Zapas całkowity 240Zapas swobodny 241Obliczanie zapasów 242Wizualizacja zapasów 243Planowanie w oparciu o zapasy 245Zapas i ryzyko 247Rozdział 9. Czas i koszty 249Przyspieszanie projektów programistycznych 249Skracanie harmonogramu 252Stosowanie lepszych zasobów 253Praca równoległa 253Praca równoległa i koszty 255Krzywa zależności czas-koszt 256Punkty na krzywej zależności czas-koszt 257Modelowanie dyskretne 259Unikanie klasycznych błędów 260Wykonalność projektu 261Znajdowanie rozwiązania normalnego 263Elementy kosztu projektu 265Koszty bezpośrednie 265Koszty pośrednie 266Księgowanie a wartość 266Koszt całkowity, koszty bezpośrednie i pośrednie 266Skracanie i elementy kosztów 268Obsada a elementy kosztów 272Koszty stałe 273Skracanie sieci 274Przebieg skracania 275Rozdział 10. Ryzyko 277Wybór wariantu 278Krzywa zależności czas-ryzyko 278Faktyczna krzywa zależności ryzyko-czas 280Modelowanie ryzyka 281Normalizacja ryzyka 281Ryzyko a zapasy 282Ryzyko i koszty bezpośrednie 283Ryzyko krytyczności 283Ryzyko Fibonacciego 286Ryzyko czynności 288Ryzyko krytyczności a ryzyko czynności 290Skracanie a ryzyko 290Ryzyko wykonania 291Dekompresja ryzyka 292Sposoby przeprowadzania dekompresji 292Cel dekompresji 293Metryki ryzyka 295Rozdział 11. Planowanie projektu w praktyce 297Cel 298Statyczna architektura 298Łańcuchy wywołań 299Lista czynności 302Diagram sieci 303Założenia do planu 305Znajdowanie rozwiązania normalnego 307Nieograniczone zasoby (iteracja 1.) 307Problemy z siecią i zasobami 309Najpierw infrastruktura (iteracja 2.) 309Ograniczone zasoby 311Zejście na poziom podkrytyczny (iteracja 7.) 315Wybór rozwiązania normalnego 318Skracanie sieci 319Skracanie poprzez wykorzystanie lepszych zasobów 319Wprowadzanie pracy równoległej 321Koniec iteracji skracania 329Analiza przepustowości 330Analiza efektywności 332Krzywa zależności czas-koszt 333Modele korelacji zależności czas-koszt 333Strefa śmierci 335Planowanie i ryzyko 337Dekompresja ryzyka 337Ponowne wyznaczenie krzywej zależności czas-koszt 342Modelowanie ryzyka 343Włączanie i wykluczanie ryzyka 346Przegląd PRO 347Prezentacja wariantów 348Rozdział 12. Techniki zaawansowane 349Boskie czynności 349Postępowanie z boskimi czynnościami 350Punkt przecięcia ryzyka 351Wyznaczanie punktu przecięcia ryzyka 351Znajdowanie celu dekompresji 355Ryzyko geometryczne 357Geometryczne ryzyko krytyczności 358Geometryczne ryzyko Fibonacciego 359Geometryczne ryzyko czynności 360Zachowanie geometrycznego ryzyka czynności 360Złożoność wykonania 363Złożoność cyklomatyczna 363Typ projektu i złożoność 364Skracanie i złożoność 365Bardzo duże projekty 367Złożone systemy i wrażliwość 367Sieć sieci 370Tworzenie sieci sieci 371Małe projekty 374Planowanie w oparciu o warstwy 375Zalety i wady 376Warstwy i konstruowanie 377Rozdział 13. Przykład planowania projektu 379Szacunki 380Szacunki poszczególnych czynności 380Ogólne oszacowanie projektu 383Zależności i sieć projektu 383Zależności behawioralne 383Zależności niebehawioralne 384Nadpisywanie niektórych zależności 385Sprawdzenie sensowności 386Rozwiązanie normalne 386Diagram sieci 387Planowane postępy 388Planowany rozkład obsady 388Koszt i efektywność 389Podsumowanie wyników 390Rozwiązanie skrócone 390Dodanie czynności umożliwiających skrócenie 390Przydzielanie zasobów 392Planowane postępy 392Planowany rozkład obsady 392Koszt i efektywność 394Podsumowanie wyników 394Planowanie w oparciu o warstwy 395Planowanie w oparciu o warstwy i ryzyko 396Rozkład obsady 396Podsumowanie wyników 396Rozwiązanie subkrytyczne 397Czas realizacji, planowane postępy i ryzyko 397Koszt i efektywność 398Podsumowanie wyników 398Porównanie wariantów 399Planowanie i ryzyko 400Dekompresja ryzyka 400Przeliczenie kosztu 403Przygotowanie przeglądu PRO 404Rozdział 14. Wnioski podsumowujące 407Kiedy planować projekt? 407Prawdziwa odpowiedź 408Wybieganie w przód 409Wskazówki ogólne 411Architektura a szacunki 411Podejście do planowania 412Opcjonalność 412Skracanie 413Planowanie i ryzyko 416Planowanie planu projektu 417Z perspektywy 419Podsystemy i oś czasu 420Przekazanie 421Przekazanie do młodszych programistów 422Przekazanie do starszych programistów 422Starsi programiści a młodsi programiści 423W praktyce 424Przeglądanie planów projektu 425Kilka słów o jakości 427Czynności związane z kontrolą jakości 428Czynności związane z zapewnianiem jakości 429Jakość i kultura 430Dodatek A. Śledzenie projektów 431Cykl życia i stan czynności 432Warunki zakończenia fazy 434Waga fazy 435Stan czynności 435Stan projektu 437Postęp i wartość wypracowana 437Łączny wysiłek 438Łączny koszt pośredni 439Śledzenie postępu i wysiłku 439Prognozowanie 440Prognozy i czynności korekcyjne 443Wszystko jest w porządku 443Niedoszacowanie 444Wyciek zasobów 446Przeszacowanie 447Więcej informacji o prognozach 448Kwintesencja projektu 449Postępowanie w przypadku zmian zakresu 449Budowanie zaufania 450Dodatek B. Projektowanie kontraktu usługi 451Czy ten projekt jest dobry? 452Modularność a koszt 453Koszt na usługę 454Koszt integracji 455Obszar minimalnych kosztów 455Usługi i kontrakty 456Kontrakty i aspekty 456Od projektu usługi do projektu kontraktu 457Cechy dobrego kontraktu 457Wyodrębnianie kontraktów 459Przykład projektu 460Wyodrębnianie w dół 460Wyodrębnianie w bok 461Wyodrębnianie w górę 463Metryki projektów kontraktów 463Pomiary kontraktów 464Metryki wielkości 464Unikanie właściwości 465Ograniczanie liczby kontraktów 466Stosowanie metryk 466Wyzwanie projektowania kontraktów 467Dodatek C. Standardy projektowania 469Dyrektywa podstawowa 470Dyrektywy 470Wskazówki dotyczące projektowania systemu 470Wytyczne planowania projektów 472Wytyczne dotyczące śledzenia projektów 474Wytyczne dotyczące projektowania kontraktów usług 474O autorze: Juval Löwy jest światowej klasy architektem oprogramowania. Specjalizuje się w projektowaniu systemów i planowaniu projektów. Jest uznawany za jednego z najlepszych w swojej dziedzinie, uczestniczył w tworzeniu takich produktów jak C#, WCF i związanych z nimi technologii. Wydał kilka bestsellerowych książek oraz opublikował niezliczone artykuły poświęcone niemal wszystkim aspektom nowoczesnego tworzenia oprogramowania.
pisze w sprawie po ang
, angielski nauka
, kamil wiśniewski
, run trzecia forma
yyyyy