Books in Software Architecture

To be successful in any field of activity, it is necessary to have a lot of practical experience and a good theoretical background. The field of software architecture is no exception. And 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 with reading some books. This article will suggest you which ones suit the best.

Outside this list of books are:

  • Books related to a specific technological domain. Definitely, 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. But this list does not include such kind of literature.
  • Books titled “3, 7, 9, 97, 99, 248, etc. 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 span of time. 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 a 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 in 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 exactly in the direction of software architecture.
  • 🥉A good book which 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 rather difficult to read because of the authors’ abstract-mindedness and a large number of details which you will have to keep in mind simultaneously. Personally for me, it was hard to read almost half of the books from this list. But 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 in 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 key 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
A wonderful 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 in order 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 reviewing their great practical experience in understanding the needs of the modern business from the point of view of stakeholder management. The book describes both the basics and specific examples from various business domains, such as finance, accounting, law, management, and so on. Particular attention is paid to business ethics in cooperating with the stakeholders. This is one of the key 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 schemes 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 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, Eóin 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 will learn an alternative approach to designing and documenting, at most you will 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 key 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 in relation to different 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, like the architect or manager. It contains a huge number of assessment techniques and allows you to understand your current level as an assessor of projects. A must-read!

🥉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 will allow 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 key principles of building such systems, as well as examples of workarounds which may be unavoidable during the design.

No comments:

Post a Comment

The Ultimate XP Project

  (Bài chia sẻ của tác giả  Ryo Amano ) Trong  bài viết  số này, tôi muốn viết về dự án phát triển phần mềm có áp dụng nguyên tắc phát triển...