ABSTRACT

As seen in Chapter 3, soƒware systems need to be carefully architected and evaluated from various perspectives to properly address multiple concerns that a¨ect the quality of the end product. Modeling systems from each view requires addressing design problems of di¨erent natures, such as problems that deal with the logical system structure or problems that deal with dynamic, concurrency system issues. In all cases, it is essential to identify the necessary components and interfaces (at the right granularity) and the responsibility of each component and to model behavioral interactions among them before moving on to detailed design. Of particular interest is the logical architecture of soƒware systems, since it includes system decomposition into logical components that are re¥ned throughout the design phase and ultimately implemented during construction. From this perspective, it is important to use past experience with logical decompositions together with their interfaces when designing today’s soƒware systems. To this end, the concepts of architectural styles and architectural patterns have emerged as mainstream approach for achieving (mostly logical design) reuse at the architectural level.  ese concepts are fundamental to the ešcient creation of soƒware architectures by providing an overall strategy for designing families of soƒware systems.  ey provide generic, reusable architectural solutions, documented in a way that can be easily understood and applied to new problems requiring similar architectural features. Decisions based on architectural styles and patterns bene¥t from years of documented experience that highlights the solution approach to given problems, the bene¥ts of these approaches, and the consequences of designing the system with a particular style.