E-book details

Jakość oprogramowania. Podręcznik dla profesjonalistów

Jakość oprogramowania. Podręcznik dla profesjonalistów

Michał Sobczak

Ebook

Wszystko, co musisz wiedzieć o jakości oprogramowania, w jednym miejscu!

  • Poznaj rodzaje błędów
  • Zapewnij wysoką jakość kodu
  • Dowiedz się, jak należycie testować
  • Twórz niezawodne oprogramowanie

Czym jest jakość oprogramowania? Czy to wyłącznie miara technicznej doskonałości kodu? A może jakość to coś znacznie więcej? Czy niezawodne działanie i brak błędów świadczą o wysokiej jakości programu? Co charakteryzuje kod, który można uznać za dobry? Jak mierzy się jakość w projektach informatycznych? Co robić, aby zapewnić wysoką jakość tworzonego oprogramowania? Jakie techniki i rozwiązania mogą w tym pomóc?

Odpowiedzi na te i wiele innych pytań znajdziesz w książce Jakość oprogramowania. Podręcznik dla profesjonalistów. To pierwsze tego rodzaju wydawnictwo na polskim rynku szybko wprowadzi Cię w zyskującą coraz większe znaczenie tematykę jakości oprogramowania komputerowego. Dzięki lekturze dowiesz się nie tylko, jak uzyskać i utrzymać odpowiednią jakość w projekcie informatycznym oraz jakie narzędzia są w tym pomocne, lecz również co robić, aby ograniczyć szkody spowodowane przez ewentualne błędy.

  • Zapewnianie jakości kodu źródłowego
  • Sposoby testowania programów
  • Architektura, wzorce projektowe, metodyki
  • Ciągłe dostarczanie i ciągła integracja
  • Monitoring produkcji i obsługa awarii
  • Najczęściej popełniane błędy i typowe przypadki

Lektura obowiązkowa dla każdego, kto jest zaangażowany w proces wytwarzania oprogramowania!


Wprowadzenie 13

Rozdział 1. Praca u podstaw 23

  • Klasyfikacja usterek, błędów i awarii 23
    • Terminologia niezawodności 24
    • Błędy 27
    • Zapobieganie defektom 28
  • Standaryzacja i organizacja kodu 28
    • Standaryzacja 28
    • Organizacja 28
  • Jakość danych 29
  • Wzorce projektowe, dowodzenie poprawności 30
    • Kryteria wzorców projektowych 31
    • Jakość poszczególnych wzorców projektowych 31
    • Uzasadnienie dla wzorców projektowych 31
    • Korzyści ze stosowania wzorców projektowych 32
    • Trudności 33
    • Wzorce oprogramowania nie są... 33
    • Wzorce oprogramowania są... 33
    • Rodzaje wzorców projektowych 33
    • Konwencja ponad konfigurację 59
  • Niezawodność 59
    • Weryfikacja, walidacja i testowanie 59
    • Odporność na błędy 60
  • Przeglądy jakości kodu 62
    • Przegląd konwencjonalny 62
    • Przegląd jako proces 63
    • Inspekcja oprogramowania krytycznego 63
  • Poziomy pokrycia kodu testami 64
  • Właściwy wybór architektury (DDD) i projektowanie 64
    • Prostota i minimalizm 65
    • Złożoność 65
    • Architektura 66
    • Projektowanie 66
    • Programowanie 69
    • Język programowania 71
    • Maksymy programistyczne 71
  • Metodyki (TDD, BDD, TIP) 72
    • TDD 72
    • BDD 73
    • TIP 74
  • Aplikacje mikrousługowe a monolityczne 74
    • Aplikacje monolityczne 74
    • Aplikacje mikrousługowe 75
  • Zasady testowania 75
    • Pojęcia 75
    • Styl testowania 76
    • Cel 76
    • Testowanie specyfikacji 76
    • Retrospekcja 76
    • Sytuacje 76
    • Filozofie testowania 77
    • Dane testowe 77
    • Kierunki testowania 77
    • Minimum 77
    • Aksjomaty testowania 78
    • Aksjomaty programistyczne 78
  • Pragmatyczny programista 79
    • Entropia oprogramowania 79
    • DRY 79
  • Inne aspekty 79
    • Błędotwórstwo 79
    • Dowodzenie poprawności programów 79
    • Przewidywanie zmian 80
    • Dyspozycyjność systemu 80
    • Uszkodzenia i powrót ze stanu błędu 81
    • Metodologia programowania 82
    • Kolejność celów 83
    • Wykonalność 83
    • Starzenie 84
  • Defekty w grach 84
    • Room bounds, problemy systemu optymalizacji 84
    • Problemy z teksturami 87
    • Brakujące elementy otoczenia 89
    • Błędna lokalizacja elementów otoczenia 90

Rozdział 2. CI/CD 93

  • Składnia, kompilacja i budowanie artefaktów 93
    • Składnia 93
    • Kompilacja 94
    • Budowanie 94
  • Automatyczne testy programistyczne 95
    • minitest 95
    • busted 98
  • Pozostałe przykłady testów 100
    • Integracyjne 100
    • UI 103
    • Specyfikacja, konfiguracja, środowisko 104
  • CI/CD w praktyce 105
    • Git branching 106
    • .gitlab-ci.yml 106

Rozdział 3. Produkcja 109

  • Współpraca pierwszej i drugiej linii wsparcia 109
  • Monitoring 109
    • APM 110
    • Baza danych 114
    • Błędy 117
    • Logi 122
  • Obsługa awarii 124
    • Hotfixing 124
    • Monkey-patching 124

Rozdział 4. Błędy i komunikaty 125

  • Zestawienie błędów popełnianych przez programistów 125
    • Typowe błędy 125
    • Błędy początkujących 126
  • Kategoryzacja błędów 127
    • Kompozycja programu 127
    • Pętle 128
    • Dane 128
    • Zmienne 128
    • Tablice 128
    • Operacje arytmetyczne 128
    • Podprogramy 128
    • Inne 129

Rozdział 5. Przypadki 131

  • W zasięgu wzroku 131
    • Monitoring 131
    • Planowanie 131
    • Spotkanie 131
  • Potrzeba 132
    • Życie 132
    • Konsumpcja 132
    • Rozrywka 132
    • Finanse 132
    • Nauka 133
  • Siły na zamiary 133
  • Odbiorca 133
    • Zamawiający 133
    • Beneficjent 133
    • Wykonawca 134
    • Operator 134
    • Użytkownik końcowy 134
  • Niedoskonałość 134
    • Człowiek 134
    • Organizacja 135
  • Czas 135
    • Ważność 135
    • Pilność 135
    • Mikrozarządzanie 135
  • Zadania cykliczne 136
    • Zmiana częstotliwości 136
    • Racjonalizacja operacji 137
    • Uruchamianie w Dockerfile 138
  • Nieporządek w harmonogramie zadań 138
    • Przykład 138
    • Rozwiązania 139
    • Skutki i działania 140
  • Martwy kod 140
  • Współdzielenie kodu 141
    • Rozwiązanie 141
    • Rails 141
    • Java 143
  • Porządkowanie struktury aplikacji 143
  • Timeout 144
    • Przykład 144
    • Rozwiązanie 145
  • Racjonalizacja serwera bazy danych 145
    • Przykład 146
    • Replikacja czasu rzeczywistego 146
    • Aplikacje 146
    • Monitoring 147
  • Nieprawidłowe rekordy 148
  • Typy danych jako klucze 148
  • Nadmiarowe przypisania 149
  • Agregacja danych 149
  • Dzielenie zapytań SQL 150
  • Testy inwazyjne 151
  • Cargo cult 152
  • Prokrastynacja 153
  • Obustronna weryfikacja 154
  • Zewnętrzne dane 154
  • Klucze obce a projekt bazy 155
  • Korekty danych 156
  • Spójność środowisk 157
  • NULL 157
  • Zmęczenie 159
  • Brak testów 160
  • Nemawashi 160
  • "Geniusz zła" 161
  • Paradoks hazardzisty 162
  • Czytelność kodu 162
    • Rozmiar 162
    • Dobre praktyki 165
  • Standardy, czyli XYZ-way 166
  • Kosztowne błędy 166
    • NASA Mars Climate Orbiter 167
    • Ariane 5 Flight 501 167
    • EDS Child Support System 167
    • Heathrow Terminal 5 Opening 168
    • The Mariner 1 Spacecraft 168
    • Patriot Missile Error 168
    • Pentium FDIV Bug 168
  • Ciekawe przypadki 169
  • Proxy 169
  • Planowanie 170
  • Macierz pokrycia zmianami 170
  • IDE a edytor tekstowy 171
  • Architektura systemowa 172
    • Systemy wsadowe o zdalnym dostępie 172
    • Systemy zbierania danych 173
    • System prosty (Simplex) 173
    • System prosty z wysuniętą transmisją 173
    • System prosty z oddzielnymi maszynami do obsługi transmisji i do zarządzania bazą danych 175
    • System nadrzędny - podległy 175
    • System o wspólnej pamięci zbiorów 176
    • Systemy zdwojone i dualne 177
    • Systemy wieloprocesorowe 177
  • Złożoność 178
  • Predyspozycje osobowe 179
  • Auto DB reconnect 180
  • ESB non-block 180
  • DB Deadlock 181
  • Liczba zgłoszeń 183
  • Konteneryzacja 183
  • Koncentracja i pośpiech 184
  • System transakcyjny a system wsadowy 184
  • Pair programming 184
  • Integracja 185
  • Estymaty 185
  • Kompatybilność API 185
  • Retro computing 187
  • Oprogramowanie samodostosowujące się 187

Rozdział 6. Podsumowanie 189

  • Nieuchronne 189
  • Organizacja 189
  • Post factum 189
  • Spokój 190
  • Co dalej? 190
  • Refleksja 190
  • Na koniec 191

Dodatek A. Metodyka prewencji i szybkiego reagowania 193

  • Prewencja 193
    • 1. Zasada ograniczonego zaufania 193
    • 2. Statyczne typowanie 193
    • 3. Analiza składniowa 195
    • 4. Dane w relacyjnej bazie 195
    • 5. Aspekty projektowe 197
  • Reagowanie 197
    • 1. Przechwytywanie wyjątków 197
    • 2. Service Discovery 198
    • 3. Używajmy własnych produktów 198

Bibliografia 199

Skorowidz 203

  • Title: Jakość oprogramowania. Podręcznik dla profesjonalistów
  • Author: Michał Sobczak
  • ISBN: 978-83-283-6951-1, 9788328369511
  • Date of issue: 2020-04-21
  • Format: Ebook
  • Item ID: jakosc
  • Publisher: Helion