Nowoczesna inżynieria oprogramowania. Stosowanie skutecznych technik szybszego rozwoju oprogramowania wyższej jakości - ebook
Nowoczesna inżynieria oprogramowania. Stosowanie skutecznych technik szybszego rozwoju oprogramowania wyższej jakości - ebook
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
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
Kategoria: | Zarządzanie i marketing |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-8322-595-1 |
Rozmiar pliku: | 3,6 MB |