Software Design and Architecture Specialization

Started Sep 18

Software Design and Architecture Specialization

Mindful Strategies for Quality Software

Think like an expert architect and create quality software using design patterns and principles.

About This Specialization

In this specialization, you will learn how to apply design principles, patterns, and architectures to create reusable, flexible, and maintainable software applications and systems, as well as the expression and documentation of software systems using a visual notation. Practical examples and opportunities to apply your knowledge will help you develop employable skills and relevant expertise in the software industry.

Created by:

courses
4 courses

Follow the suggested order or choose your own.

projects
Projects

Designed to help you practice and apply the skills you learn.

certificates
Certificates

Highlight your new skills on your resume or LinkedIn.

Projects Overview

Courses
Beginner Specialization.
No prior experience required.
  1. COURSE 1

    Object-Oriented Design

    Current session: Sep 18 — Oct 23.
    Commitment
    Four weeks of study, 5-8 hours/week
    Subtitles
    English

    About the Course

    Welcome to Object-Oriented Design. This is the first course in Software Design and Architecture, a specialization with four courses provided by University of Alberta in partnership with Coursera. Whether you are here for only this course or for the whole specialization, welcome! You are joining thousands of other intrepid learners who love to push the boundaries of their knowledge and better themselves. This course takes Java beginners to the next level by covering object-oriented analysis and design. You will discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines. And you will be able to communicate these designs in a visual notation known as Unified Modelling Language (UML). You will be challenged in the capstone project to apply your knowledge of object-oriented design by evolving and documenting a Java codebase with corresponding UML documentation. After completing this course, a learner will be able to: • Apply the CRC (Class Responsibility Collaborator) technique to analyze and design the object-oriented model for a problem. • Construct an object-oriented model to represent the information structure of a real world problem. • Explain object-oriented modeling constructs and their purpose (e.g., abstraction, encapsulation, decomposition, generalization). • Explain the difference between association, aggregation, and composition dependencies. • Distinguish different types of inheritance • Express object-oriented models as UML (Unified Modeling Language) class diagrams. • Translate UML class diagrams to equivalent Java code. • Translate Java code to UML class diagrams. • Apply design guidelines for modularity, separation of concerns, information hiding, and conceptual integrity to create a flexible, reusable, maintainable design. • Explain the tradeoff between cohesion and coupling. • Apply inheritance appropriately.
  2. COURSE 2

    Design Patterns

    Current session: Sep 18 — Oct 23.
    Commitment
    Four weeks of study, 5 – 8 hours/week
    Subtitles
    English

    About the Course

    Design problems in applications can be resolved through design patterns commonly applied by experts. This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, learners will gain a foundation for more complex software applications. Finally, learners will identify problematic software designs by referencing a catalog of code smells. Learners will be challenged in the capstone project to critique an existing Java application for code smells. They will redesign the application to combine design patterns such as within the Model-View-Controller (MVC) design. After completing this course, a learner will be able to: • Demonstrate how to use design patterns to address user interface design issues. • Identify the most suitable design pattern to address a given application design problem. • Apply design principles (e.g., open-closed, dependency inversion, least knowledge). • Critique code by identifying and refactoring anti-patterns. • Apply the model-view-controller architectural pattern.
  3. COURSE 3

    Software Architecture

    Current session: Sep 18 — Oct 23.
    Commitment
    Four weeks of study, 5 – 8 hours/week
    Subtitles
    English

    About the Course

    Welcome to our course on Software Architecture, provided in partnership by the University of Alberta, and Coursera! This is the third course in a specialization called Software Design & Architecture. If you were with us for the first two courses, you’ve put in a lot of hard work to get here. We are so happy to have you back!. If you are just joining us, welcome! We have two courses before this one, called “Object-Oriented Design” and “Design Patterns”. These are foundational to Software Architecture, but you can take this course as a stand-alone one if it suits you and your goals! In this course we will talk about software architecture. Architecture is the high-level form of the software design, so we are no longer talking about objects and classes, but components. Components are software units - subroutines, classes, functions, etc. - that are grouped on the basis of separation of concerns. The way that these components are arranged, and the interactions between them, are called the architecture. We will discuss the ways these architectures are represented, both in UML and other visual tools, and introduce the most common architectures, their qualities, and tradeoffs. In the last module, we will talk about how architectures are evaluated; what makes a good architecture? how can it be made better? We'll also talk about how the architecture touches on the process of software development. All the while you'll be practicing these architectures yourself and gaining hands-on experience. We have estimated that you will need about 4 hours per week to get the most out of this course, so it is hard work, but worth the effort. Good luck! Upon completion of this course, a learner 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.
  4. COURSE 4

    Service-Oriented Architecture

    Starts October 2017
    Commitment
    Four weeks of study, 5 – 8 hours/week
    Subtitles
    English

    About the Course

    Based on an understanding of architectural styles, learners will review architectures for web applications, then explore the basics of Service-Oriented Architecture (SOA) in two approaches: Web Services (WS*) and Representational State Transfer (REST) architecture. Learners will review key standards, including: HTTP, SOAP, WSDL, UDDI, BPEL, JSON, URI. Learners will be challenged in the capstone project to connect a Java-based mobile application with Elasticsearch, a web service with a REST application programmer interface (API). After completing this course, learners will be able to: • Describe SOA (Service-Oriented Architecture) to structure web-based systems. • Explain WS* services (i.e., SOAP over HTTP, WSDL, UDDI, BPEL). • Apply REST architecture (i.e., JSON over HTTP, URI). • dentify REST design principles. • Create a system using REST interfaces. • Apply microservice architecture.

Creators

  • University of Alberta

    The University of Alberta gives a national and international voice to innovation in our province, taking a lead role in placing Canada at the global forefront.

    UAlberta is considered among the world’s leading public research- and teaching-intensive universities. As one of Canada’s top universities, we’re known for excellence across the humanities, sciences, creative arts, business, engineering and health sciences.

  • Kenny Wong

    Kenny Wong

    Associate Professor

FAQs

More questions? Visit the Learner Help Center.