Details zum E-Book

Nowoczesna inżynieria oprogramowania. Stosowanie skutecznych technik szybszego rozwoju oprogramowania wyższej jakości

Nowoczesna inżynieria oprogramowania. Stosowanie skutecznych technik szybszego rozwoju oprogramowania wyższej jakości

David Farley

E-book

Inżynieria oprogramowania polega na stosowaniu empirycznego podejścia do szukania wydajnych i ekonomicznie uzasadnionych rozwiązań podczas tworzenia oprogramowania. Dziedzina ta ma na celu organizowanie optymalnego procesu tworzenia aplikacji ? od koncepcji, poprzez kodowanie, wdrażanie, utrzymywanie, po wycofywanie. Uzyskanie biegłości w tym obszarze nie jest łatwe: rozwój oprogramowania wymaga zrozumienia filozofii inżynierii i stosowania określonych zasad.

Tę książkę docenią programiści, menedżerowie, inżynierowie i liderzy techniczni. Znajdziesz w niej cenne informacje o filozofii inżynierii oprogramowania, jak również o postępach w sposobie myślenia na jej temat. Na tej bazie oparto zestaw zasad ułatwiających skuteczne radzenie sobie z dwoma podstawowymi procesami inżynierii oprogramowania: uczenia się i eksploracji oraz radzenia sobie ze złożonością. W ten sposób dowiesz się, jak usprawnić wszystkie aspekty swojej pracy, a także jak stosować sprawdzone podejścia prowadzące do sukcesu z uwzględnieniem uwarunkowań ekonomicznych. Dzięki tej przełomowej publikacji nauczysz się technik rozwiązywania problemów z wykorzystaniem zarówno obecnych, jak i przyszłych technologii. W efekcie będziesz szybciej tworzyć lepsze oprogramowanie, i to w bardziej przyjemny i satysfakcjonujący sposób.

Poznaj i stosuj zasady nowoczesnej inżynierii oprogramowania:

  • określaj jasne cele i sensownie wybieraj narzędzia
  • organizuj pracę i systemy tak, aby móc oceniać ciągłe postępy
  • zachowuj kontrolę nawet po zwiększeniu złożoności systemu
  • utrzymuj dyscyplinę z zachowaniem właściwej elastyczności
  • ucz się z historii i doświadczenia
  • naucz się oceniać nowe idee rozwoju oprogramowania

Przekonaj się, jak dzisiaj najlepsi praktycy projektują oprogramowanie!

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
  • Titel: Nowoczesna inżynieria oprogramowania. Stosowanie skutecznych technik szybszego rozwoju oprogramowania wyższej jakości
  • Autor: David Farley
  • Originaler Titel: Modern Software Engineering: Doing What Works to Build Better Software Faster
  • Übersetzung: Tomasz Walczak
  • ISBN: 978-83-8322-595-1, 9788383225951
  • Veröffentlichungsdatum: 2023-06-20
  • Format: E-book
  • Artikelkennung: nowoio
  • Verleger: Helion