The fourth step to balance system architecture quality and speed of delivery is to use architectural patterns that provide proven and reusable solutions to common problems. These patterns capture the best practices and lessons learned from previous projects and experiences, allowing you to avoid the need to reinvent the wheel and leverage existing knowledge and expertise in the system architecture community. Examples of common architectural patterns include layered, client-server, peer-to-peer, broker, pipe and filter, and model-view-controller. In the layered pattern, the system is organized into hierarchical and distinct layers that provide different services and functions. The client-server pattern divides the system into clients that request services and servers that provide services. The peer-to-peer pattern distributes the system among peers that can act as both clients and servers. The broker pattern introduces a component that mediates communication and coordination between clients and servers. The pipe and filter pattern decomposes the system into filters that process data, and pipes that transmit data between filters. Finally, in the model-view-controller pattern, the system is separated into model representing data and logic, view displaying the data, and controller handling user input and interaction.