The software architecture is a set of software components, subsystems, relationships, interactions, the properties of each of these elements, and the set of guiding principles that together constitute the fundamental properties and constraints of a software system or set of systems. ( ) defines a general set of element types and their interactions. The examples include Pipes and Filters, Model-View-Controller, and Reflection. A ( ) in software architecture is a representation used to understand or document one or more aspects of a problem or solution. Architecture is usually used in conjunction with many adjunct terms. The ( )defines the key strategies, organization, goals and related processes of the enterprise. At the enterprise level, the ( ) may be more of a set of guidelines on how the various software architectures should be constructed consistently across the enterprise. The ( ), which describes the high-level set of elements involved in application from a particular domain along with their interactions, is often used to focus on subsystem definition rather than application process level definition.