Podstawy architektury oprogramowania dla inżynierów

Book description

Oto kompleksowy przewodnik po nowych aspektach architektury oprogramowania. Skorzysta z niego zarówno praktykujący architekt, chcący odświeżyć swoje podejście do tego zagadnienia, jak i programista aspirujący do roli architekta. W książce zaprezentowano szereg zagadnień, które mimo zmieniających się uwarunkowań pozostają podstawami, takich jak parametry architektury, wzorce architektoniczne, określanie składników, tworzenie diagramów, prezentowanie architektury, architektura ewolucyjna i wiele innych. Dokładnie wyjaśniono te zasady, które mogą być zastosowane do wszystkich zestawów rozwiązań technologicznych. Przedstawiono niezwykle ważną kwestię analizy kompromisów, która pozwala na obiektywną ocenę rozwiązań technologicznych. Duży nacisk położono na konieczność uwzględniania wszystkich innowacji ostatniej dekady.

Table of contents

  1. Opinie o książce
  2. Przedmowa: obalanie aksjomatów
    1. Konwencje stosowane w książce
    2. Podziękowania
      1. Podziękowania od Marka Richardsa
      2. Podziękowania od Neala Forda
  3. Rozdział 1. Wprowadzenie
    1. Zdefiniowanie architektury oprogramowania
    2. Oczekiwania wobec architekta
      1. Podejmowanie decyzji architektonicznych
      2. Ciągłe analizowanie architektury
      3. Śledzenie najnowszych trendów
      4. Zapewnienie zgodności z decyzjami
      5. Bogate i zróżnicowane doświadczenie
      6. Wiedza z zakresu biznesu
      7. Umiejętności interpersonalne
      8. Znajomość i umiejętność stosowania polityki firmy
    3. Punkty przecięcia architektury z innymi elementami
      1. Praktyki inżynieryjne
      2. Operacje (DevOps)
      3. Proces
      4. Dane
    4. Prawa architektury oprogramowania
  4. Część I. Podstawy
  5. Rozdział 2. Myślenie architektoniczne
    1. Architektura a projekt
    2. Rozpiętość techniczna
    3. Analiza kompromisów
    4. Czynniki biznesowe
    5. Zachowanie równowagi między architekturą a kodowaniem
  6. Rozdział 3. Modułowość
    1. Definicja
    2. Pomiar modułowości
      1. Spójność
      2. Sprzężenie
      3. Abstrakcyjność i niestabilność
      4. Odległość od ciągu głównego
      5. Splątanie
        1. Splątanie statyczne
        2. Splątanie dynamiczne
        3. Właściwości splątań
      6. Unifikacja wskaźników sprzężenia i splątania
        1. Problemy ze splątaniem lat 90.
    3. Od modułów do składników
  7. Rozdział 4. Definiowanie parametrów architektury
    1. (Niepełna) lista parametrów architektury
      1. Operacyjne parametry architektury
      2. Strukturalne parametry architektury
      3. Przekrojowe parametry architektury
    2. Kompromisy i najmniej niekorzystna architektura
  8. Rozdział 5. Identyfikacja parametrów architektury
    1. Określanie parametrów architektury na podstawie zagadnień dziedzinowych
    2. Określanie parametrów architektury na podstawie wymagań
    3. Studium przypadku: Krzemowe Kanapki
      1. Parametry sprecyzowane
      2. Parametry dorozumiane
  9. Rozdział 6. Pomiar parametrów architektury i zarządzanie nimi
    1. Pomiar parametrów architektury
      1. Pomiary operacyjne
      2. Pomiary strukturalne
      3. Pomiary procesowe
    2. Funkcje zarządzania i dopasowania
      1. Zarządzanie parametrami architektury
      2. Funkcje dopasowania
        1. Zależności cykliczne
        2. Funkcja dopasowania odległości od ciągu głównego
  10. Rozdział 7. Zakres parametrów architektury
    1. Sprzężenie i splątanie
    2. Kwanty architektury i ziarnistość
      1. Studium przypadku: „Po raz pierwszy, po raz drugi, sprzedane!”
  11. Rozdział 8. Myślenie w oparciu o składniki
    1. Zakres składnika
    2. Rola architekta
      1. Podział architektury
      2. Studium przypadku: Krzemowe Kanapki — podział
        1. Podział dziedzinowy
        2. Podział techniczny
    3. Rola programisty
    4. Proces identyfikacji składników
      1. Identyfikacja składników początkowych
      2. Przypisywanie wymagań do składników
      3. Analiza ról i odpowiedzialności
      4. Analiza parametrów architektury
      5. Restrukturyzacja składników
    5. Szczegółowość składników
    6. Projektowanie składników
      1. Odkrywanie składników
        1. Pułapka encji
        2. Podejście aktor-akcje
        3. Event storming
        4. Podejście przepływu pracy
    7. Studium przypadku: „Po raz pierwszy, po raz drugi, sprzedane!” — odkrywanie składników
    8. Jeszcze raz o kwantach architektury: wybór między architekturą monolityczną a rozproszoną
  12. Część II. Style architektoniczne
  13. Rozdział 9. Podstawy
    1. Podstawowe wzorce
      1. Bryła błotna
      2. Architektura unitarna
      3. Klient-serwer
        1. Komputer stacjonarny + serwer bazodanowy
        2. Przeglądarka + serwer WWW
        3. Architektura trójwarstwowa
    2. Architektury monolityczne a rozproszone
      1. Mit 1. Sieć jest niezawodna
      2. Mit 2. Opóźnienie jest zerowe
      3. Mit 3. Przepustowość jest nieskończona
      4. Mit 4. Sieć jest bezpieczna
      5. Mit 5. Topologia nigdy się nie zmienia
      6. Mit 6. Jest tylko jeden administrator
      7. Mit 7. Koszt transportu jest zerowy
      8. Mit 8. Sieć jest homogeniczna
      9. Inne kwestie związane z rozproszeniem
        1. Rozproszone dzienniki zdarzeń
        2. Rozproszone transakcje
        3. Utrzymywanie i wersjonowanie kontraktów
  14. Rozdział 10. Styl architektury warstwowej
    1. Topologia
    2. Warstwy izolacji
    3. Dodawanie warstw
    4. Inne kwestie
    5. Dlaczego warto stosować ten styl architektoniczny?
    6. Ocena parametrów architektury
  15. Rozdział 11. Styl architektury potokowej
    1. Topologia
      1. Potoki
      2. Filtry
    2. Przykład
    3. Ocena parametrów architektury
  16. Rozdział 12. Styl architektury mikrojądra
    1. Topologia
      1. Podstawowy system
      2. Dołączane składniki
    2. Rejestr
    3. Kontrakty
    4. Przykłady i przypadki użycia
    5. Ocena parametrów architektury
  17. Rozdział 13. Styl architektury bazującej na usługach
    1. Topologia
    2. Warianty topologii
    3. Projektowanie usług i ich szczegółowość
    4. Podział bazy danych
    5. Przykład architektury
    6. Ocena parametrów architektury
    7. Kiedy należy używać tego stylu architektonicznego?
  18. Rozdział 14. Styl architektury sterowanej zdarzeniami
    1. Topologia
    2. Topologia brokera
    3. Topologia mediatora
    4. Komunikacja asynchroniczna
    5. Obsługa błędów
    6. Zapobieganie utracie danych
    7. Rozgłaszanie
    8. Żądanie-odpowiedź
    9. Wybór między modelem opartym na żądaniach a modelem opartym na zdarzeniach
    10. Architektury hybrydowe sterowane zdarzeniami
    11. Ocena parametrów architektury
  19. Rozdział 15. Styl architektury przestrzennej
    1. Ogólna topologia
      1. Jednostka przetwarzająca
      2. Zwirtualizowane oprogramowanie pośredniczące
        1. Klaster komunikatów
        2. Klaster danych
        3. Klaster przetwarzania
        4. Menedżer wdrażania
      3. Pompy danych
      4. Jednostki zapisu danych
      5. Jednostki odczytu danych
    2. Kolizje danych
    3. Wdrożenia chmurowe a lokalne
    4. Buforowanie replikowane a rozproszone
    5. Model near-cache
    6. Przykłady wdrożeń
      1. System sprzedaży biletów na koncerty
      2. System aukcji internetowych
    7. Ocena parametrów architektury
  20. Rozdział 16. Architektura zorientowana na usługi sterowana orkiestracją
    1. Historia i filozofia
    2. Topologia
    3. Taksonomia
      1. Usługi biznesowe
      2. Usługi korporacyjne
      3. Usługi aplikacji
      4. Usługi infrastrukturalne
      5. Silnik orkiestracji
      6. Przepływ komunikatów
    4. Wykorzystuj ponownie… i sprzęgaj
    5. Ocena parametrów architektury
  21. Rozdział 17. Architektura mikrousług
    1. Historia
    2. Topologia
    3. Rozproszenie
    4. Ograniczony kontekst
      1. Poziom szczegółowości
      2. Izolacja danych
    5. Warstwa API
    6. Wieloużywalność operacyjna
    7. Interfejsy
    8. Komunikacja
      1. Choreografia i orkiestracja
      2. Transakcje i sagi
    9. Ocena parametrów architektury
    10. Dodatkowe informacje
  22. Rozdział 18. Wybór odpowiedniego stylu architektonicznego
    1. Zmiana „mody” w architekturze
    2. Kryteria decyzyjne
      1. Parametry architektury wpływające na strukturę
    3. Studium przypadku architektury monolitycznej: Krzemowe Kanapki
      1. Monolit modułowy
      2. Mikrojądro
    4. Studium przypadku architektury rozproszonej: „Po raz pierwszy, po raz drugi, sprzedane!”
  23. Część III. Techniki i umiejętności miękkie
  24. Rozdział 19. Decyzje architektoniczne
    1. Antywzorce w decyzjach architektonicznych
      1. Antywzorzec Obrona Swojego Stanowiska
      2. Antywzorzec Dzień Świstaka
      3. Antywzorzec Architektura Sterowana Wiadomościami E-mail
    2. Istotność architektoniczna
    3. Rejestr decyzji architektonicznych
      1. Podstawowa struktura
        1. Tytuł
        2. Status
        3. Kontekst
        4. Decyzja
        5. Konsekwencje
        6. Zgodność
        7. Uwagi
      2. Przechowywanie dokumentów ADR
      3. ADR jako dokumentacja
      4. Wykorzystanie dokumentów ADR do standaryzacji
      5. Przykład
  25. Rozdział 20. Analiza ryzyka w architekturze
    1. Macierz ryzyka
    2. Ocena ryzyka
    3. Risk storming
      1. Identyfikacja
      2. Konsensus
      3. Ograniczanie
    4. Analizy ryzyka historyjek w metodykach zwinnych
    5. Przykłady risk stormingu
      1. Dostępność
      2. Elastyczność
      3. Bezpieczeństwo
  26. Rozdział 21. Tworzenie diagramów i prezentacja architektury
    1. Diagramy
      1. Narzędzia
      2. Standardy tworzenia diagramów: UML, C4 i ArchiMate
        1. UML
        2. C4
        3. ArchiMate
      3. Wskazówki dotyczące sporządzania diagramów
        1. Tytuły
        2. Linie
        3. Kształty
        4. Etykiety
        5. Kolory
        6. Legenda
    2. Prezentacja
      1. Manipulowanie czasem
      2. Diagramy przyrostowe
      3. Karty informacyjne a prezentacje
      4. Slajdy to połowa przekazu
      5. Niewidoczność
  27. Rozdział 22. Zwiększanie efektywności zespołów
    1. Granice zespołów
    2. Osobowości architektów
      1. Maniak kontroli
      2. Architekt fotelowy
      3. Skuteczny architekt
    3. Poziom kontroli
    4. Znaki ostrzegawcze w zespole
    5. Wykorzystanie list kontrolnych
      1. Lista kontrolna gotowości kodu
      2. Lista kontrolna testów jednostkowych i funkcjonalnych
      3. Lista kontrolna wydania oprogramowania
    6. Udzielanie wskazówek
    7. Podsumowanie
  28. Rozdział 23. Umiejętności negocjacyjne i zdolności przywódcze
    1. Negocjacje i facylitacja
      1. Negocjacje z interesariuszami biznesowymi
      2. Negocjacje z innymi architektami
      3. Negocjacje z programistami
    2. Architekt oprogramowania jako lider
      1. Cztery aspekty architektury
      2. Bądź pragmatyczny, ale zarazem wizjonerski
      3. Przewodzenie zespołom poprzez dawanie przykładu
    3. Integracja z zespołem
    4. Podsumowanie
  29. Rozdział 24. Rozwijanie ścieżki kariery zawodowej
    1. Zasada 20 minut
    2. Opracowanie osobistego radaru
      1. Radar technologiczny firmy ThoughtWorks
        1. Części
        2. Pierścienie
      2. Wizualizacje open source
    3. Korzystanie z mediów społecznościowych
    4. Kilka rad na pożegnanie
  30. Dodatek A. Pytania sprawdzające
    1. Rozdział 1. Wprowadzenie
    2. Rozdział 2. Myślenie architektoniczne
    3. Rozdział 3. Modułowość
    4. Rozdział 4. Definiowanie parametrów architektury
    5. Rozdział 5. Identyfikacja parametrów architektury
    6. Rozdział 6. Pomiar parametrów architektury i zarządzanie nimi
    7. Rozdział 7. Zakres parametrów architektury
    8. Rozdział 8. Myślenie w oparciu o składniki
    9. Rozdział 9. Podstawy
    10. Rozdział 10. Styl architektury warstwowej
    11. Rozdział 11. Styl architektury potokowej
    12. Rozdział 12. Styl architektury mikrojądra
    13. Rozdział 13. Styl architektury bazującej na usługach
    14. Rozdział 14. Styl architektury sterowanej zdarzeniami
    15. Rozdział 15. Styl architektury przestrzennej
    16. Rozdział 16. Architektura zorientowana na usługi sterowana orkiestracją
    17. Rozdział 17. Architektura mikrousług
    18. Rozdział 18. Wybór odpowiedniego stylu architektonicznego
    19. Rozdział 19. Decyzje architektoniczne
    20. Rozdział 20. Analiza ryzyka w architekturze
    21. Rozdział 21. Tworzenie diagramów i prezentacja architektury
    22. Rozdział 22. Zwiększanie efektywności zespołów
    23. Rozdział 23. Umiejętności negocjacyjne i zdolności przywódcze
    24. Rozdział 24. Rozwijanie ścieżki kariery zawodowej
    25. O autorach
    26. Kolofon

Product information

  • Title: Podstawy architektury oprogramowania dla inżynierów
  • Author(s): Neal Ford Mark Richards
  • Release date: December 2020
  • Publisher(s): Helion
  • ISBN: 9788328370272