Appropriate for special topic courses on Software Architecture or as an inexpensive supplement to software engineering courses. Shaw and Garland examine the useful abstractions and paradigms of system design as well as key notations and tools. They present an introduction to software architecture that illustrates the current state of the discipline and examines ways in which architectural issues can impact software design. Book Features: Constructs an organizational framework for a course that: Teaches how to understand and evaluate the design of existing software systems from an architectural perspective Provides the intellectual building blocks for designing new systems in principled ways using well-understood architectural paradigms Shows how formal notations and models can be used to characterize and reason about a system design Presents concrete examples of actual system architectures that can serve as models for new designs Will allow instructors to add innovative material to existing courses Emphasizes informal descriptions, touching lightly on formal notations and specifications and the tools that support them