by Jörg Jooss
6. March 2005 09:20
Every once in a while, colleagues and devs I meet ask me about my favorite books on various topics. One of these topics is software architecture. Good software architecture in turn is based on sound design principles. So here's a list of my favorite books that shed light on both of these topics.

Robert C. Martin: Agile Software Development
Have you ever heard of the Single-Responsibility Principle? Do you know the Open-Closed Principle? What about the Liskov Substitution Principle? No idea? Read this book. Not only does it explain all of these and a lot more, which I consider a must know for any serious software developer, this book will also introduce you to some sound agile practices without getting lost in XP religion.

Martin Fowler: Patterns of Enterprise Application Architecture
This book is probably going to be the seminal work on patterns for enterprise application architecture, pretty much in the same way the Gang of Four book became the be-all, end-all of books on basic software design patterns. It also includes code samples for both Java and C# (i.e. J2EE and .NET), which is still pretty unique as far as I can tell.

Steve McConnell: Code Complete 2nd Edition
This book covers a lot of ground. It's not only about design and architecture, but about the art of Software Construction in general. Even if you don't care about Steve's analysis of code layout, naming conventions and such, the introductory chapters on design and architecture are awesome.

Rod Johnson, Jürgen Höller: J2EE Development without EJB
This book complements Rod's earlier book J2EE Design and Development by explaining the fallacies of EJB and how the core principles of the Spring framework and other lightweight alternatives to EJB try to remedy them. It's not a Spring programming manual, but rather a compilation of post-EJB 2.1 techniques.
PS: The fact that these links go to Amazon doesn't mean I'm getting paid for it 