When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 4 modules in this course
The way that software components — subroutines, classes, functions, etc. — are arranged, and the interactions between them, is called architecture. In this course you will study the ways these architectures are represented, both in UML and other visual tools. We will introduce the most common architectures, their qualities, and tradeoffs. We will talk about how architectures are evaluated, what makes a good architecture, and an architecture can be improved. We'll also talk about how the architecture touches on the process of software development.
In the Capstone Project you will document a Java-based Android application with UML diagrams and analyze evaluate the application’s architecture using the Architecture Tradeoff Analysis Method (ATAM).
After completing this course, you will be able to:
• Compare and contrast the components, connections, protocols, topologies, constraints, tradeoffs, and variations of different types of architectural styles used in the design of applications and systems (e.g., main program and subroutine, object-oriented, interpreters, pipes and filters, database centric, event-based).
• Describe the properties of layered and n-tier architectures.
• Create UML ipackage, component, and deployment diagrams to express the architectural structure of a system.
• Explain the behaviour of a system using UML activity diagrams.
• Document a multi-application system with a layered architecture.
In this module you will learn about software architecture. You will learn why architecture is important, what perspectives need to be considered, and how to communicate architecture using UML.
What's included
6 videos8 readings1 assignment2 peer reviews
Show info about module content
6 videos•Total 42 minutes
3.1.1 – Architecture Overview and Process•17 minutes
3.1.2 – Kruchten's 4 + 1 Model View•6 minutes
3.1.3 – UML Component Diagram•4 minutes
3.1.4 – UML Package Diagram•6 minutes
3.1.5 – UML Deployment Diagram•5 minutes
3.1.6 – UML Activity Diagram•5 minutes
8 readings•Total 80 minutes
Meet Your Presenter – Sam Jeffery•10 minutes
Meet Your Facilitators•10 minutes
Software Architecture – Course Notes•10 minutes
Software Architecture Glossary•10 minutes
Discussion: Introduce Yourself•10 minutes
Peer Review Request Forum•10 minutes
Capstone Assignment 3.1 - Draw a Component Diagram (Solution)•10 minutes
Capstone Assignment 3.2 - Draw a Deployment Diagram (Solution)•10 minutes
1 assignment•Total 30 minutes
Module 1 Review•30 minutes
2 peer reviews•Total 120 minutes
Capstone Assignment 3.1 – Draw a Component Diagram•60 minutes
Capstone Assignment 3.2 – Draw a Deployment Diagram•60 minutes
Architectural Styles
Module 2•2 hours to complete
Module details
Software comes in all shapes and sizes. The architecture you choose will affect every part of your software, from its security and efficiency, to its modularity and maintainability. In this module we will examine the different architectures that you have to choose from to shape your software.
What's included
9 videos3 readings1 assignment
Show info about module content
9 videos•Total 64 minutes
3.2.1 – Abstract Data Types and Object-Oriented•6 minutes
3.2.2 – Main Program and Subroutine•5 minutes
3.2.3 – Databases•9 minutes
3.2.4 – Layered Systems•8 minutes
3.2.5 – Client Server n-Tier•9 minutes
3.2.6 – Interpreters•5 minutes
3.2.7 – Pipes and Filters•5 minutes
3.2.8 – Event Based•10 minutes
3.2.9 – Process Control•7 minutes
3 readings•Total 30 minutes
State Transition Systems•10 minutes
Publish–Subscribe•10 minutes
Discussions: Architectural Styles•10 minutes
1 assignment•Total 30 minutes
Module 2 Review•30 minutes
Architecture in Practice
Module 3•1 hour to complete
Module details
The architecture is the most fundamental aspect of software. You will learn how development teams describe architectures, plan successful architectures based on quality attributes, and evaluate the resulting architecture. You will also learn how architecture relates to organization structure and even product planning!
What's included
4 videos1 assignment
Show info about module content
4 videos•Total 43 minutes
3.3.1 – Quality Attributes•16 minutes
3.3.2 – Analyzing and Evaluating an Architecture•14 minutes
3.3.3 – Relationship to Organizational Structure•3 minutes
3.3.4 – Product Lines and Product Families•9 minutes
1 assignment•Total 30 minutes
Module 3 Review•30 minutes
Capstone Challenge
Module 4•2 hours to complete
Module details
Now, in the final module of the course, you will evaluate the proposed architecture to extend the functionality of the example Android code base.
What's included
4 readings1 assignment1 peer review
Show info about module content
4 readings•Total 40 minutes
Capstone Assignment 3.3 - Analyze and Evaluate an Architecture (Solution)•10 minutes
Discussion: Last Word – Software Architecture•10 minutes
Acknowledgements•10 minutes
Credits•10 minutes
1 assignment•Total 30 minutes
Final Exam•30 minutes
1 peer review•Total 60 minutes
Capstone Assignment 3.3 – Analyze and Evaluate an Architecture•60 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructor
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
The University of Alberta is considered among the world’s leading public research- and teaching-intensive universities, known for excellence across the humanities, sciences, creative arts, business, engineering and health sciences.
As one of Canada’s top universities, we are investing in purpose-built online post-secondary education—rooted in innovative digital pedagogies, world-class faculty, exceptional design, and a championed student experience.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.5
943 reviews
5 stars
69.31%
4 stars
20%
3 stars
5.60%
2 stars
2.32%
1 star
2.75%
Showing 3 of 943
Z
ZH
5·
Reviewed on Jul 14, 2021
This is a very very excellent course of which I've ever taken & would like to recommend it to my friends to expore.
A
AD
5·
Reviewed on Jan 7, 2021
Absolutly Fantastic Courses!! Well Designed. I got what I was looking for. Using Andoid as a way to pratices is also a very good idea. Thank you very all of you.
Z
ZX
4·
Reviewed on Apr 16, 2018
It's introduction of software architecture, mainly focus on basic concepts, lack of practical examples.
What will I actually learn in this software architecture course?
You'll learn how to understand, document, and evaluate software architecture. It starts with representing a system in UML and from different viewpoints, then builds into common architecture patterns and the tradeoffs behind them. You'll apply that by drawing diagrams for a Java-based Android application and evaluating its design with the Architecture Tradeoff Analysis Method (ATAM).
Do I need a software development background before starting this course?
Some software development experience is helpful before you start, but prior UML expertise isn't essential. The course moves quickly into system structure, architectural styles, and design tradeoffs while teaching you how to represent them with UML. Because the capstone analyzes a Java-based Android application, you'll get more from the course if classes, functions, and components already feel familiar.
Is this course beginner-friendly for software architecture?
It's beginner-friendly for software architecture if you already have some programming or software engineering context. The course explains the core ideas clearly, starting with representation and communication, then moving into styles, quality attributes, and evaluation. If you're completely new to how software systems are built, the intermediate pace may feel fast.
How long does it take to complete this course?
Plan for about 10 hours in total. At roughly 10 hours a week, many learners could finish in about a week, though you may want a little longer if you spend extra time on the diagram assignments or capstone analysis. The course includes lessons, readings, quizzes, and peer-reviewed assignments.
Are there hands-on exercises or projects in this course?
Yes, but the hands-on work is guided rather than build-from-scratch. You'll create UML component and deployment diagrams, and in the capstone you'll analyze a Java-based Android application's architecture using ATAM. That practice helps you apply each idea to a realistic system instead of only reading about architectural styles.
What topics are covered in this course?
You'll spend most of the course on how architectures are described, how common architectural styles differ, and how architecture is evaluated in practice. That includes UML and multiple architectural views, plus styles such as layered and event-based systems that you compare in terms of qualities and tradeoffs. It also connects architecture to real development concerns, including team structure and product planning.
What can I actually do after finishing this course?
After finishing, you should be able to describe a system's architecture in UML, compare likely tradeoffs between design styles, and evaluate an existing architecture in a more structured way. For example, you could document the components and deployment of a multi-application system, then use ATAM to discuss risks, strengths, and quality priorities. That's a solid outcome if you need to review architecture decisions or communicate them more clearly with a team.
Is this course more theoretical or hands-on?
It's more concept-first than project-heavy. You'll get guided practice through diagram assignments and a capstone analysis, but the main value is learning how to think about system design and tradeoffs.
Why would I choose this course over other software architecture courses?
Choose this course if you want software architecture explained through both visual modeling and design evaluation, not just a tour of style names. It starts with UML and architectural views, then connects those ideas to quality attributes and ATAM through guided assignments on a Java-based Android app. If your goal is to communicate architecture clearly and assess design tradeoffs in a structured way, this course is a particularly good fit.