This document discusses several common software architectural patterns, including layered, client-server, and pipe-filter patterns. It defines an architectural pattern as a general and reusable solution to a recurring problem in software architecture. The layered pattern structures programs into groups of subtasks at different levels of abstraction, with each layer providing services to the next. Client-server pattern consists of a server providing services to multiple clients. Pipe-filter pattern involves data processing in a series of steps where each step modifies the output of the previous.