Software Design: From Programming to Architecture by Eric J. Braude (Boston University)
All Computer Scientists and Software Engineers need to understand software design, but until now there hasn't been one, complete, up-to-date guide to its theory and practice.
Eric Braude's Software Design: From Programming to Architecture begins at the code level with programming issues such as robustness and flexibility in implementation. Increasing in abstraction and scope, the book then moves to mid-level issues, emphasizing a thorough understanding of standard design patterns and components. Finally, the book ends with high-level issues such as architectures, frameworks, and object-oriented analysis and design. In addition, the text contains a prologue on software process, making it versatile enough to use in a software engineering course.