2 Days: Visualising Software Architecture with the C4 Model [SOLD OUT]
In this Masterclass Simon Brown (author of Software Architecture for Developers) will give you an introduction to a pragmatic and practical approach to software architecture; including technical leadership, communication and how to balance upfront design with agile approaches. Software Architecture for Developers is a practical and pragmatic guide to modern software architecture, specifically aimed at software developers.
This Masterclass will cover:
- The essence of software architecture
- Why the software architecture role should include coding, coaching and collaboration
- The things that you really need to think about before coding
- How to visualise your software architecture using the C4 model
- A lightweight approach to documenting your software
- Why there is no conflict between agile and architecture
- What "just enough" up front design means
- How to identify risks with risk-storming
AGENDA - DAY 1
Introductions
Architecture
- What is software architecture?
- Architecture vs design
- The importance of software architecture
Architectural drivers
- Requirements
- Quality attributes
- Constraints
- Principles
- Agility
Software design exercise
Lunch
Review and feedback
- Does the solution satisfy the architectural drivers?
Architects
- 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?
AGENDA - DAY 2
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
Lunch
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
Are there any prerequisites?
Some experience building software; no laptops needed