The whole is greater than the sum of its parts.

—Aristotle

 

System Team

The System Team is a special Agile team that assists in building and using the Agile development environment, including continuous integration, test automation, and continuous deployment. The System Team supports 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 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 solution as it unfolds.

Once the infrastructure matures, system teams are sometimes eliminated from an ART and the development teams take on the responsibilities for maintenance and use. In larger solutions, it’s more likely that certain specialty expertise remains with one or more systems teams, where aggregating people, skills, and technical assets delivers the best economic value.

Details

System Team is a special Agile Team on the Agile Release Train (ART) and/or Solution Train 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, and 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 fitness for use 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 Solution Trains for large 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

For large, multi-ART value streams that need the constructs of the Solution Train, System Teams are particularly invaluable. Depending on the scope and complexity of the value stream, we have observed three organizational patterns in this larger case:

  1. There is one System Team per ART that can effectively coordinate the solution integration and validation without additional help.
  2. There is a System Team for the Solution Train only that can fulfill these responsibilities for each ART.
  3. There are System Teams for both the Solution Train and within the ARTs.

The decision regarding which pattern to use depends on the specific context of the value stream. Options include the ART structure within the value stream (built around features or components), solution architecture, branching and integration policies across the ARTs, system testability, and development infrastructure.

Responsibilities

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, development, quality assurance, user acceptance testing, staging, 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.

System Integration

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 to support daily activities.

End-to-End and Solution Performance Testing

The System Team may also perform a number of automated testing responsibilities:

  • Create newly 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.
  • Help teams create reduced-test suites that they can run.
  • Test solution performance against Nonfunctional Requirements 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 ART demonstrate the current, whole-system to stakeholders in the system demos. Likewise, the Solution Train must integrate and show progress at the solution demo. The System Team typically helps stage these demos and assures that demo environments adequately and reliably demonstrate the new solution functionality.

Release

The System Team often has unique skills and experience related to the evolving solution. It 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, which means they 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 PI. As part of DevOps and the Continuous Delivery Pipeline activities, they will be doing whatever is necessary to help the ART or Solution Train prepare, package, and deploy a solution into the target environment.

Balancing Solution Integration and Testing Effort

The System Team, however, can never be the entire solution to the integration challenge. Agile Teams must also envision 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. Similarly, if Agile Teams are not continuously integrating, at a minimum, the immediate components they interface with, the System Team effort 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.

Figure 1. The optimum balance in terms of integration effort between Agile Teams and the System Team. With maturity and automation, the optimum point moves to the left.

 


Learn More

[1] Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011.

Last update: 28 September, 2017