You won’t just learn the ins and outs of software architecture from this list, you’re going to master it; if you can afford to invest the required amount of time, and real-life application to what you’ve learned.
Software architecture is actually a fairly broad term, and when broken down into a smaller list – seems to make a little bit more sense. We can think of software architecture as the base of both the system, and the project.
Software architecture serves as the blueprint for both the system and the project developing it, defining the work assignments that must be carried out by design and implementation teams. The architecture is the primary carrier of system qualities such as performance, modifiability, and security, none of which can be achieved without a unifying architectural vision. [sei]
I’ve gathered up an incredibly huge list of free online books that you can download and view right away, and begin learning software architecture from within all of its aspects. I do believe that you should introduce yourself to the software development process, because then you’ll know for which of the stages each book can be used.
I’m sure you’ll find this list of books handy at some point, but until then – it would mean the world to me if you could pass on the message to your friends and other people you network with, definitely goes a long way and helps to keep this party going!
Kanban for Skeptics
In this book, Nick Oostvogels gives us a run-down of what he thinks is the five most encountered arguments towards the Kanban method, and whether it’s worth it to take a second look and reconsider implementing this strategy in your development workflow. Kanban for Skeptics is all about doing those timely deliveries on project work, and Nick wants to show you how it all comes together.
Your API is Bad
Paddy Foran takes a stance on knowing it all about the architecture of a good API (Your API Is Bad), and in his book wants to give you a couple of real-life examples of how an API should look like. It’s not a guide on how to write a good API, it’s merely an preview of what good API’s look like.
Web API Design
It’s a very short, and sweet at the same time, eBook for how to write a well designed web API by following a set of principles and best practices. The books is basically a list of examples that you can use and integrate within your own API, they’re REST based due to the flexibility; think of this as an API success book.
Software Engineering for Internet Applications
As you work through this book of Software Engineering for Internet Applications, you’re going to build an online learning community. Along the way, you’ll pick up all the important principles, skills, and technologies for building desktop Web, mobile Web, and voice applications of all types.
I’m very pleased with the approach that this book is taking, and will most likely go and read it myself whenever I get the chance. It’s heavily oriented on the community aspect, from a technical point of view.
Open-source communities have enabled a lot of people to learn and explore the world of computer science, in a way that would never have been possible to achieve without the freedom that the internet offers.
The central theme of this course book is balancing the concerns and requirements of stakeholders, combining these into an architecture proposal by employing known tactics and patterns, producing a description of the architecture that can be communicated and analysed, and evaluating the resulting architecture’s qualities.
Seamless Object-Oriented Software Architecture
Seamless Object-Oriented Software Architecture 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.
It’s a very old book (1994), yet still manages to hold incredible value for learning more about software architecture.
Scrum and XP from the Trenches
Scrum and XP from the Trenches is the perfect book that shows a case study of how a company was able to implement both Scrum, and XP strategies within their business to accelerate both growth, and reputation.
Plenty of stuff about agile development in this book.
Programming Reliable Systems
You’ll be taking a look at Erlang, and many different programming techniques that are being used by large Telecom corporations all across the globe. It’s a thesis work, but contains plenty of case studies, application examples and models previews to be of good use.
Principles, Patterns and Practices of Domain-Driven Design
Practices of Domain-Driven Design by Scott Millett gives us a review of Domain-Driven Design and how it might help to shape our teams and development process in a more efficient way.
Patterns of Software
Richard is a very passionate writer, and his words are incredibly engaging. In his book Patterns of Software, you will learn quite a few things about object-oriented programming, software patterns and some info on programming languages, and their common pitfalls.
Microsoft Application Architecture Guide
The Microsoft Application Architecture Guide is intended to help developers and solution architects design and build effective, high quality applications using the Microsoft platform and the .NET Framework more quickly and with less risk; it provides guidance for using architecture principles, design principles, and patterns that are tried and trusted.
Object-Oriented Reengineering Patterns
Book that’s written based on plenty of experience in the field of software engineering, problem detection, migration and a lot more. Object-Oriented Reengineering Patterns is an full of detailed theories and illustrations, which may come in handy when developing a new strategy.
OAuth – The BIG Picture
OAuth – The BIG Picture is the second time we are seeing in Apigee book in this list. This one’s focused on OAuth, how it works, how to integrate it for mobile; security precautions and techniques for implementation. Great book to have, considering it’s free.
Software Measurement Guidebook
Nice, we’ve even got some NASA stuff in this list! I think there is another one coming up after this. This Software Measurement Guidebook presents information on the purpose and importance of measurement.
It discusses the specific procedures and activities of a measurement program and the roles of the people involved. The guidebook also clarifies the role that measurement can and must play in the goal of continual, sustained improvement for all software production and maintenance efforts.
Managers Handbook for Software Development
Managers Handbook for Software Development, the focus is being put on the management aspects of software development. You’ll find plenty of examples of testing, reviews, monitoring options, management tools and everything else that a manager might need. Great stuff!
(this is the 2nd NASA book, and the last one in this list)
Naked Objects: It looks at the strategic approach of designing naked object systems, and what are the requirements for getting a project up and running. It’s quite technical, perhaps even one sided; but give it a go, more knowledge can’t hurt.
Methods and Techniques for the Design and Implementation of Domain-Specific Languages
Methods and Techniques for the Design and Implementation of Domain-Specific Languages is an lovely book, talks about software development and the ways of making the development process more or less painless, by focusing upon different approaches of DSL structures and features. There is quite a bit of content on model transformation, and mobile stuff is also of plentiful volume. Includes theories, code samples, and diagrams for best learning experience.
Kanban and Scrum: Making the Most of Both
Kanban and Scrum: Making the Most of BothThis is an extended version of our previous books on the same topic, perhaps you’re looking for alternatives or want to see more examples? There is a lot of comparison and examples of both methods and so you can make a better decision, on which to work with. (or both?)
How to Write Unmaintainable Code
How to Write Unmaintainable Codeit is an interests of creating employment opportunities in the Java programming field, I am passing on these tips from the masters on how to write code that is so difficult to maintain, that the people who come after you will take years to make even the simplest changes.
How to Design Programs
How to Design Programs – In this book you will be looking at the aspects of programming, from a perspective of functional and proper design. It’s more than just writing code, it’s drawing picture perfect art!
Guide to the Software Engineering Body of Knowledge
Guide to the Software Engineering Body of Knowledge looks at software development, the architecture and the process of it. Includes several techniques to help you better understand the concept of software engineering.
Essential Skills for Agile Development
You’ve heard the word Agile before, probably more times that you may want to account for. This book is your guide to agile development, and all that comes with it. Really great stuff, even considering how old it is.
Designing, Implementing and Using Domain-Specific Languages
Designing, Implementing and Using Domain-Specific Languages There is plenty of contents in this book to keep you both busy and educated about the DSL concept. There are implementation techniques discussed, as well as some stuff on software engineering, and design related contents. I’d definitely get this to educate yourself on DSL.
Don’t Just Roll the Dice
We’ve looked at a lot of technical aspects of software architecture in this list, but what about things like pricing? Who is taking care of the prices of the software that is being built, and what is the best way to go about it? The engineers have to eat, right? Grab this book for some education on good pricing tactics.
Domain Driven Design Quickly
Domain Driven Design Quickly is a vision and approach for dealing with highly complex domains that is based on making the domain itself the main focus of the project, and maintaining a software model that reflects a deep understanding of the domain.
Data-Oriented Design is clear us that design is important, as is the variety of it and the deep understanding of how these different design methods affect our over architecture. As the book says, data is all we have and so we need to learn how to make friends with it.
Best Kept Secrets of Peer Code Review
Best Kept Secrets of Peer Code Review We can write plenty of code, thousands of lines of code; but, someone will have to review it. It’s just not viable to submit a code to a production server, without first making sure that it’s actually legit, bug free and optimized for best performance. Grab this book to learn some lessons taken away, after thousands of code review tests have been concluded.
Architectural Styles and the Design of Network-based Software Architectures
Architectural Styles and the Design of Network-based Software Architectures: You will want this book to learn about the correlation of architecture and engineer, as well as what good architecture looks like and how you can achieve the best possible end result. Quite a bit of content on REST and HTTP, but overall a good book to have.
Free Books for Learning Software Architecture
This was not one of the most easy lists to put together, I have to admit. I’ll appreciate any support for it, and I deeply hope that it will prove to be of good use to you. I myself, I think I’ve found a couple of good books in this list to take away, and begin studying at some point in the near future.
As always, thanks to these wonderful authors who have made these books available to us, at no cost at all. Free education is where its at, enjoy and have fun.
In case you like to read a lot, here is a list of free books for learning theoretical computer science, also has some great stuff in there that will surely help to make all the pieces come together.