Image 1. Monument Valley game
It is necessary to have much practical experience and an excellent theoretical background to be successful in any field of activity. The area of software architecture is no exception. If one can get their practical experience only from participating in real-life projects, the theoretical knowledge can be improved at home.
One of the main differences between the development theory and theory of software architecture is that knowledge is becoming obsolete more slowly for the latter. So, if you have found a resource of the 2000s, it is likely to be still relevant.
I would recommend you to start your acquaintance with the theory of software architecture by reading some books. This article suggests which ones suit the best.
Article series
- The Path to Becoming a Software Architect
- Stakeholders in Software Architecture
- Types of Software Architects
- Quality attributes in Software Architecture
- Documentation in Software Architecture
- Certificates in Software Architecture
- Books in Software Architecture
- System Design Cheat Sheet
Outside this list of books are:
- Books related to a specific technological domain. The software architect must have a broad technical range of skills. At the same time, there are quite a lot of good books related to specific technologies like cloud solutions or enterprise java. However, this list does not include such kind of literature.
- Books titled ?3, 7, 9, 97, 99, 248, something ? or ?something in 24 hours/21 days /for dummies?. In general, I feel skeptical about the books which offer you to become an expert during a short period. Especially it concerns the area of software architecture. The same applies to the sets of N-tips. The software architecture cannot be considered without its context. Sometimes even minor details affect the decisions, but it can be impossible to catch them without a context. The books with the title ?N best practices in the field of something? often contain straightforward tips like ?brush your teeth in the morning, do morning exercises, do not take alcohol before the job interview.?
How do you rank books on this list?
In the list, each book has one of the following icons:
- ?MUST READ! This book is recommended for reading, even if you are not going to deal with the software architecture in the future. Also, it does not matter what is your role, whether you are a developer, a manager, or a tester.
- ?The book can be useful to those who want to grow in the direction of software architecture.
- ?This book can expand your horizons. However, for the lack of time or with better alternatives, you can skip it.
Also, I need to warn you that most of these books are challenging to read because of the authors? abstract-mindedness and a large number of details that you have to keep in mind simultaneously. Personally, for me, it was hard to read almost half of the books from this list. However, I hope that you are as motivated and self-disciplined as I was because these books can change your mindset.
Books on the theory of Software Architecture
?Software Architecture in Practice (3rd Edition) (SEI Series in Software Engineering)
by Len Bass, Paul Clements, Rick Kazman
The first book on the list, as well as the first book which you should read on the subject of software architecture. This book describes the basic concepts: management of project requirements, especially non-functional, documenting the architecture, assessing the architecture in terms of success. It also clarifies how to work on architecture in agile terms and changing requirements. Examples and an easy-to-read style of writing are good advantages of this book.
?Essential Software Architecture
by Ian Gorton
One of the alternative books for your acquaintance with the basic theory giving a good overview of the software architect?s work. It describes the essential skills which are needed to be an architect, from the way of thinking to the knowledge of various technologies. Also, there are considerations on the attributes of quality and other areas of software architecture.
?Patterns of Enterprise Application Architecture
by Martin Fowler
An excellent book, which describes the cases that developers of enterprise applications have to deal with, as well as ways to solve those issues. One of the advantages is that the proposed solutions can be applied to many different technological stacks. However, in general, this book is more suitable for a developer or a system architect than for a solution/enterprise architect, since it describes low-level problems and solutions.
?Domain-Driven Design: Tackling Complexity in the Heart of Software
By Eric Evans
This book is a must if you do not understand why it is a deadly sin to have the word ?car? in the documentation, ?automobile? in the implementation of the back-end database, and ?vehicle? on the client side. Besides, it contains useful guidelines on how to communicate to get a working conceptual model and to orchestrate it for all of the stakeholders.
?Stakeholder Theory: The State of the Art
by R. Edward Freeman, Jeffrey S. Harrison, Andrew C. Wicks, Bidhan L. Parmar, Simone de Colle
The authors offer to review their great practical experience in understanding the needs of the modern business for stakeholder management. The book describes both the basics and specific examples from various business domains, such as finance, accounting, law, management. Particular attention is paid to business ethics in cooperating with the stakeholders. It is one of the books for changing the mindset: it helps to realize that everything should be done to solve people?s problems in the first place, but not because the developers need to practice the technologies.
Books about Design and Diagrams in Software Architecture
?Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
by Craig Larman
UML is one of the generally accepted and popular standards of documentation in the development and architecture of the software. The book gives many examples of how to draw UML diagrams. The author gradually shows what skills are necessary for documenting, each time complicating the task. The only drawback for the software architect is that most of the examples in the book are about object-oriented programming, and they are not related to high-level schemes for large projects.
?Documenting Software Architectures: Views and Beyond
by Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord
This one is a real classic in the field of documenting software architecture. It is the most comprehensive guide answering the questions from ?Why do I need documentation at all?? to ?How to document SOA.? Besides, it explains various documentation techniques (UML, AADL, and SysML) along with real-life examples.
?Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives
by Nick Rozanski, Ein Woods
The authors of one of the best known and most frequently used techniques for designing and documenting software architecture offer their vision for these processes. At least you learn an alternative approach to designing and documenting. At most, you apply it to your project.
?Designing Software Architectures: A Practical Approach (SEI Series in Software Engineering)
by Humberto Cervantes, Rick Kazman
This book can help you adopt various designing methodologies from real-life projects. One of the main points of this book is the description of ADD (Attribute-Driven Design) and the application of this approach to practice. The authors also introduce different principles of designing concerning various projects, from pre-sales to enterprise solutions.
Other books on Software Architecture
?Software Estimation: Demystifying the Black Art
by Steve McConnell
The author of ?Code Complete? shares the secrets of evaluating projects of any size and degree of uncertainty. This book is as suitable for the developer, as the architect or manager. It contains a massive number of assessment techniques and allows you to understand your current level as an assessor of projects. A must-read!
?Site Reliability Engineering
by Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy
The fantastic book described how Google support their production environments. There is also an interesting note: DevOps vs. SRE. Have you ever heard about SRE? If not, then this book is for sure for you.
?Enterprise Architecture As Strategy: Creating a Foundation for Business Execution
by Jeanne W. Ross, Peter Weill, David Robertson
The book is for those who want to learn more about the enterprise architecture and to understand interrelations between the business and the nature of solutions for it. The authors? overview of the company?s business and its connection to IT inside the company allows you to understand why the choice is made in favor of this or that solution, and also how to arrange IT processes so that they work for business.
?Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
by Martin Kleppmann
The author shares his experience in building scalable, stable, and flexible systems. The book describes the fundamental principles of building such systems, as well as examples of workarounds which may be unavoidable during the design.
Conclusion
In the next article, we consider a short guide to the system design: whether you can quickly determine how the project should look like, and what questions you need to ask so that there are no uncertainties with the stakeholders.
? If you enjoyed this article, then please hit the big clap button and recommend it to your colleagues and friends. ?