Architectural Thinking

Duration (in days): 

5

Architectural Thinking

Description:

When programmers are promoted to architects, organizations often loose a great programmer and gain a terrible architect. In this course, we aim at teaching a software engineer how to become an architect. It is also a great course for architects to learn about the latest architectural patterns and processes.

Objectives:

  • Recognize and understand the various aspects of IT architectures

  • Be able to recognize, understand and use the most common architectural patterns

  • Effectively document IT architectures

  • Be able to identify the various customers of an IT architecture

  • Understand how to analyze architectural assets

  • Apply an effective methodology for evolving architectures

Prerequisites:

When programmers are promoted to architects, organizations often loose a great programmer and gain a terrible architect. In this course, we aim at teaching a software engineer how to become an architect. It is also a great course for architects to learn about the latest architectural patterns and processes.

Audience

Architects and software developers.

Outline

Introduction

  • What is an IT Architecture?

  • Architectural categories

  • What makes a good architecture?

  • Software processes and the architecture business cycle

  • Where do architectures come from?

  • Typical architectural goals

Traits of a Good Architect

  • Technical Leadership

  • Breath of Knowledge

  • Know What You Don't Know

  • Presentation of Architecture

  • Domain Knowledge

  • Managing Politics

  • Negotiation Skills

  • Becoming a Visionary

The Architectural Development Process

  • Reference process

  • How to validate?

  • How to evolve?

  • How to start?

  • Some older frameworks (RUP, TOGAF, DOGAF, Zachman)

  • Agile development

  • Agile and architecture

  • Arcitect Elevator

Architectural views

  • The Stakeholders

  • What are views?

  • IEEE 1471-2000

  • How to select views?

  • Commonly used views

  • The C4 method of visualizing architecture 

Documenting architecture

  • Why notation?

  • UML 2.0 and architectural descriptions

  • Is UML enough?

  • Other notations

  • A documentation template

Requirements and Architecture

  • The requirements view

  • Ensuring continuity in architecture

  • Documentation of requirements

  • Validation of architecture against functional requirements

Commonly used Viewpoints

  • Business Viewpoint

  • Business Domain Viewpoint

  • Design Viewpoint

  • Integration Viewpoint

  • Reuse Viewpoint

  • Scalability Viewpoint

  • Security Viewpoint

  • Risk Viewpoint

  • Maintainability Viewpoint

Architectural Patterns

  • From monoliths to services

  • From SOA to Microservices

  • From Framework to Platforms

  • From Objects to Functions and Why

  • Domain Driven Design

  • Lambda Architecture

  • Event-Sourcing

  • Command Query Responsibility Segregation (CQRS)

  • Categories of patterns

  • Patterns versus idioms

  • U/I Integration Patterns (MVC, MVP, MVVP, etc)

  • Blackboard

  • Disruptor

Architectural assets

  • What is an Asset?

  • Asset management

  • Reuse perspective

Future and Opportunities

  • Containers and Kuberntes

  • What is Big Data?

  • Challenges in Distributed Computing

  • Machine Learning and AI

  • From Cloud to Edge Computing