Software Architecture Books

This article starts with selecting 5 books every software architect should read as part of their career journey. These books provide broader coverage of software architecture including architecture patterns, methodologies, design patterns, practices & tactics, documentation practices, and much more. 


Design Patterns - 5 Books Every Software Architect Should Read
Source: Addison-Wesley Professional Computing Series

Design Patterns: Elements of Reusable Object-Oriented Software

Purpose: While it is intended for object-oriented languages, it provides a perspective on how to develop design patterns for any architectural style based on knowledge, applicability, and proven practices.

  • Creational (5) object creation: Abstract Factory, Builder, Factory Method, Prototype, Singleton
  • Structural (7) – composition of classes/objects: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
  • Behavioral (11) – interaction of classes/objects: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Momento, Observer, State, Strategy, Template Method, Visitor

Author: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Date Released: 1994

Domain-driven Design: 5 Books Every Software Architect Should Read
Source: Addison-Wesley

Domain-Driven Design: Tackling Complexity in the Heart of Software

Purpose: It provides foundational knowledge applying domain-driven design for microservices-oriented architecture style. Key concepts covered are:

  • Building Domain Model: Ubiqutious Language, Model-driven Design, One Team – One Language
  • Model-driven Design: Isolating domain, Services & Domain Isolation, Modules, Modeling Paradigms, Life-cycle of domain object, Using the domain language
  • Refactoring and Strategic Design: Supple Design, Analysis Patterns, Bounded Context, Distillation, and Large-scale

Author: Eric Evans
Date Released: 2003

5 Books Every Software Architect Should Read
Source: Addison-Wesley

Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

Purpose: It covers broader areas a software architect should be aware starting with the role of a software architect in an organization. As a handbook, a toolkit for presenting a set of architectural viewpoints and perspectives.

  • Introduces basic concepts of architecture, the role of the software architect, and stakeholders management
  • Viewpoints: Context, Functional, Information, Concurrency, Development, Deployment, and Operational viewpoints
  • Perspectives: Security, Performance and Scalability, Availability and Resilience, Evolution, Location, Development Resource, Internationalization


Author: Eoin Woods and Nick Rozanski
Date Released: 2005, 2011 (2nd edition)

Site Reliability Engineering - 5 Books Every Software Architect Should Read
Source: Google

Site Reliability Engineering: How Google Runs Production Systems

Purpose: As the lifespan of software systems is majorly in production, this is a must-read book to apply modern and pragmatic site reliability engineering practices.

  • Understand the basics of site reliability engineering and difference from conventional practices
  • SRE Principles with patterns, behaviorus, and areas of concern related to SRE
  • SRE Practices with theory & practices on building large distributed systems
  • Google’s Management best practices for organizations

Author: Betsy Beyer, Jennifer Petoff, Niall Richard Murphy, Chris Jones
Date Released: 2016

Software Architecture in Practice - 5 Books Every Software Architect Should Read
Source: SEI

Software Architecture in Practice

Purpose: Classic and award-winning book (published by SEI) with basic concepts/context of architecture, architecture definition, architecture life cycle, and concepts like:

  • software quality attributes – availability, interoperability, modifiability, performance, security, testability, usability
  • architectural tactics & patterns – many useful tactics and patterns
  • designing & architecture evaluation, documenting architecture, management & governance

Authors: Len Bass, Paul Clements, and Rick Kazman
Date Released: 1994

Other Recommended Books


Book TitlePurpose & Usage
Patterns of Enterprise Application Architecture
– Martin Fowler
A classic collection of prevalent enterprise patterns including domain logic patterns, data source architectural patterns, object-relations patterns, web presentation patterns, distribution patterns, offline concurrent patterns, session state patters, and base patterns.
Software Architecture Patterns
– Mark Richards
It outlines common software architecture patterns prevalent in designing systems under consideration. Key patterns are:
– Layered architecture
– Event-driven architecture
– Microkernel architecture
– Microservices architecture
– Space-based architecture
Fundamentals of Software Architecture: An Engineering Approach
– Mark Richards, Neal Ford
Published by ThoughtWorks seasoned architects to explore principles of software architecture; examines the strengths and weaknesses of different architectural patterns. It discusses foundational elements like architectural thinking and component-based thinking plus architecture styles like layered, pipeline, microkernel, service-based, event-based, microservices, etc. It also has a section on soft skills and techniques required for software architects.
Building Evolutionary Architectures
– Neal Ford, Rebecca Parsons, Patrick Kua
Published by ThoughtWorks seasoned architects to support guided, incremental change across multiple dimensions. It discusses concepts like Fitness Functions, Engineering Incremental Change, Architectural Coupling, Evolutionary Data, Building Evolvable Architectures, and Evolutionary Architecture Pitfalls and Antipatterns.
Release It!: Design and Deploy Production-Ready Software
– Michael T. Nygard
For implementing production-ready software applying stability, capacity, general design, and operations patterns and anti-patterns. One of the most recommended books for maintaining production systems applying modern practices.
97 Things Every Software Architect Should Know
– Richard Monson-Haefel
Collective advice from more than four dozen architects offering advice on communication, eliminating complexity, empowering developers, and many more practical lessons they’ve learned from years of experience. Examples – Chances Are, Your Biggest Problem Isn’t Technical, Quantify, Stand-Up, Architects Mist Be Hands-On, Record Your Rationale, Don’t Control but Observe, etc.
Documenting Software Architectures: Views and Beyond
– SEI
Provides a detailed overview of architecture styles (decomposition, layered, generalization, etc.), architecture documentation essentials (context diagrams, variation points, interfaces, etc.), and architecture views for reviews.
The Software Architect Elevator
– Gregor Hohpe (2020)
This book is getting popular because of the modernized approach towards enabling architects to be successful in large-scale IT organizations.
It discusses the architect’s journey starting in IT engine room and progressing towards the organizational penthouse. Understanding architecture, communication, organizational structure, transformation, and living the life of change agents are key topics discussed.
The Phoenix Project (A Novel About IT, DevOps, and Helping Your Business Win)
– Gene Kim, Kevin Behr, and George Spafford
It has been recommended for business and IT executives to understand the growing complexity of IT programs. With a real-world example (code name Phoenix) in the writing style as Novel helps to connect with the use-case.
The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data
– Gene Kim
It is considered to be a companion novel to The Phoenix Project (six years apart by the same author). It introduces the concept of five ideals:
– Locality and Simplicity
– Focus, Flow, and Joy
– Improvement of Daily Work
– Psychological Safety
– Customer Focus
Clean Architecture: A Craftsman’s Guide to Software Structure and Design
– Robert Martin
It starts with the differentiation between design and architecture. Programming paradigms (structured, object-oriented, and functional programming), Design Principles (SRP, OCP, LSP, ISP, DIP), Component Principles (Cohesion & Coupling), and Clean Architecture principles with case study have been discussed in detail.
Chess and the Art of Enterprise Architecture – Gerben WierdaIn this book, (hidden) assumptions behind the existing approaches to enterprise architecture are challenged, and a more realistic perspective that helps us battle the complexities and unpredictabilities of today’s Business-IT landscapes is described.
Technology Strategy Patterns. Architecture as Strategy – Eben HewittThis book covers:
Architecture and strategy: Adopt a strategic architectural mindset to make a meaningful material impact
Creating your strategy: Define the components of your technology strategy using proven patterns
Communicating the strategy: Convey your technology strategy in a compelling way to a variety of audiences
Bringing it all together: Employ patterns individually or in clusters for specific problems; use the complete framework for a comprehensive strategy
Continous Architecture in Practice – Murat Erder, Pierre Pureur, Eoin Woods (2021)This book covers Architectural Practices for New Challenges, Environments, and Stakeholder Expectations. It focuses on data architecture, emerging technologies impact on software architecture, architectural concern areas such as security, scalability, performance, and resiliency.
Leading Lean Software Development – by Mary Poppendieck
 Tom Poppendieck (2009)
Building on top of their previous book, Lean Software Development and Implementing Lean Software Development, this book goes beyond generic implementation guidelines, demonstrating exactly how to make lean work in real projects, environments, and companies.
Software Architecture: The Hard Parts – by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani (2021)This book provides techniques to help you discover and weigh the trade-offs as you confront the issues you face as an architect:
– Analyze trade-offs and effectively document your decisions
– Make better decisions regarding service granularity
– Understand the complexities of breaking apart monolithic applications
– Manage and decouple contracts between services
– Handle data in a highly distributed architecture
– Learn patterns to manage workflow and transactions when breaking apart applications
Learning Domain-Driven Design – by Vlad Khononov (2021)This book covers domain-driven design with a modern mindset covering:
– Analyze a company’s business domain to learn how the system you’re building fits its competitive strategy
– Use DDD’s strategic and tactical tools to architect effective software solutions that address business needs
– Build a shared understanding of the business domains you encounter
– Decompose a system into bounded contexts
– Coordinate the work of multiple teams
– Gradually introduce DDD to brownfield projects
Just Enough Software Architecture – by George FairbanksIt is focused on teaching risk-driven software architecture with practical aspects of building and democratizing software architecture.


RELATED ARTICLES

Leave a Comment