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 upper-level undergraduate and graduate students delving into this important 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. The Java language is used throughout the book to explain design principles and present case studies. Review questions, exercises, and design assignments round out each chapter and allow students to test themselves on key material.