Architectural Thinking
Duration (in days):
5

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