Introduction to The Software Architecture Through Books
Fundamentals to the technical aspects of the software architecture
“The actual architect of any software project is those who write the code.”
Robert C. Martin
As software engineers, we all need to have a basic understanding of software architecture. Also, for those of us who aim to progress our career as software architects further in our journey, it is important to understand the technical parts of software architecture.
Even though the field of software architecture heavily relies on practical experience, we can also gain great insights through books from the experienced software architects of the industry.
Here in this article, I have listed the books I have found useful for understanding the fundamentals of software architecture. As the book prefaces describe their intention quite clearly, I let the books describe themselves.
Fundamentals of Software Architecture
This book won’t make someone a software architect overnight — it’s a nuanced field with many facets. We want to provide existing and burgeoning architects a good modern overview of software architecture and its many aspects, from structure to soft skills. [1]
Some of the topics covered:
- Architectural Thinking
- Architecture Characteristics
- Component-Based Thinking
- Architecture Styles
Clean Architecture
The changelessness of the code is the reason that the rules of software architecture are so consistent across system types. The rules of software architecture are the rules of ordering and assembling the building blocks of programs. And since those building blocks are universal and haven’t changed, the rules for ordering them are likewise universal and changeless.
Younger programmers might think this is nonsense. They might insist that everything is new and different nowadays, that the rules of the past are past and gone. If that is what they think, they are sadly mistaken. The rules have not changed. Despite all the new languages, and all the new frameworks, and all the paradigms, the rules are the same now as they were when Alan Turing wrote the first machine code in 1946.
But one thing has changed: Back then, we didn’t know what the rules were. Consequently, we broke them, over and over again. Now, with half a century of experience behind us, we have a grasp of those rules. [2]
Some of the topics covered:
- Programming Paradigms
- Design Principles
- Architecture Anatomy
- The Clean Architecture
Building Evolutionary Architectures
As more people are realizing the central role of software systems in our twenty-first century human world, knowing how best to respond to change while keeping on your feet will be an essential skill for any software leader.
Martin Fowler
Some of the topics covered:
- Evolvable Architectures
- Evolutionary Architecture Pitfalls and Antipatterns
- Fitness Functions
- Incremental Change
- Evolutionary Data
Software Architecture: The Hard Parts
A collection of difficult problems in modern software architecture, the trade-offs that make the decisions hard, and ultimately an illustrated guide to show you how to apply the same trade-off analysis to your own unique problems. [3]
Some of the topics covered:
- What Happens When There Are No “Best Practices”?
- Coupling in Software Architecture
- Architectural Decomposition
- Service Granularity
- Reuse Patterns
- Trade-Off Analysis
Related
References
[1] Fundamentals of Software Architecture : The Book Preface
[2] Clean Architecture: A Craftsman’s Guide to Software Structure and Design : The Book Preface
[3] Software Architecture: The Hard Parts : The Book Preface