Carnegie Mellon University

Software Architecture

Instructor CEU Units # of Lectures Hours Per Week Tuition
Anthony Lattanze
6.4 16 10-15 $2,800

Course Objectives

This course aims to teach you how to design, analyze, document, and evaluate systems at an architectural level of abstraction.  By the end of the course you will be able to:

  • Understand the technical, organizational, and business role of software architecture
  • Understand the influence of architectural drivers on software structures
  • Identify key architectural structures (styles, patterns, tactics, etc.)
  • Understand the principles of good architectural documentation and presentation
  • Generate architectural alternatives in a given context and choose among them
  • Understand the impact that open source and commercial software has on architectural designs
  • See the importance of a deliberately defined design process
  • Evaluate the fitness of an architectural design in meeting a set of system requirements and balancing quality tradeoffs

Prerequisites

Attendees should have some industrial design and/or development experience with at least one significant software intensive system. It is assumed that attendees are engineers familiar with fundamental software engineering concepts.

Required Textbooks:

  • Architecting Software Intensive Systems: A Practitioner’s Guide, by Anthony J. Lattanze, Taylor and Francis/Auerbach 2008 [ASIS08].
  • Various readings will be provided to support each lecture.

Course Logistics:

There are 16 lectures in the entire course.  Lectures are approximately 80 minutes in duration.  Each lecture has a set of readings and questions based upon the reading material.   These may be done before or after the associated lecture.   In addition to the weekly readings and questions, there is a  team project that is to be completed in 3 phases.   The project is designed to provide an opportunity for participants to think through the problem from inception to software architecture proposal and documentation using the skills, methodology, and knowledge learned in the course.   Attendees will get feedback on their work from instructors allowing them to improve their designs and their proficiency with course techniques.  A project description will be provided that outlines what must be produced by the teams and when.

Topics

Lecture 1:      Architecture Defined
Lecture 2:      Architectural Drivers
Lecture 3:      Introduction to Architectural Structures
Lecture 4:      Structures Case Study 1
Lecture 5:      Structures Case Study 2
Lecture 6:      Structures Case Study 3
Lecture 7:      Structures Case Study 4
Lecture 8:      Structures Case Study 5
Lecture 9:      Guidance for the Architect
Lecture 10:    Architecture Documentation
Lecture 11:    Architecture Evaluation
Lecture 12:    Architecture Centric Design Method (ACDM)
Lecture 13:    Design By Selection
Lecture 14:    Strategic Reuse
Lecture 15:    Global Software Development
Lecture 16:    Architecture and Marketing
Optional:        Ideas for Adoption and Transition