Carnegie Mellon University

Software Architecture and Design


Anthony Lattanze

Number of Lectures


Course Description

This course is designed for Software Engineering students. It focuses on the aspect of architecture and software design. Students will learn about design patterns, frameworks, and architectures, as well as the role of architecture in the software development process.

This course covers the following topics:
Architecture documentation, interfaces and middleware, design of distributed systems, component based design, architecture attributes: performance, safety, security, reusability, reliability, etc.; measuring qualities and complexity of software, design patterns, frameworks, view type and styles, module view type, components and connector viewtype; Styles and allocation of software architecture; Interfaces and GUI; Reverse engineering techniques, object-oriented design, the OO model, design process and patterns, review and inspections.



Recommended Textbooks

1. “Architecting Software Intensive Systems: A Practitioners Guide," Lattanze (Lat08)
2. “Software Architectures in Practice,” Bass, Clements, Kazman (BCK03)