The whole is greater than the sum of its parts.
System TeamThe System Team is a specialized Agile Team that assists in building and supporting the Agile development environment, typically including development and maintenance of the toolchain that supports the Continuous Delivery Pipeline. The System Team may also support the integration of assets from Agile teams, perform end-to-end Solution testing where necessary, and assists with deployment and Release on Demand.
In SAFe, Agile teams are not stand-alone units. Instead, they are part of the Agile Release Train (ART), responsible collectively for delivering larger system and Solution value. Built-in Quality practices typically require additional infrastructure work to build, integrate, deploy, and release solution assets more frequently and continuously across multiple stages of the pipeline. To support this, one or more specialized System Teams are often formed. As an ‘enabling’ type of Agile Team, they help build the environments and assist with system and solution integration. They accelerate team velocities by performing some of the slower, end-to-end and Nonfunctional Requirements (NFR) tests. And they help demo the solution as it evolves.
Over time, System Teams are sometimes eliminated from an ART as the Agile teams take on these responsibilities. In larger solutions, it’s more likely that specialty expertise remains with one or more System Teams, where centralizing certain people, skills, and technical assets deliver the best economic value.
The System Team assists one or more ARTs in building and using the Agile development environment infrastructure—including the Continuous Delivery Pipeline toolchain—as well as integrating assets from Agile teams and performing end-to-end solution testing. They often participate in the System Demo at the end of each Iteration and the Solution Demo at the end of each Program Increment (PI), or more frequently as the case may be. The demos support the teams and other stakeholders by providing quick feedback concerning the fitness for use and integrity of the evolving end-to-end solution. System Teams may also assist with releasing and with Coordination of Solution Trains for large Development Value Streams.
However, the System Team and Agile teams share this responsibility. Otherwise, the System Team can become a bottleneck, and the Agile teams will not be fully capable of—or accountable for—full end-to-end value delivery.
The System Team in Solution Trains
For large, multi-ART development value streams that need the constructs of the Solution Train, System Teams are particularly useful for supporting the larger-scale integration challenges. Depending on the scope and complexity of the development value stream there are three main patterns for structuring the System Team:
- There is one System Team per ART that, together, coordinate the solution integration and validation
- There is a single System Team for the entire Solution Train, which can fulfill these responsibilities for all of its ARTs
- There are System Teams for both the ARTs and Solution Train
The decision regarding which pattern to use depends on the specific context. Factors include the ART structure within the development value stream (built around features or components), the solution’s architecture, branching and integration policies across the ARTs, system testability, and development infrastructure.
The System Team’s primary responsibilities are building development infrastructure, solution integration, end-to-end testing, system and solution demos, and release. These responsibilities are described in the following sections.
Building Development Infrastructure
Good infrastructure supports high ART velocity, so the System Team may:
- Create and maintain the continuous delivery pipeline toolchain, including continuous integration, automated builds, automated build verification testing, and automated deployment
- Create platforms and environments (which may be cloud-based – PaaS) for development, solution demos, and user acceptance testing
- Facilitate the technical aspects of collaboration with third parties, such as data or service providers and hosting facilities
Complex solutions also require that the System Team do the following:
- Participate in PI Planning and the Pre and Post-PI Planning events in Large Solution SAFe and in backlog refinement to define integration and test backlog items
- Determine and help maintain decisions and policies for version management
- Run solution-level build and integration scripts or manually integrate where automation does not yet exist
- Attend other teams’ stand-ups to support daily activities
The System Team may also perform some necessary testing duties that support the Agile teams:
- Create newly automated test scenarios
- Extend test scenarios to data sets that more closely match production
- Organize test cases designed by individual teams into ordered suites
- Perform manual testing and run automated tests for new Features
- Prioritize time-consuming tests, refactor, and run reduced test suites where applicable
- Help teams create ‘smoke tests‘, reduced-test suites that they can run quickly and independently for developer builds
- Test solution performance against NFRs and assist System and Solution Architects/Engineering in identifying system shortfalls and bottlenecks
System and Solution Demos
At the appropriate time during every iteration, the ART demonstrates 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 prepare the technical environments to reliably demo the new solution functionality.
The System Team often has unique skills and experience related to the evolving solution. It may include QA and operations personnel and members of the System Architect/Engineering team may serve as a member of this team. They have a broad, end-to-end solution experience, which means they understand what it is and what it does. With this perspective, the System Team can support the ART or Solution Train to prepare, package, and deploy a solution as part of DevOps and the Continuous Delivery Pipeline activities.
Balancing Solution Integration and Testing Effort
The System Team, however, can never be the entire solution to the pipeline tooling and integration challenges. They must collaborate with Agile teams on a shared vision to implement DevOps and the continuous delivery pipeline. Efficient solution development requires sharing best practices. For example, if the System Team executes end-to-end performance testing but individual teams don’t perform even lightweight performance testing, performance problems may be revealed late causing delays and rework. The inverse is also true. Requiring teams to perform extensive performance tests for every Story slows their velocity. Maximizing ART velocity requires a sense of balance between Agile teams and System Teams, as Figure 1 illustrates. With maturity and automation, the optimum point for integration responsibility moves to the left.
Last update: 10 February 2021