Architectural design establishes the framework for software development by examining requirements and designing a model that specifies system components, their inputs/outputs/functions, and interactions. It can be represented using structural, dynamic, process, functional, or framework models. The outputs are an architectural design document and various project plans. Architectural design decisions impact non-functional requirements and common decisions include architectural style and system decomposition.