This book describes the concepts of software architecture and design patterns. It helps the readers to develop complex software systems using a methodological approach. The book covers system architecture perspectives, software architectural patterns, pattern analysis, and distributions. It also provides insight into the layering structure and meta-data mapping of software.