O książce dowiedziałem się dzięki portalowi https://www.safaribooksonline.com Przyszedł mi email z powiadomieniem, że wyszła nowa książka Roberta C. Martina.  Doceniam książki tego autora, dodatkowo interesuje się architekturą. Więc po skończeniu książek, które aktualnie czytałem z zaciekawieniem zabrałem się za tą pozycję.

ZAWARTOŚĆ

Książka podzielona jest na siedem części:

I. INTRODUCTION

Jest to wstęp do książki. Autor odpowiada w nim na pytanie czym jest design i architektura?. Opisuje jak poprzez zastosowanie złej architektury  dostarczany system będzie ciężki w rozwoju i utrzymaniu. Taka sytuacja powoduje zwiększenie kosztów produkcji oraz spadek produktywności programistów. Te problemy mogą wpłynąć poważnie na budżet firmy a nawet doprowadzić ją do bankructwa.

II. STARTING WITH THE BRICKS: PROGRAMMING PARADIGMS

Robert w tym fragmencie książki opisuje trzy paradygmaty programowania: funkcyjny, strukturalny i obiektowy. Dowiemy się czym one się różnią oraz poznamy trochę ich historii.

III. DESIGN PRINCIPLES

W tej części autor przedstawia jak zastosować zasady SOLID dla architektury systemu. Jest to bardzo interesujące spojrzenie na dobrze już znane zasady przedstawione pierwszy raz w książce:  Agile Principles, Patterns, and Practices in C#

IV. COMPONENT PRINCIPLES

Ta część poświęcona jest zasadom pomagającym dobrać klasy w komponenty:

  • REP: The Reuse/Release Equivalence Principle  -“The granule of reuse is the granule of release.”
  • CCP: The Common Closure Principle – “Gather into components those classes that change for the same reasons and at the same times. Separate into different components those classes that change at different times and for different reasons.”
  • CRP: The Common Reuse Principle – “Don’t force users of a component to depend on things they don’t need.”

Oraz trzem zasadom pomagającym w ustaleniu powiązań między komponentami:

  • The Acyclic Dependencies Principle- “Allow no cycles in the component dependency graph.”
  • The Stable Dependencies Principle- “Depend in the direction of stability.”
  • The Stable Abstractions Principle- “A component should be as abstract as it is stable.”

Poznamy także metryki pomagające w zastosowaniu tych zasad.

V. ARCHITECTURE

Tytuł tej części mówi sam za siebie. Dowiemy się z niej czym jest architektura. Poznamy, że dobra architektura powinna wspierać utrzymanie(maintenance), rozwój (development), wdrażanie ( deployment) systemu. Poznamy czym są granice oraz jak je wydzielać. Dowiemy się jak ważne jest aby reguły biznesowe były wydzielone i niezależne od reszty systemu oraz od frameworków. Poznamy zwrot SCREAMING ARCHITECTURE i dowiemy się co on oznacza. Poznamy także zasady pozwalające na zbudowanie CLEAN ARCHITECTURE oraz CLEAN EMBEDDED ARCHITECTURE.  Przedstawiony został także wzorzec  THE HUMBLE OBJECT PATTERN

VI. DETAILS

W tej części Martin objaśnia dlaczego baza danych, frameworki oraz mechanizm prezentacji (np. web) są detalami implementacyjnymi. W tej części znajduje się także rozdział napisany przez Simona Browna

VII. APPENDIX

Ostatnia część zawiera dodatek zatytułowany ARCHITECTURE ARCHAEOLOGY. Przedstawia on rozwój naszej branży oraz część autobiografii Roberta C. Martina. Zawiera także zdjęcia starych komputerów.

Podobał mi się rozdział zatytułowany THE MISSING CHAPTER napisany przez Simona Browna. Przedstawia on w nim różne sposoby łączenia kodu w paczki(assembly) :

  • PACKAGE BY LAYER
  • PACKAGE BY FEATURE
  • PORTS AND ADAPTERS
  • PACKAGE BY COMPONENT

Simon przedstawia różnicę między stylami architektonicznymi. Opisuje także koncepcję swojej architektury C4. Stosując ją jesteśmy w stanie wymusić na developerach przestrzegania jej stylu. Wspomina także dlaczego trzeba z rozwagą używać modyfikatora dostępu public.

PODSUMOWANIE

CLEAN ARCHITECTURE  Roberta C. Martina to próba zintegrowania najlepszych cech z stylów architektonicznych:  Hexagonal (Alistair Cockburn), DCI (James Coplien, Trygve Reenskaug) oraz BCE(Ivar Jacobson) w jedną działającą ideę.

Robert skupia się przede wszystkim na zasadach tworzenia architektury a nie na konkretnych wzorcach czy stylach. Poprzez zastosowanie tych zasad stworzony system powinien być testowalny, elastyczny oraz niezależny od frameworków, UI, bazy danych, łatwy w utrzymaniu, rozwoju i wdrożeniu.

DLA KOGO JEST TA KSIĄŻKA?

Musiałem się zmuszać aby oderwać się od tej pozycji. Zawiera ona dużo informacji historycznych co dla mnie było bardzo interesujące. Jest ona obowiązkowa dla osób zainteresowanych architekturą.

Zapraszam na inne recenzje: pisz-kod.pl/recenzje/

Informacje podstawowe:

Autor:  Robert C. Martin

Ilość stron: 432

Rok wydania: wrzesień 2017

Źródło okładki: https://www.pearson.com/us/higher-education/program/Martin-Clean-Architecture-A-Craftsman-s-Guide-to-Software-Structure-and-Design/PGM333762.html