Carnegie Mellon University

Software Architecture and Design

Instructor

Anthony Lattanze

Number of Lectures

20

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.

Prerequisites

None

Recommended Textbooks

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