In this masterclass Simon Brown will provide you with a practical approach to software architecture; including technical leadership, communication and how to balance upfront design with agile approaches.

Course Overview

Day 1: Architectural drivers, Software design exercise, Visualising software architecture...


  •  What is software architecture?
  • Architecture vs design
  • The importance of software architecture

Architectural drivers 

  • Requirements
  • Quality attributes
  • Constraints
  • Principles
  • Agility

Software design exercise 

 Review and feedback 

  • Does the solution satisfy the architectural drivers?


  • A definition of the software architecture role
  • Technical leadership and the different leadership styles
  • Technical skills
  • Soft skills
  • Software architecture and coding

Visualising software architecture

  • Do you understand the diagrams?

Day 2: Visualising software architecture, Documenting software architecture, Managing technical risk...

Visualising software architecture

  • Diagramming anti-patterns and typical problems
  • The “model-code gap”
  • Abstractions and creating a shared vocabulary with a ubiquitous language
  • An overview of the C4 model
  • Notation and tips for better diagrams
  • System Context diagrams
  • Container diagrams
  • Component diagrams

Documenting software architecture

  • The importance of documentation
  • Writing lightweight supplementary documentation using a “software guidebook” or arc42

Managing technical risk

  • Quantifying and prioritising risk
  • Identifying risk with risk-storming

Software architecture in the delivery process

  • Waterfall, RUP, agile, etc
  • The conflict between architure and agile
  • Approaching software architecture in a pragmatic, lightweight way
  • How much up front design is enough?

Discussion, questions and wrap-up