This is a collection of resources on software architecture. You can find books, blogs, conferences, podcasts and other things.
Software architecture is a broad field. Therefore, the collection cannot be complete and does not intend to be. Its goal is to provide an overview on the (arguably) most important sources of information for software architects.
If you feel anything is missing, feel free to contact me and/or contribute.
The books are sorted by publication date of the 1st edition.
All of the books in this list cover software architecture as a whole and can be used to get started with the topic. While they provide a good overview, they all have a slightly different focus or emphasize a different aspect. In the following list, these differentiating aspects are mentioned primarily.
- Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice, 3rd Edition. Addison-Wesley Professional (2013) - One of the first and most influential books on software architecture from the Software Engineering Institute (SEI). It covers various aspects of software architecture and introduces many basic terms and concepts, which are largely accepted by the community, today. Its specific focus lies on quality attributes as a driving factor for architecture design, as well as design, documentation and evaluation of software architecture.
- Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden, 9th Edition (German). Carl Hanser Verlag GmbH & Co. KG (2020) - A practical introductory book in German by Gernot Starke. It also serves as the preparation guide for the certification "Certified Professional for Software Architecture - Foundation Level" of the International Software Architecture Qualification Board (iSAQB).
- Eoin Woods, Nick Rozanski: Software Systems Architecture, 2nd Edition. Addison-Wesley Professional (2011) Another one of the early classics of the topic and widely appreciated book. Focus topics are the decomposition and description of architectures using views and perspectives as well as the architecture creation process, particularly by stakeholder involvement.
- Richard N. Taylor, Nenad Medvidovic, Eric M. Dashofy: Software Architecture: Foundations, Theory, and Practice. Wiley (2009): A comprehensive and deep introduction to software architecture, which covers many different aspects of the topic, written in a more academic style, however. One of the first books to explicitly define software architecture as the set of design decisions made for the system.
- George Fairbanks: Just Enough Software Architecture - A Risk-driven Approach. Marshall & Brainerd (2010) - More specialized introduction with a focus on architecture modeling. The risk-driven model aims to help architects to focus on the most important aspects, hence the title "Just Enough".
- Ian Gorton: Essential Software Architecture, 2nd Edition. Springer (2011) - A shorter introduction to software architecture. Besides the basic concepts (terms, quality attributes, documentation, architecting process) it covers several special topics such as middleware, service oriented architectures, aspect-orientation, model-driven architecture or product lines.
- Michael Keeling: Design It! - From Programmer to Software Architect. The Pragmatic Bookshelf (2017) - Unlike the title suggest, the book is not focused solely on design, but provides a general and modern introduction to software architecture. An important aspect of the book is the application of design thinking principles for architecture design. Besides this, it provides numerous hints for the work of architects, including an activity catalogue for achieving different goals.
- Mark Richards, Neal Ford: Fundamentals of Software Architecture - An Engineering Approach. O'Reilly Media, Inc. (2020) - The newest kid on the block and therefore the most modern introduction to software architecture. It gives a broad overview of different software architecture aspects including architect's leadership skills. A specific focus lies on the introduction and detailed description of various architecture styles.
The following list contains books, which focus specifically in architecture design. As such they provide detailed information on design approaches and patterns.
- Frank Buschmann, Kevlin Henney, Prashant Jain, Michael Kircher, Regine Meunier, Hans Rohnert, Douglas C. Schmidt, Peter Sommerlad, Michael Stal: Pattern-Oriented Software-Architecture (POSA) Vol. 1-5. Wiley (1996-2007) - A series of five books, which present and explain architectural design patterns for various contexts and problems. Not something to read from cover to cover but rather to be used as a work of reference when designing a system's architecture.
- Eric Evans: Domain-Driven Design - Tackling Complexity in the Heart of Software. Addison-Wesley Professional (2003) - Eric Evan's book has gained a lot of attention in recent years, also because of its good fit to the microservice architecture style. Many other books on the topic have been released (like Vaughn Vernon: Implementing Domain-Driven Design or Michael Plöd: Hands-on Domain-driven Design - by example) and there is now an active community which continuously refines and extends its concepts. It promotes design that is driven by the application domain (in contrast to technical aspects) and introduces a strategic (in the large) and a tactical (in the small) design approach, which is regarded as the de-facto standard by many today. While it presents many useful concepts, it cannot serve as the one and only holistic approach, as for example quality attributes are left out entirely (no silver bullet).
- Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley Professional (2003) - Another absolute classic of pattern books, written by Martin Fowler. It lists and explains many essential architectural patterns for enterprise applications, many of which are implemented in today's technologies and infrastructure components. Unlike other pattern books, it is not only a reference book, but contains also several narrative chapters, which are informative and well readable at the same time.
- Sam Newman: Building Microservices. O'Reilly Media, Inc. (2015) - Specialized book on how to design and build systems following a microservices architecture style by Sam Newman. Besides it being a very popular architecture style, the book covers many topics that are relevant for distributed and general system design as well.
- Martin Kleppmann: Designing Data-Intensive Applications - The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. O'Reilly Media, Inc. (2017) - In his book, Martin Kleppmann covers various topics related to the management, processing, transport, storage and retrieval of data. Besides the foundational concepts which are implemented in the technologies we typically use for building systems, he highlights many important aspects to consider when designing such data-intensive systems.
The following list contains books, which describe how to document and communicate software architecture.
- Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord, Judith Stafford: Documenting Software Architectures: Views and Beyond, 2nd Edition. Addison-Wesley Professional (2011) - The book in the SEI series on software architecture documentation and the one and only book specialized on the topic in English. It has a strong focus on introducing their viewtypes (module, component&connector, allocation) and corresponding architectural styles, in which somehow design and documentation mix. With this, it presents a more formal and detailed approach to documentation.
- Stefan Zörner: Softwarearchitekturen dokumentieren und kommunizieren: Entwürfe, Entscheidungen und Lösungen nachvollziehbar und wirkungsvoll festhalten, 2nd Edition (German). Carl Hanser Verlag GmbH & Co. KG (2015) A practical guide on how to document software architecture, written in German. To a large extent it makes use of the arc42 template by Gernot Starke and Peter Hruschka.
The following books cover approaches for evaluating and analyzing software architectures and related artifacts.
- Paul Clements, Rick Kazman: Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley Professional (2001) - The book in the SEI series on the evaluation of software architectures, using the well known Architecture Tradeoff Analysis Method (ATAM). The approach focusses on eliciting architecture drivers from stakeholders and evaluating the architecture with regard to these drivers.
- Jens Knodel, Matthias Naab: Pragmatic Evaluation of Software Architectures. Springer (2016) - Jens Knodel and Matthias Naab wrote a book on their Rapid Architecture Evaluation (RATE) method, which is originally based on ATAM, but adapted to integrate their experiences from over 50 architecture evaluations with various companies over many years. It includes different checks on different levels and of different artifacts, such as architecture drivers, the adequacy of the architecture, the quality of the documentation or the compliance of the implementation.
- Christine Koppelt, Markus Harrer, Gernot Starke, Benjamin Wolf, Martin Otten: Software Reviews - Identifying Risks and Problems in Software. Leanpub (2020) - A short guide for software reviews, which also presents analysis approaches on different levels and for different artifacts.
- Stefan Toth: Vorgehensmuster für Softwarearchitektur: Kombinierbare Praktiken in Zeiten von Agile und Lean, 3rd Edition (German). Carl Hanser Verlag GmbH & Co. KG, (2019) Stefan Toth's book is focused on providing practical tips on how to work as an architect in modern development teams, specifically in agile development settings. He lists many different patterns for architecting activities to make decisions, collaborate in the team and sustain solution concepts over time.
- Gregor Hohpe: The Software Architect Elevator: Transforming Enterprises with Technology and Business Architecture. O'Reilly Media, Inc. (2020) - In this book, Gregor Hohpe gives advice for working as an architect in larger organizations. His main theme is the architect connecting the penthouse with the engine room, i.e. being able to speak the language of the managers, as well as the one of the developers. So, as an architect, you constantly ride the elevator from top to bottom and vice-versa, which is where the name comes from. To help with that, the book provides information on the architect's role, communication, organizational structures and transformation.
Architects must know what they abstract from. So, knowing good programming is highly recommended for architects.
- Dave Thomas, Andrew Hunt: The Pragmatic Programmer. From Journeyman to Master, 20th Anniversary Edition, 2nd Edition. Addison-Wesley Professional (2019) Very influential book that many areas of working successfully as a professional developer. Considered as an absolute must-read book by many.
- Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education (2008) - The classical book by Uncle Bob describes how to write good code, for example by choosing good names, formatting right, testing well, handling errors, etc.
- Michael Nygard: Release It! - Design and Deploy Production-Ready Software, 2nd Edition. The Pragmatic Bookshelf (2018) - In his very popular book, Michael Nygard describes how to design and build systems for real-life production and operation. It provides information and hints for achieving many quality attributes, which are important for productive software systems, such as reliability, stability or operability.
- Jez Humble, David Farley: Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment. Addison-Wesley Professional (2010) - The classic book about continuous delivery by Jez Humble and Dave Farley.
- Martin Fowler's Blog
- Uwe Friedrichsen's Blog
- Gregor Hohpe: The Architect Elevator
- Stefan Tilkov's Blog
- Werner Vogels: All Things Distributed
- Conversations about Software Engineering - CASE Podcast
- Heise Developer: SoftwareArchitekTOUR (German)
- InnoQ Podcast (German)
- Software Engineering Radio
- Global Software Architecture Summit
- GOTO Conference
- JAX / W-JAX
- OOP (German)
- QCon
- Software Architecture Alliance (German)
- Software Architecture Gathering
- European Conference on Software Architecture (ECSA)
- International Conference on Software Architecture (ICSA)
- Kent Beck
- Grady Booch
- Jan Bosch
- Simon Brown
- Neal Ford
- Martin Fowler
- Kevlin Henney
- Gregor Hohpe
- Allen Holub
- Uncle Bob Martin
- Sam Newman
- Michael Nygard
- Michael Plöd
- Mary Poppendieck
- Stefan Tilkov
- Eberhard Wolff
- Uwe Friedrichsen
- Eoin Woods
- Stefan Tilkov and Michael Stal did an episode on "Resources for Software Architects" in the Heise Developer SoftwareArchitekTOUR podcast
- Gregor Hohpe wrote on article about an architect's bookshelf on his blog.
domrost has dedicated this work to the public domain by waiving all of his rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.