Jakość oprogramowania. Podręcznik dla profesjonalistów - ebook
Jakość oprogramowania. Podręcznik dla profesjonalistów - 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!
Spis treści
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
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-6951-1 |
Rozmiar pliku: | 7,7 MB |