University of Minnesota
Master of Science in Software Engineering

You are here

SENG 5861: Introduction to Software Architecture

Software architecture is primarily concerned with partitioning large systems into smaller ones that can be created separately, that individually have business value, and that can be straightforwardly integrated with one another and with existing systems, and that can scale independently of each other. The goal of this course is to master skills that support this partitioning. At the end of the course, a proficient student should be able to:
  • Use different viewpoints to organize partitioning to support deployment, maintenance and functional extension.
  • Document system commonalities and variabilities and utilize this document to create interfaces that support expected system evolution
  • Apply architectural patterns to quickly generate architectural alternatives and choose between them.
We will discuss the purpose and role of architecture in the overall process of software development, both as a process (the process of architecting a system) and an artifact (the architecture of a system). We will also examine and debate the similarities and differences between "design" and "architecture". We will examine notations and tools designed to assist software architects and processes that can lead to good architectural outcomes, and architectural refactoring. Throughout the course, we will read and critique architectures, and be able to clearly present and advocate architectural ideas
Course ID: 
SENG 5861
Complete Name of the Course: 
Introduction to Software Architecture
Intended Semester: