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.
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.
Roy Thomas Fielding
This dissertation explores a junction on the frontiers of two research disciplines in computer science: software and networking.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.