Back to training

Architecture with Agility

About

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.

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.

Who should attend

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

Objectives

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

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

Course Outline

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

Prerequisites

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

Practical details

  • Duration: 2 days
  • Training language: English

 

Need a customized workshop? Contact us and we’ll adapt the content as required.