04-634   Software Architecture and Design

Location: Africa

Units: 12

Semester Offered: Spring

Course description

Software Architecture and Design is a one-semester course, aiming to train our graduate students from software engineers toward becoming software architects who are the technical lead of a software project team. The primary objective of the course is to help students develop skills in designing, developing, and justifying reasonable software architecture for enterprise-scale software-intensive systems, considering both functional and non-functional requirements as well as contextual system environments. Core topics include an overview of software architecture, micro-architectural patterns (so-called design patterns), macro-architectural patterns (i.e., modern patterns), service-oriented architecture, architectural modeling, viewpoints and perspectives, architectural analysis techniques, architectural tactics (QoS), agile architecture, and some advanced topics. Literature survey and study of state-of-the-art technologies, as well as both individual and group project work, are essential ingredients of this class. Research and practical projects build upon one another. Please note that this course is intended for ECE master students with a concentration in Software Engineering and will satisfy the Software Engineering and Design requirement.

Learning objectives

Software Architecture and Design is a one-semester course, aiming to train our graduate students from software engineers toward becoming software architects who are the technical lead of a software project team. The primary objective of the course is to help students develop skills in designing, developing, and justifying reasonable software architecture for enterprise-scale software-intensive systems, considering both functional and non-functional requirements as well as contextual system environments.

Content details

Overview of software architecture, micro-architectural patterns (design patterns) and macro-architectural patterns (modern patterns), service-oriented architecture, architectural modeling, viewpoints and perspectives, architectural analysis techniques, architectural tactics (QoS), agile architecture, and some advanced topics such as Devops, container management, serverless computing, etc.

Prerequisites

Understanding of basic software engineering concepts and effective knowledge of Java programming.

18652 Foundations of Software Engineering Anti-Requisites: 17-655 Architectures for Software Systems.

Faculty

Eric Umuhoza