Course

Software Design and Architecture

University of Alberta

In the Software Design and Architecture Specialization, you will learn how to apply design principles, patterns, and architectures to create reusable and flexible software applications and systems. This specialization covers object-oriented design, design patterns, software architecture, and service-oriented architecture.

Throughout the program, you will be challenged with practical examples and opportunities to apply your knowledge, enabling you to develop employable skills and relevant expertise in the software industry. The courses emphasize expressing and documenting the design and architecture of a software system using visual notations such as Unified Modeling Language (UML).

  • Learn object-oriented design principles and guidelines, and apply them to create modular, flexible, and reusable software.
  • Explore design patterns and how to incorporate them to address user interface design issues.
  • Study software architecture, including the representation of architectures in UML and other visual tools.
  • Understand service-oriented architecture and its application in web-based systems, including Web Services and Representational State Transfer (REST) architecture.

Certificate Available ✔

Get Started / More Info
Software Design and Architecture
Course Modules

Acquire essential skills in object-oriented design, design patterns, software architecture, and service-oriented architecture. Gain practical experience and insight into creating quality software applications.

Object-Oriented Design

This course takes Java beginners to the next level by covering object-oriented analysis and design. You will learn how to create modular, flexible, and reusable software, and communicate these designs using Unified Modeling Language (UML).

  • Apply the Class Responsibility Collaborator (CRC) technique to analyze and design the object-oriented model for a problem.
  • Explain and apply different types of inheritance and modeling principles.
  • Translate between UML class diagrams and equivalent Java code.

Design Patterns

This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. You will gain a foundation for more complex software applications and identify problematic software designs by referencing a catalog of code smells.

  • Demonstrate how to use design patterns to address user interface design issues.
  • Apply design principles and critique code by identifying and refactoring anti-patterns.

Software Architecture

The course covers the representation of software architectures, common architectures, evaluation, and improvement. You will study different architectural styles, including UML representation, and the behavior of a system using UML activity diagrams.

  • Compare and contrast different types of architectural styles used in the design of applications and systems.
  • Create UML diagrams to express the architectural structure of a system.

Service-Oriented Architecture

This module covers Service-Oriented Architecture (SOA), including web service architectures and the basics of Web Services (WS*) and Representational State Transfer (REST) architecture. You will learn to create a system using REST interfaces and apply microservice architecture.

  • Describe SOA and REST architecture.
  • Identify REST design principles and create a system using REST interfaces.
More Software Development Courses

Create a Macro Processor with PERL

Coursera Project Network

Create a Macro Processor with PERL is a 1-hour guided project where you'll build a macro processor and create your own macro markup language. Learn PERL file operations...

Introduction to Self-Driving Cars

University of Toronto

Introduction to Self-Driving Cars is an advanced course covering hardware, software, safety assessment, and vehicle modeling for self-driving cars.

Select Topics in Python: Packaging

Codio

Learn to manage packages and virtual environments with Python's built-in tools, third-party tools, and package Python scripts and applications for a wider audience....

نشر تطبيق ويب باستخدام Docker و Kubernetes

Coursera Project Network

This course explores the implementation of Docker and Kubernetes to deploy web applications, enabling continuous operation in any environment. Gain proficiency in...