The growing complexity of modern software systems can dramatically affect the speed, quality, and flow of delivering value to customers. In this blog, we delve into how System Teams play a pivotal role for a organization and what are their responsibilities. But before we jump in, let’s take a quick look at what exactly is a System Team?
What is a System Team?
The System Team is a specialized Agile team that assists in building and supporting the Agile development environment, including developing and maintaining the Continuous Delivery Pipeline. They may also support the integration of assets, end-to-end solution testing, DevOps mindset and practices, deployment, and release on demand.
The System Team accelerates the ART’s velocity and reduces the cognitive load on development teams by building and maintaining the Agile development environment infrastructure, for example:
- The creation and maintenance of a Continuous Delivery Pipeline toolchain. This toolchain encompasses continuous integration, automating builds (including verification testing), deployment, and release.
- Creating platforms and environments for development, user acceptance testing, solution demonstration, deployment, and production
- Facilitating the technical elements of collaborating with third parties like hosting and data service providers
- Ensuring the ART has an intentional architecture for the infrastructure and that teams use standard tools and DevOps practices.
Roles and Responsibilities of System Teams
The System Team’s responsibilities can be categorized into the following areas as shown in the figure below, followed by a detail look into each of these areas.
First Responsibility: Building Development Infrastructure
A robust technical infrastructure supports high ART velocity, so the System Team may:
1. Create and maintain the CDP toolchain
This includes automating continuous integration, builds and testing, deployment along with release tools
2. Create platforms and environments
Creating environments for development, demos and user acceptance in the cloud or on-site premises
3. Facilitate the technical aspects of collaboration
System teams should act as the liaison with third parties, such as data, service, suppliers, or hosting providers
Second Responsibility: Supporting the Solution Integration
System teams should also support solution integration in complex solutions by involving in the following:
1. Version Management
System teams should determine and help maintain decisions and policies for version control and management
2. Create and run integration scripts
System teams must create and run solution-level build and integration scripts or manually integrate where automation does not yet exist
3. Attend various sync events
Most work of System Teams come from Agile Teams, so various events must be attended by them to be in pace with the needs of the train.
Third Responsibility: Assisting with end-to-end Testing
1. Create newly automated test scenarios
Systems Teams should provide the environments to help teams create automated tests to support new or existing functionality.
2. Provide datasets
System teams should create and maintain re-usable data sets and maintain it under version control.
3. Organize and manage test cases
System teams should organize test cases designed by individual teams into ordered test suites, prioritize time-consuming tests, and improve testing infrastructure.
4. Perform manual testing
System team should also assist teams in performing manual testing for complex scenarios
5. Conduct systems integration testing
Development teams should also be assisted by System teams in verifying with integration between different systems.
6. Create smoke tests
Verification tests to enable developers to verify their builds quickly and independently should be built by System teams.
7. Test solution performance
System teams help create and run tests for NFRs and assist System and Solution Architects identify system shortfalls and bottlenecks.
Fourth Responsibility: Supporting System and Solution Demos
1. Planning demos
System teams work with Agile Teams to define what they will demo at the end of each iteration, and they also assist in preparing the needed environments and infrastructure.
2. Integrating assets
System teams should also support the integration of assets and artifacts from Agile Teams.
3. Performing end-to-end solution demos
System teams assist Product Managers and Owners and others in running demos predominantly in end-to-end scenarios.
4. Set-up and test the demo environment
System teams must prepare the technical environments needed to demo the new solution functionality reliably. They might also be required to add extensions to the demo environment, including new interfaces, third-party components, simulation tools, and other environmental assets in each solution increment.
Fifth Responsibility: Facilitating Releases
1. Release governance
System teams assist ARTs with planning and managing releases. They also help agile teams ensure they meet regulatory, industry or other relevant standards and compliances.
2. Prepare for releases
System teams are responsible for packaging and deploying solutions as part of DevOps and CDP activities. This include using various techniques such as feature toggles to switch features on and off.
3. Release solutions
They help the trains release the solution to end users all at once, incrementally or to different customer segments.
4. Stabilize and operate
System teams collaborates with operations to ensure the solution works well from a functional and Nonfunctional Requirements (NFR) perspective.
5. Measure and learn
System helps the train instrument and quantify if the newly released functionality provides the aspired value. They also help collect feedback from different sources and prepare for the next loop through the CDP.
Get details about certified SAFe certifications:
Leave a comment