Connections in an architecture are abstractions for how components interact in a system, e.g., procedure calls, pipes, and remote procedure calls. An architecture has various constraints and rationales associated with it, including the constraints on component selection and the rationale for choosing a specific component in a given situation. Currently, there is a proliferation of ongoing activities in the science of software architecture. These activities are considered science because the main focus is on the study, classification, and experimental evaluation of existing architectures. These styles determine the macro architecture for a whole system.
Many systems have hybrid styles, especially when large components are examined in more detail.
The OO patterns consist of a cluster of classes that interact to perform a certain common generic function. These OO patterns are micro architectures that facilitate the synthesis and understanding of macro architectures. There may be more than two levels of architecture but the important distinction is that a micro architecture does not form a useful, stand-alone system, whereas a macro architecture can. Researchers are currently identifying and cataloging these OO patterns to help promote design reuse. Because architectural decisions are made early and therefore have significant impact later in the software lifecycle, analyzing the quality attributes of architectures is also important.