Nowoczesna in - Helion
Autor: David Farley
ISBN: 978-83-8322-594-4
okładka: mi
Księgarnia: Helion
ISBN: 978-83-8322-594-4
okładka: mi
Księgarnia: Helion
Książka będzie dostępna od marca 2023
Zobacz także:
- Windows Media Center. Domowe centrum rozrywki 66,67 zł, (8,00 zł -88%)
- Ruby on Rails. Ćwiczenia 18,75 zł, (3,00 zł -84%)
- Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku 58,64 zł, (12,90 zł -78%)
- Scrum. O zwinnym zarządzaniu projektami. Wydanie II rozszerzone 58,64 zł, (12,90 zł -78%)
- Od hierarchii do turkusu, czyli jak zarządzać w XXI wieku 58,64 zł, (12,90 zł -78%)
Spis treści
Nowoczesna inżynieria oprogramowania. Stosowanie skutecznych technik szybszego rozwoju oprogramowania wyższej jakości -- spis treści
Spis treści
Przedmowa
Wstęp
Podziękowania
O autorze
Część I. Czym jest inżynieria oprogramowania?
- Rozdział 1. Wprowadzenie
- Inżynieria - praktyczne zastosowanie nauki
- Czym jest inżynieria oprogramowania?
- Przywracanie "inżynierii" w "inżynierii oprogramowania"
- Jak robić postępy?
- Narodziny inżynierii oprogramowania
- Zmiana paradygmatu
- Podsumowanie
- Rozdział 2. Czym jest inżynieria?
- To nie produkcja jest naszym problemem
- Inżynieria projektowa zamiast inżynierii produkcyjnej
- Robocza definicja inżynierii
- Inżynieria != kod
- Dlaczego inżynieria jest ważna?
- Ograniczenia rzemiosła
- Precyzja i skalowalność
- Radzenie sobie ze złożonością
- Powtarzalność i precyzja pomiarów
- Inżynieria, kreatywność i rzemiosło
- Dlaczego to, co robimy, nie jest inżynierią oprogramowania
- Kompromisy
- Iluzja postępu
- Droga od rzemiosła do inżynierii
- Rzemiosło to za mało
- Czas na zmianę perspektywy?
- Podsumowanie
- Rozdział 3. Podstawy podejścia inżynieryjnego
- Branża zmian?
- Znaczenie pomiarów
- Wprowadzanie stabilności i wydajności
- Podstawy inżynierii oprogramowania
- Eksperci od uczenia się
- Eksperci od radzenia sobie ze złożonością
- Podsumowanie
Część II. Optymalizacja z myślą o uczeniu się
- Rozdział 4. Praca w modelu iteracyjnym
- Praktyczne zalety podejścia iteracyjnego
- Podejście iteracyjne jako strategia projektowania defensywnego
- Pokusa tworzenia planu
- Praktyczne aspekty podejścia iteracyjnego
- Podsumowanie
- Rozdział 5. Informacje zwrotne
- Praktyczny przykład ilustrujący znaczenie informacji zwrotnych
- Informacje zwrotne w czasie pisania kodu
- Informacje zwrotne na etapie integracji
- Informacje zwrotne na etapie projektowania
- Informacje zwrotne w architekturze
- Preferuj szybkie informacje zwrotne
- Informacje zwrotne w kontekście projektu produktu
- Informacje zwrotne w organizacji i kulturze
- Podsumowanie
- Rozdział 6. Podejście przyrostowe
- Znaczenie modułowości
- Podejście przyrostowe w organizacjach
- Narzędzia ułatwiające przyrostową pracę
- Ograniczanie zakresu wpływu zmian
- Projektowanie przyrostowe
- Podsumowanie
- Rozdział 7. Podejście empiryczne
- Zakorzenienie w rzeczywistości
- Oddzielenie podejścia empirycznego od eksperymentów
- "Znam ten błąd!"
- Unikanie oszukiwania samego siebie
- Wymyślanie rzeczywistości pasującej do argumentów
- Kierowanie się rzeczywistością
- Podsumowanie
- Rozdział 8. Nastawienie na eksperymentowanie
- Czym jest "nastawienie na eksperymentowanie"?
- Informacje zwrotne
- Hipotezy
- Pomiary
- Kontrolowanie zmiennych
- Zautomatyzowane testy jako eksperymenty
- Zapewnianie kontekstu dla wyników testów przeprowadzanych w ramach eksperymentów
- Zakres eksperymentów
- Podsumowanie
Część III. Optymalizowanie z myślą o radzeniu sobie ze złożonością
- Rozdział 9. Modułowość
- Cechy charakterystyczne modułowości
- Niedocenianie znaczenia dobrego projektu
- Znaczenie testowalności
- Projektowanie z myślą o łatwości testowania poprawia modułowość
- Usługi i modułowość
- Łatwość wdrażania a modułowość
- Modułowość w różnych skalach
- Modułowość w systemach ludzkich
- Podsumowanie
- Rozdział 10. Spójność
- Modułowość i spójność - podstawy projektowania
- Prosty przykład niskiej spójności
- Kontekst ma znaczenie
- Wysoce wydajne oprogramowanie
- Związki z powiązaniami
- Zapewnianie wysokiej spójności za pomocą programowania sterowanego testami
- Jak uzyskać spójne oprogramowanie?
- Koszty niskiej spójności
- Spójność w systemach ludzkich
- Podsumowanie
- Rozdział 11. Podział zadań
- Wstrzykiwanie zależności
- Oddzielanie złożoności zasadniczej od złożoności przypadkowej
- Znaczenie podejścia DDD
- Testowalność
- Porty i adaptery
- Kiedy stosować wzorzec porty i adaptery?
- Czym jest API?
- Stosowanie programowania sterowanego testami do wprowadzania podziału zadań
- Podsumowanie
- Rozdział 12. Ukrywanie informacji i abstrakcja
- Abstrakcja lub ukrywanie informacji
- Co jest powodem powstawania "wielkiej błotnej bryły"?
- Problemy organizacyjne i kulturowe
- Problemy techniczne i problemy projektowe
- Obawy przed "nadinżynierią"
- Tworzenie bardziej abstrakcyjnego kodu za pomocą testów
- Wartość abstrakcji
- "Dziurawe" abstrakcje
- Wybór odpowiednich abstrakcji
- Abstrakcje z dziedziny problemu
- Wyodrębnianie złożoności przypadkowej za pomocą abstrakcji
- Izolowanie zewnętrznych systemów i zewnętrznego kodu
- Zawsze preferuj ukrywanie informacji
- Podsumowanie
- Rozdział 13. Radzenie sobie z powiązaniami
- Koszty powiązań
- Skalowanie
- Mikrousługi
- Wyeliminowanie powiązań może prowadzić do większej ilości kodu
- Luźne powiązanie nie jest jedynym, które ma znaczenie
- Preferuj luźne powiązania
- W czym powiązania różnią się od podziału zadań?
- Zasada DRY jest zbyt uproszczona
- Asynchroniczność jako narzędzie do uzyskiwania luźnych powiązań
- Projektowanie z myślą o luźnych powiązaniach
- Luźne powiązania w systemach ludzkich
- Podsumowanie
Część IV. Narzędzia ułatwiające inżynierię w branży oprogramowania
- Rozdział 14. Narzędzia w dziedzinie inżynierii
- Czym jest rozwój oprogramowania?
- Testowalność jako narzędzie
- Punkty pomiaru
- Problemy z osiąganiem testowalności
- Jak zwiększyć testowalność?
- Łatwość wdrażania
- Szybkość
- Kontrolowanie zmiennych
- Ciągłe dostarczanie
- Ogólne narzędzia wspomagające inżynierię
- Podsumowanie
- Rozdział 15. Współczesny inżynier oprogramowania
- Inżynieria jako proces ludzki
- Organizacje dokonujące przełomu w świecie cyfrowym
- Skutki a mechanizmy
- Trwałe i uniwersalne
- Podstawy inżynierii
- Podsumowanie