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.