The whole is greater than the sum of its parts.
The System Team is a special Agile team that provides assistance in building and using the Agile development environment, including continuous integration, test automation and continuous deployment. The System Team assists with the integration of assets from Agile teams, performs end-to-end Solution testing where necessary, and assists with deployment and release.
In SAFe, Agile Teams are not stand-alone units. Instead, they are an integral part of the Agile Release Train (ART), responsible collectively for delivering larger system and solution value. During the transition to Agile, additional infrastructure work is typically required to be able to integrate solution assets more frequently. To accomplish this, one or more specialized System Teams are often formed. They help build the environments and assist with system and solution integration. They also help demonstrate the evolving solution as it unfolds.
Sometimes system teams are disbanded as the infrastructure matures, and the development teams take on the responsibilities for maintenance and use. More typically in larger solutions, certain specialty expertise remains with one or more systems teams, where the centralization of people, skills and technical assets delivers the best economic value.
Summary Role Description
A System Team is a special Agile Team on the Agile Release Train or Value Stream that is typically chartered to provide assistance in building and using the Agile development environment infrastructure—including Continuous Integration—as well as integrating assets from Agile Teams, performing end-to-end Solution testing. They may participate in demonstrating solutions in the System Demo at the end of each Iteration, and at the Solution Demo at the end of each Program Increment, or more frequently as the case may be. This supports the teams and other stakeholders by providing quick feedback with respect to the efficacy and integrity of the evolving end-to-end solution. System Teams may also have a special role in assisting with each Release and with Coordination of larger value streams.
However, these efforts should be shared between the System Team and Agile Teams; otherwise, the System Team will become a bottleneck, and the Agile Teams cannot be fully capable of or accountable for real value delivery.
The System Team in Larger Value Streams
System Teams are particularly invaluable in large, multi-ART value streams. Depending on the scope and complexity of the value stream, we have observed three organizational patterns in this larger case:
- There is a System Team per ART, and that team can effectively coordinate the solution integration and validation without additional help
- There is a System Team only at the Large Solution Level, and that team can fulfill these responsibilities for the ART
- There are System Teams both at the large solution level and within the release trains
The decision regarding which pattern to use is highly dependent on the specific context of the value stream. However, generic factors may include Agile Team orientation (feature or component), ART structure within the value stream (built around capabilities or subsystems), solution architecture, branching and integration policies across the trains, system testability, and development infrastructure.
The System Team’s primary responsibilities are indicated below.
Building Development Infrastructure
Good infrastructure supports high ART velocity. Thus, the System Team may:
- Create and maintain infrastructure, including continuous integration, automated builds, and automated build verification testing
- Create platforms and environments for solution demonstration, QA, user testing, etc.
- Create products, utilities, and scripts to automate deployment
- Facilitate the technical aspects of collaboration with third parties, such as data or service providers, hosting facilities, etc.
Complex solutions also require that the System Team do the following:
- Participate in PI Planning and the Pre- and Post-PI Planning meetings at the large solution level, and in backlog refinement to define integration and test Capabilities and Features
- Determine and help maintain decisions and policies for appropriate branching models
- Run solution-level integration scripts or integrate manually where automation is not possible or has not yet been applied
- Assist component teams in defining inter-component interfaces
- Attend other teams’ stand-ups in support of daily activities
End-to-End and Solution Performance Testing
The System Team may also perform a number of automated testing responsibilities:
- Create new automated test scenarios
- Extend test scenarios to larger data sets
- Organize test cases designed by individual teams into ordered suites
- Perform manual testing and run automated tests for new features and Stories
- Prioritize time-consuming tests, refactor, and run reduced test suites where applicable
- Assist teams in creating reduced test suites that they themselves can run
- Test solution performance against NFRs and assist System and Solution Engineering in identifying system shortfalls and bottlenecks
System and Solution Demos
At the appropriate time during every iteration, the teams need to demonstrate the current, whole-system solution to stakeholders in the system demos. Likewise, the value stream must integrate and show progress at the solution demo. The System Team typically helps stage these demos and helps assure that demo environments are adequate to the challenge of reliably demonstrating new solution functionality.
It is often the case that the System Team has unique skills and purview with respect to the evolving solution. The team may include senior QA personnel; perhaps the System Architect/Engineer serves as a member of this team. They have seen the solution across multiple iterations; they generally understand what it is, what it does, and how well it meets all the intended requirements. With this perspective, the System Team is likely to be directly involved in supporting the release, working closely with DevOps and doing whatever is necessary to help the train prepare, package, and release a solution into the target environment.
Balancing Solution Integration and Testing Effort
However, the System Team can never be the entire solution to the integration challenge. Agile Teams must also have a clear vision of the bigger picture of what they are creating. Otherwise, even local excellence on the part of Agile Teams will not result in good economic outcomes. Effective solution development only occurs when these practices are appropriately shared. For example, if only the System Team is testing NFRs and individual teams don’t perform even lightweight performance testing, then the entire ART velocity will be slowed by the rework necessary to pass these critical quality tests. In a similar fashion, if Agile Teams are not continuously integrating at least the immediate components they interface with, the integration effort by the System Team will be a long and painful process. Maximizing ART velocity requires a sense of balance between Agile Teams and System Teams, as Figure 1 illustrates.
Learn More Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011, chapter 4.
Last update: 1 April 2016