This document provides an overview of software architecture. It discusses the role of the software architect and key activities like requirements engineering, architectural description and evaluation. It also covers architectural patterns, patterns for enterprise applications, component-based design, design by contract, and service-oriented architectures. The document is intended as a course book on software architecture.