Szczegóły ebooka

Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów

Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów

Adrian Ostrowski, Piotr Gaczkowski

Ebook

C++ należy do najpopularniejszych i najbardziej cenionych za uniwersalność języków oprogramowania - umożliwia projektowanie rozbudowanych, a zarazem intuicyjnych w obsłudze aplikacji wysokiego poziomu. Pozwala tworzyć wydajną i czytelną architekturę oprogramowania również w wypadku znacznie zaawansowanych systemów i programów.

Dzięki tej książce poznasz narzędzia i rozwiązania, które ułatwiają projektowanie w języku C++ nawet najbardziej skomplikowanych aplikacji. Autorzy przybliżają samo pojęcie architektury oprogramowania i na praktycznych przykładach wyjaśniają, na czym polega jej tworzenie. Pokazują również aktualne trendy projektowe i uczą, jak za pomocą C++ krok po kroku, element po elemencie budować aplikacje i systemy na dowolnym poziomie zaawansowania. W trakcie lektury dowiesz się, jakie warunki powinna spełniać efektywna architektura oprogramowania i jak sprawić, by gwarantowała wysoki poziom bezpieczeństwa, skalowalności i wydajności. Liczne przykłady, zrozumiałe objaśnienia i przyjazny język pozwalają na efektywne i szybkie przyswajanie wiedzy dotyczącej tworzenia rozproszonych, skomplikowanych aplikacji w C++.

W książce:

  • projektowanie aplikacji bazujących na wydajnej, nowoczesnej i czytelnej architekturze oprogramowania
  • używanie najważniejszych zasad i wzorców projektowych umożliwiających tworzenie efektywnego kodu za pomocą języka C++
  • analizowanie różnych koncepcji architektury oprogramowania i stosowanie tych, które w największym stopniu odpowiadają danemu projektowi
  • efektywne wykorzystywanie mechanizmów i rozwiązań dostępnych w najnowszej odsłonie języka C++

Wstęp

Część I. Koncepcje i składniki architektury oprogramowania

  • Rozdział 1. Znaczenie architektury oprogramowania i zasady dobrego projektowania
    • Wymagania techniczne
    • Zrozumienie pojęcia "architektura oprogramowania"
    • Uświadomienie sobie znaczenia właściwej architektury
    • Badanie podstaw dobrej architektury
    • Opracowywanie architektury według zasad podejścia zwinnego
    • Filozofia języka C++
    • Stosowanie zasad SOLID i DRY
    • Sprzężenie i spójność
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 2. Style architektoniczne
    • Wymagania techniczne
    • Wybór pomiędzy podejściem stanowym i bezstanowym
    • Zapoznanie się z monolitami - dlaczego należy ich unikać i jakie są wyjątki
    • Zrozumienie działania usług i mikrousług
    • Badanie architektury opartej na zdarzeniach
    • Zrozumienie działania architektury warstwowej
    • Zapoznanie się z architekturą opartą na modułach
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 3. Wymagania funkcjonalne i niefunkcjonalne
    • Wymagania techniczne
    • Zapoznanie się z typami wymagań
    • Rozpoznawanie wymagań istotnych dla architektury
    • Zbieranie wymagań z różnych źródeł
    • Dokumentowanie wymagań
    • Dokumentowanie architektury
    • Wybór właściwych perspektyw do udokumentowania
    • Generowanie dokumentacji
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe

Część II. Projektowanie i wytwarzanie oprogramowania w języku C++

  • Rozdział 4. Projektowanie architektur i systemów
    • Wymagania techniczne
    • Zrozumienie specyfiki systemów rozproszonych
    • Zapewnienie systemowi dostępności i odporności na uszkodzenia
    • Integrowanie systemu
    • Osiąganie wydajności w dużej skali
    • Wdrażanie systemu
    • Zarządzanie interfejsami API
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 5. Wykorzystywanie cech języka C++
    • Wymagania techniczne
    • Projektowanie doskonałych interfejsów API
    • Pisanie deklaratywnego kodu
    • Przenoszenie obliczeń na czas kompilacji
    • Wykorzystanie potęgi bezpiecznych typów
    • Pisanie modularnego kodu C++
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 6. Wzorce projektowe a język C++
    • Wymagania techniczne
    • Pisanie idiomatycznego kodu C++
    • Ciekawie rekurencyjny wzorzec szablonu
    • Tworzenie obiektów
    • Śledzenie stanu i odwiedzanie obiektów w języku C++
    • Efektywne postępowanie z pamięcią
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 7. Budowanie i pakowanie
    • Wymagania techniczne
    • Wykorzystanie kompilatorów do granic ich możliwości
    • Zapewnianie abstrakcji procesu budowania
    • Korzystanie z modułów zewnętrznych
    • Wielokrotne korzystanie z kodu o dobrej jakości
    • Pakowanie przy użyciu narzędzia Conan
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe

Część III. Architektoniczne atrybuty jakościowe

  • Rozdział 8. Pisanie testowalnego kodu
    • Wymagania techniczne
    • Po co testować kod?
    • Wprowadzenie do frameworków testowych
    • Zapoznanie się z atrapami i imitacjami
    • Projektowanie klas sterowane testami
    • Automatyzowanie testów na potrzeby ciągłej integracji/ciągłego wdrażania
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 9. Ciągła integracja i ciągłe wdrażanie
    • Wymagania techniczne
    • Zapoznanie się z ciągłą integracją
    • Recenzowanie zmian w kodzie
    • Badanie automatyzacji sterowanej testami
    • Zarządzanie wdrażaniem jako kodem
    • Budowanie kodu wdrożeniowego
    • Budowanie potoku CD
    • Korzystanie z niezmiennej infrastruktury
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 10. Bezpieczeństwo kodu i wdrażania
    • Wymagania techniczne
    • Sprawdzanie zabezpieczeń kodu
    • Sprawdzanie, czy zależności są bezpieczne
    • Utwardzanie kodu
    • Utwardzanie środowiska
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 11. Wydajność
    • Wymagania techniczne
    • Mierzenie wydajności
    • Pomaganie kompilatorowi w generowaniu wydajnego kodu
    • Zrównoleglanie obliczeń
    • Używanie koprocedur
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe

Część IV. Zasady projektowania natywnego dla chmury

  • Rozdział 12. Architektura zorientowana na usługi
    • Wymagania techniczne
    • Zapoznanie się z architekturą zorientowaną na usługi
    • Wdrażanie zasad wymiany komunikatów
    • Korzystanie z usług sieciowych
    • Wykorzystywanie usług zarządzanych i dostawców chmury
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 13. Projektowanie mikrousług
    • Wymagania techniczne
    • Wniknięcie w temat mikrousług
    • Budowanie mikrousług
    • Obserwowanie mikrousług
    • Łączenie mikrousług
    • Skalowanie mikrousług
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 14. Kontenery
    • Wymagania techniczne
    • Reaktywacja kontenerów
    • Budowanie kontenerów
    • Testowanie kontenerów i integrowanie ich ze sobą
    • Zapoznanie się z orkiestracją kontenerów
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe
  • Rozdział 15. Projektowanie rozwiązań natywnych dla chmury
    • Wymagania techniczne
    • Zapoznanie się z rozwiązaniami natywnymi dla chmury
    • Orkiestracja obciążeń natywnych dla chmury przy użyciu platformy Kubernetes
    • Obserwowalność w systemach rozproszonych
    • Łączenie usług za pomocą siatki usług
    • Podejście GitOps
    • Podsumowanie
    • Pytania
    • Materiały dodatkowe

Dodatek A

Dodatek B. Odpowiedzi

  • Tytuł: Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
  • Autor: Adrian Ostrowski, Piotr Gaczkowski
  • Tytuł oryginału: Software Architecture with C++: Design modern systems using effective architecture concepts, design patterns, and techniques with C++20
  • Tłumaczenie: Krzysztof Bąbol
  • ISBN: 978-83-283-8667-9, 9788328386679
  • Data wydania: 2022-05-17
  • Format: Ebook
  • Identyfikator pozycji: aropbe
  • Wydawca: Helion