Jakosc oprogramowania Podrecznik dla profesjonalistow.pdf

(3766 KB) Pobierz
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą
również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Redaktor prowadzący: Małgorzata Kulik
Projekt okładki: Jan Paluch
Grafika na okładce została wykorzystana za zgodą Shutterstock.com
Helion SA
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/jakosc
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Kody źródłowe wybranych przykładów dostępne są pod adresem:
ftp://ftp.helion.pl/przyklady/jakosc.zip
ISBN: 978-83-283-6102-7
Copyright © Helion 2020
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
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
Kup książkę
Poleć książkę
6
Jakość oprogramowania. Podręcznik dla profesjonalistów
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
Kup książkę
Poleć książkę
Spis treści
7
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
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin