The SE 2004 of the ACM/IEEE computing curriculum project recommends software design and architecture as one of its ten essential areas of study. Software Architecture and Design Illuminated is the ideal text for undergraduate and graduate students delving into this critical area of the software development process. This text offers a coherent and integrated approach to the discipline of software architectural design and covers a complete set of important methodologies, architectural styles, design guidelines, and design tools. Java is used throughout the book to explain design principles and present case studies. Review questions, exercises, and design assignments round out most chapters and allow students to test themselves on key material.