17-655: Architectures for
Software Systems
Description:
Successful design of
complex software systems requires the ability to describe, evaluate, and create
systems at an architectural level of abstraction. This course introduces
architectural design of complex software systems. The course considers
commonly-used software system structures, techniques for designing and
implementing these structures, models and formal notations for characterizing
and reasoning about architectures, tools for generating specific instances of
an architecture, and case studies of actual system architectures. It teaches
the skills and background students need to evaluate the architectures of
existing systems and to design new systems in principled ways using
well-founded architectural paradigms.
After completing this course, students will be able to:
Prerequisite: Experience with at least one
large software system, either through industrial software development
experience or an undergraduate course in software engineering, compilers,
operating systems, or the like.