Architecture with Agility

07. - 08. sep 2017
09:00 - 17:00
Kevlin Henney
kr. 12.500 ex. moms

Architecture with Agility introduces a broad curriculum for modern software architects. It explores development process models, architectural styles, requirements techniques, sufficient modelling techniques, design patterns and testing practices.

Embracing agile development doesn't mean forgoing architecture. Whether accidental or intentional, every system has an architecture regardless of whether it was put in place by a nominated architect or if it emerged from the decisions of a team. All too often the focus of architecture is centred on a specific set of platform technologies. This focus can be dangerous as it does not highlight all the concerns an architecture should address. Moreover, it addresses only one aspect of the skill set an architect should possess.

What you will learn:

  • The relationship between development process and architecture
  • The roles and failure modes of testing, modelling and technology platforms
  • Different architectural styles and design patterns
  • How to transform product vision into architecture
  • Future-proofing your architecture, and accounting for uncertainty
  • How to ground your architecture and avoid overdesign

The course covers a wide range of topics through a number of practical exercises, with plenty of time dedicated to group discussion.


What is Agile Architecture?

  • The scope of architecture
  • Significance of design decisions
  • Architectural knowledge
  • Reactive design
  • Development Process

Building Architectures

  • Value-driven versus risk-driven approaches
  • Sequential versus iterative and incremental
  • Visualising progress
  • Deming's Plan-Do-Study-Act (PDSA) cycle
  • Lean thinking
  • Architectural Expression

Foundations of Good Architecture

  • Vision and communication
  • Architectural viewpoints and properties
  • Use cases and user stories
  • Documentation, tests and code
  • Models and Modelling
  • System context
  • Development Practice

Testing Architecture

  • Feedback
  • Exploration and prototyping
  • Reviews
  • Testing as learning
  • Test-driven development (TDD)
  • Sufficiency versus overdesign
  • Simplicity and usability
  • Patterns

Design Patterns

  • Recurring designs
  • Context dependency
  • Lone patterns
  • Combining patterns
  • Pattern stories and pattern languages
  • Pattern examples and counterexamples
  • Architectural Styles
  • Execution Architecture

Real-life Concerns

  • Optimisation and pessimisation
  • Cross-cutting concerns and emergent qualities
  • Physical considerations
  • The effect of concurrency and distribution
  • Dependency Management

Lasting Architecture or Architecture in The Long Run

  • Partitioning and organisation
  • External dependencies and the dependency horizon
  • Partitioning with respect to uncertainty and change
  • Kinds of changes
  • Continuous improvement
  • Decremental development
  • Refactoring and Re-engineering
  • Smells and technical debt

Practical Content

  • Exercises
  • Define scope of software architecture
  • Explore interaction of interruption of and progress
  • Identify consequences of intentional and accidental design decisions in attendee projects
  • List risks and challenges in actual and example projects


This course is primarily aimed at software architects, lead and senior developers, as well as testers looking to both broaden and sharpen their skills in the disciplines touched on by software architecture, not just specific technologies.


This course has no set prerequisites however experience working in an agile environment is required to get the most out of this course.