This is a list of reading for someone who wants to study software design.
There are many resources available, but they overlap a lot. With this list I try to provide good coverage of the subject and little redundancy. If you have the opportunity, I think it’s worth to read everything on this list (or the alternatives).
If you only read a single book, it better be Code Complete. Do it a couple of times.
I will update the page over time as I remember other relevant resources or find better ones.
Structured Analysis and System Specification by Tom DeMarco explains data flow analysis really well. An alternative is Modern Structured Analysis, Yourdon.
Writing Effective Use Cases by Alistair Cockburn - a great guide on discovering use cases.
- Code Complete by McConnel - has a couple of valuable sections on design. It’s also the top one book for any software developer overall.
- The Practical Guide to Structured Systems Design by Meilir Page-Jones - covers design fundamentals in depth. Or try Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design.
- Documenting Software Architectures - explains solution-level design patterns and documentation approach.
Patterns of Enterprise Application Architecture, Fowler - presents solutions to design problems typical for enterprise software.
Agile Principles, Patterns and Practices, Martin - covers object-oriented design principles, such as SOLID.
Head First Design Patterns nicely explains the principles behind object-oriented design patterns. The alternative is Design Patterns Elements of Reusable Object-Oriented Software. It is the classic, it is more comprehensive, but also harder to read.
Domain-Driven Design by Eric Evans - the classic on domain driven design. You must read it to the end though because the most important stuff is in the second half of the book. I also like Implementing Domain-Driven Design, Vaughn Vernon. It has better ordering of material and covers some new concepts.
Feel free to leave your questions, comments or suggestions below. I will get back. Subscribe for more.