Horizontal interfaces are common interfaces may contain generic operations for data transfer and access. They can provide mechanisms for reuse, interoperability and management of applications. Vertical interfaces are customized with respect to domain-specific requirements and vertical forces. Providing functionality to end-users and optimizing performance are the key motivations behind vertical interfaces. Matadata is self-descriptive information that describes services and data available within a system.
Metadata enables system flexibility, with dynamic capabilities for managing change.
Together, horizontal and vertical interfaces, along with metadata, comprise system-level software architecture. Within the system level, patterns are categorized into either structural or behavioral patterns. Structural patterns are those that possess a specific structure or set of related components. Structural design patterns at the system level include Gateways, Repository, Component, and Domain OO Architecture. Behavioral patterns define how a system behaves under various conditions.