Fundamentals of Software Architecture Book
I read the book Fundamentals of Software Architecture. The book deserves its name, it covers some basic concepts of software architecture and being an architect. There are many topics but they are not so much deep. I like the balance that they set up for the breadth and depth of these topics.
Some topics are driven by the expectations of a software architect that they define;
There are eight core expectations placed on a software architect, irrespective of any given role, title, or job description:
- Make architecture decisions
- Continually analyze the architecture
- Keep current with latest trends
- Ensure compliance with decisions
- Diverse exposure and experience
- Have business domain knowledge
- Possess interpersonal skills
- Understand and navigate politics
The first key to effectiveness and success in the software architect role depends on understanding and practicing each of these expectations.
So, in addition to technical concepts, the soft skills of an architect are also well covered in the book.
Main Parts
The book has three main parts; foundations, architecture styles, techniques and soft skills. Foundations part is about general concepts of software architecture, you learn what you should expect from software architecture, such as the structure of the system, architecture characteristics, architecture decisions, and design principles.
In the architecture styles part, different architecture styles are introduced and evaluated with some architecture characteristic criterias. Eight different architecture styles, including layered, service-based, event-driven, microservices, are used, they are not deeply introduced but you can get the idea about the main problems that particular architecture style solves well.
Evaluation tables help a lot to understand the strong and weak sides of these architecture styles. In these tables, you can see how some architectural characteristics, such as scalability, deployability, elasticity, performance, overall cost, etc. are supported for the particular architectural style.
Techniques and soft skills part covers many good concepts including making healthy architectural decisions, risk analyzing techniques, presentation abilities, managing team relationships, negotiation patterns, and investing in a career as an architect.
There is also a self-assessment questions at the end of the book, they prepared some questions for each chapter of the book. This’s a good opportunity to revise the concepts that the book cover.
I like the book generally and recommend it. I think the book is not only for software architects or for software engineers who want to be a software architect, the book talks to wider audiences. As a technical manager, senior, or mid-level developer, you can get many takeaways from this book. The book creates awareness about what our expectations should be from software architecture and a software architect.