17 Free Software Architecture Books

The following is a list of 17 free software architecture books which I hope you find useful.

If you know of any free books on software architecture that you would like added to this list, please let me know in the comments.

1. Agile Planning: From Ideas to Story Cards

Launch School

In this introduction to Agile Software development, learn the basic techniques that engineers and designers use to take a concept for an application and transform it into a set of requirements that can be built with code. Programmers and software engineers will learn about the context of their craft and about the benefits of Agile planning.

2. Architectural Styles and the Design of Network-based Software Architectures

Roy Thomas Fielding

This dissertation explores a junction on the frontiers of two research disciplines in computer science: software and networking.

3. Data Oriented Design

Richard Fabian

This book is a practical guide for serious game developers. It is for game developers working to create triple A titles across multiple platforms, for independent developers trying to get the most out of their chosen target hardware, in fact for anyone who develops cutting edge software in restrictive hardware. It is a book about how to write code. It is a book written to educate games developers in a coding paradigm that is future proof, unlike the style of coding we’ve become so accustomed to. It is a book rooted in C++, the language of choice by games developers of the last ten years, and provides practical advice on how to migrate without throwing away years of accumulated code and experience. This book is about how you can transform your development.

4. Domain Driven Design Quickly (requires InfoQ account)


Domain Driven Design Quickly is a short, quick-readable summary and introduction to the fundamentals of DDD. A special interview with Eric Evans on the state of Domain Driven Design is also included.

5. DSL Engineering: Designing, Implementing and Using Domain-Specific Languages (PDF)

Markus Voelter

This book covers DSL Design, Implementation and Use of DSL in detail. It consists of four parts. Part 1 introduces DSLs in general and discusses their advantages and drawbacks. It also defines important terms and concepts and introduces the case studies used in the most of the remainder of the book. Part 2 discusses the design of DSLs – independent of implementation techniques. It discusses seven design dimensions, explains a number of reusable language paradigms and points out a number of process-related issues. Part 3 provides details about the implementation of DSLs with lots of code. It uses three state-of-the-art but quite different language workbenches: Jet-Brains MPS, Eclipse Xtext and TU Delft’s Spoofax. Part 4 discusses the use of DSLs for requirements, architecture, implementation and product line engineering, as well as their roles as a developer utility and for implementing business logic.

6. Essential Skills for Agile Development (PDF)

Tong Ka Iok

This publication reflects the many years of experiences of Tong Ka Iok in software development and training. It is an effective way to learn to apply the skills in Agile Development and is an indispensable book for software development in general.

7. How to Design Programs: An Introduction to Computing and Programming

Matthias Felleisen , Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi

This book is the first book on programming as the core subject of a liberal arts education. Its main focus is the design process that leads from problem statements to well-organized solutions; it deemphasizes the study of programming language details, algorithmic minutiae, and specific application domains.

8. Kanban and Scrum – Making the Most of Both (requires InfoQ account)

Henrik Kniberg and Mattias Skarin

The purpose of this book is to clear up the fog, so you can figure out how Kanban and Scrum might be useful in your environment. Part I illustrates the similarities and differences between Kanban and Scrum, comparing for understanding, not for judgement. There is no such thing as a good or bad tool – just good or bad decisions about when and how to use which tool. Part II is a case study illustrating how a Scrum-based development organization implemented Kanban in their operations and support teams.

9. Kanban for Skeptics

Nick Oostvogels

By listing the 5 most common arguments against Kanban and my response to them, I hope to help people in their Kanban journey and build great organizations that create amazing products.

10. OAuth – The BIG Picture (requires info)

Greg Brail and Sam Ramji

This e-book will help you understand how OAuth fits with APIs and the emerging world of open platforms, its advantages and challenges, what role it can play for your products, and without having to know the fine details of the protocol.

11. Object-Oriented Reengineering Patterns (PDF)

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Object-Oriented Reengineering Patterns collects and distills successful techniques in planning a reengineering project, reverse-engineering, problem detection, migration strategies and software redesign.

12. Practicing Domain-Driven Design

Scott Millett

The philosophy of Domain-Driven Design explained in a down to earth practical manner for experienced developers. A focus on the principles and practices as well as the coding patterns.

13. Seamless Object-Oriented Software Architecture (PDF)

Kim Waldén and Jean-Marc Nerson

The book is intended for software professionals as well as for students at the graduate and undergraduate levels. We believe it can be read by anyone who has acquired a general understanding of the problems of software engineering, and who has some inclination for abstract thinking.

14. Software Engineering for Internet Applications

Eve Andersson, Philip Greenspun and Andrew Grumet

This is the textbook for the MIT course “Software Engineering for Internet Applications”. The course is intended for juniors and seniors in computer science. We assume that they know how to write a computer program and debug it. We do not assume knowledge of any particular programming languages, standards, or protocols.

15. Web API Design (requires info)

Web API Design will help you make design choices from the application developer’s point of view so that the benefits of proven design principles and best practices will make your initiative a success.

16. Working with Web APIs

Launch School

This book covers the basics of how web APIs work, how to interact with them, and what to think about when building your own. After reading this book and finishing its associated course, you will be able to work with web APIs in your own projects and even build your own APIs.

17. Your API Is Bad (And You Should Feel Bad)

Paddy Foran

Your API Is Bad (And You Should Feel Bad) is a collection of API practices that are poorly considered and yet quite common. It’s not a guide for how to write a good API, because that changes for every API. Instead, it’s a bunch of suggestions for how to avoid writing a bad API.

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Leave a Reply