Software architecture captures the structure of a system at a high level of abstraction, illuminating top-level design decisions. Architectural patterns provide well-established solutions to common problems, expressing fundamental structural schemas at a larger scale than design patterns. Common architectural patterns include pipes and filters, blackboard, layered/tiered, and model-view-controller (MVC). MVC isolates business logic from user interface concerns, permitting independent development and maintenance of each component.