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...
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?
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?
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