icanerdogan / Software-Design-and-Architecture-Specialization

Learn how to apply design principles, patterns, and architectures to create reusable, flexible, and maintainable software applications and systems.

Home Page:https://ibrahimcanerdogan.medium.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Software Design and Architecture Specialization

Object-Oriented Design

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 the Java codebase for an Android application with corresponding UML documentation.

Medium Articles

🔴 Chapter #1 Object-Oriented Analysis and Design — Software Design and Architecture Specialization

🔴 Chapter #2 Object-Oriented Modeling — Software Design and Architecture Specialization

🔴 Chapter #3 Design Principles — Software Design and Architecture Specialization

Design Patterns

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 redesign an existing Java-based Android application to implement a combination of design patterns. You will also critique a given Java codebase for code smells.

Medium Articles

🔴 Chapter #4 Introduction to Design Patterns: Creational & Structural Patterns — Software Design and Architecture Specialization

🔴 Chapter #5 Behavioural Design Patterns — Software Design and Architecture Specialization

🔴 Chapter #6 Working with Design Patterns & Anti-patterns — Software Design and Architecture Specialization

Software Architecture

TThe 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).

Medium Articles

🔴 Chapter #7 UML Architecture Diagrams— Software Design and Architecture Specialization

🔴 Chapter #8 Architectural Styles — Software Design and Architecture Specialization

🔴 Chapter #9 Architecture in Pratice— Software Design and Architecture Specialization

Service-Oriented Architecture

Based on an understanding of architectural styles, you 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.

In the Capstone Project you will connect a Java-based Android application with Elasticsearch, a web service with a REST application programmer interface (API).

Medium Articles

🔴 Chapter #10 Service-Oriented Architecture — Software Design and Architecture Specialization

🔴 Chapter #11 Web Service— Software Design and Architecture Specialization University of Alberta

🔴 Chapter #12 REST Architecture for SOA— Software Design and Architecture Specialization University of Alberta

Certificate

About

Learn how to apply design principles, patterns, and architectures to create reusable, flexible, and maintainable software applications and systems.

https://ibrahimcanerdogan.medium.com/

License:MIT License


Languages

Language:Java 100.0%