Book Review: Fundamentals of Software Architecture

What to expect from a book on software architecture nowadays? Before reading this book I made some assumptions about would be recommended in this book: microservices, containers and the usual after-the-fact known concepts. Plus, as with other similar books as you read you tend to agree with common-sense-non-actionable ideas which make you nod while reading but wonder what to do after finish reading.

On the positive side, the book gives a nice overview of many concepts in software architecture, chapter two tries to define what an architect’s job is (when compared to a developer’s). Early on they set the expectations low by answering the which architecture is better question with: it depends.

Then, the authors go immediately in the next chapter to talk about, what else, modularity.

But how to measure modularity? Here comes what can be called the physics-envy guide to software architecture. So-called laws and some random metrics are given to make the subject look more scientific. This is something the author can’t be blamed for. Some math can be a selling point when trying to convince people to use a given design.

Here are the laws:

  • First law: why is more important than how.
  • Second law: everything is a trade-off.

The authors go on to invent a new term “architecture characteristics” for non-functional requirements (ilities). Three types are defined: operational (scalability, recoverability..), structural (configurability, extensibility) and cross-cutting (legal, privacy, security,…).

The figures included in this book are not the usually pleasant ones found in other O’Reilly books, they are to say is nicely not professionally made.

* Richards, Mark, and Neal Ford. Fundamentals of Software Architecture: An Engineering Approach. O’Reilly, 2020.