Agile Architecture within Scrum

2019 08 01 head

You are applying the agile, lean approach to your software product development. Your teams use Scrum or Kanban to deliver running software every two weeks.

Agile architecture is a key element to improve the quality of your solution and reduce the overall cycle-time of your product delivery.

Your journey toward greater business agility starts by identifying what outcomes are most important to your company’s success.

Outcomes are codified in functional and non-functional requirements your product shall fulfill. A key component is to find out how to create a great resilient architecture within the Scrum framework.

What Is Agile Architecture?

An agile architecture shall have four characteristics.

2019 08 01 architecture
  1. Allow change quickly because we cannot foresee the future.

  2. Always verifiable because we want changes without impeding integrity.

  3. Support rapid development because we want effective and efficient implementation of new features.

  4. Always working because we want continuous deployment to have customers' feedback.

These characteristics are essential for successful agile development of great software products.

What Is The Scrum Approach?

Scrum and the Scrum Guide are silent on how architecture activities are performed during sprints. We can use the Scrum values, the Scrum Guide and the Agile Manifesto Principles to infer approaches.

The architect shall be part of the Scrum development team. This is the most embedded way that an architect would fit into a Scrum team. It may not even be an individual who has the title of an architect. The big idea behind Scrum teams is that team members have different skills. Their roles may change to deliver what is required for a particular sprint.

So it could be that senior developers within the team got architecture skills. They are in the best position, or have the best knowledge, to make those architectural decisions. Those team members with architectural skills are involved in the sprint on a day-to-day basis. They attend the daily Scrum meetings, take items off the backlog, and work on them.

Interestingly LeSS is more opinionated and describe Successful Approaches for agile architecture and design.

How Do You Perform Agile Design?

Scrum is quite silent about technical practices. The Scrum fathers and community strongly emphasize adopting eXtreme Programming practices. For bigger systems use the good practices described in LeSS.

An actual exceptional practice is to use Event Storming and Domain Driven Design DDD to model the application domain and partition the system.

Use fitness functions to monitor and validate all non-functional requirements.

The well-established practices from the object-oriented and DevOps communities are:

  • Develop a working skeleton very early.

  • Clean architecture implies clean code and requires clean coders in your team. See our article Clean Code,

  • Aggressive refactoring and understand technical debt, Continuous integration, continuous delivery, and continuous deployment.

For a detailed discussion, consult the article Pragmatic Craftsmanship.

What is the Architect’s Role?

The architect shall

  • Be part of the team, work daily with team members and attend all team events.

  • Maintain the pace of development.

  • Often communicate and early as a coach and mentor, meaning pair programming and design sessions.

  • Be fluent in domain-driven development, hexagonal architecture, refactoring, and clean code.

  • Use architecture design record ADR and light documentation to describe architecture decisions - meaning no lengthy Software Architecture Document SAD or overwhelming UML models -.

  • Be a master programmer and write code in the application technological stack. He writes actual source code as current good practices are.

  • Have rich knowledge of architecture and design.

We have mentioned refactoring, which is how we evolve an ever-improving design and architecture while building the product incrementally. To do that, we need to know the difference between good architecture and design and not-so-good. We need a rich pool of architecture and design options in our bag of tricks, ranging from elementary options to the more complex and rich options that we may need as the system grows. One never knows too much about the quality of architecture, code, and design. One does need to apply that knowledge smoothly, incrementally, little by little.

Agile Architecture Series

The agile architecture track contains the following blogs

We also published our agile architecture course (3 ECTS) used for teaching computer science students at bachelor level at Swiss technical universities.