images

Considering Agile Tools within an ALM Framework

Technology is nothing. What’s important is that you have faith in people, that they’re basically good and smart, and if you give them tools, they’ll do wonderful things with them.

—Steve Jobs

I typically do not discuss agile tooling when initially helping teams adopt Agile. I believe the initial focus should be on Agile values and principles and then the processes and practices. Agile tooling discussions should occur as a readiness activity within the RICH deployment model so that it is clear to the team what tools will be used within the project and product context.

From an agile perspective, collocated teams may prefer to work with minimal tooling in the agile space, using spreadsheets, story walls, and whiteboards. As soon as teams become distributed, however, working with online tools becomes beneficial. A team may gain benefits in productivity and transparency from automation that they provide. Details on tools that can help you identify, track, and delivery customer value should be included within the technical vision (Chapter 15).

Application Lifecycle Management

Application lifecycle management (ALM) describes a set of tools and corresponding practices that work together across the release lifecycle to help a team deliver an instance of a product (release) from inception to production. A robust ALM framework will include a metamodel that defines a common language across the tools and process engine that parses and shares information across and among the various tools within the ALM framework.

I have been fortunate enough to have been involved with both ALM and Agile. Unfortunately, there is no one-stop-shop ALM solution because of the breadth and depth that full ALM implies and the fact that software development is more complex and diverse than ever. But the more seamless an integrated tool framework is, the more an Agile Team can focus on building customer value.

There is a need for flexibility and customization so that an ALM tool framework doesn’t drive the interaction of the team. This is in support of the Agile principle, “People and their interactions over process and tools.” It doesn’t say, “You should forgo process and tools”—but it implies that teams should always be aware of what is best for the members based on current and future interactions among the team. More important, teams should not allow tools to drive the process or constrain the interaction possibilities.

ALM Framework for Customer Value

When introducing ALM and the tools it brings to an agile context, it is important to focus on customer value from inception to release. Starting agile ALM as early as inception or business visioning for a specific release helps provide the context for initiating customer value for the project.

image Agile Pit Stop   The tools that you use within an agile context should help you identify, track, and deliver customer value.

Should you pursue an ALM framework to help with an agile deployment, make sure that your main objective is to establish mechanisms that improve your ability to understand and promote customer value throughout the lifecycle. This helps establish traceability of customer value from the beginning of the lifecycle to the end.

The value chain is a series of activities focused on delivering value. According to Michael Porter, value “stems from the many discrete activities a firm ­performs in designing, producing, marketing, delivering, and supporting a ­product.” 1 Figure 21-1 illustrates the notion that just as Agile supports the value chain and the delivery of customer value, ALM should support Agile in reaching this goal. This establishes the basis for an Agile ALM framework.

9781430258391_Fig21-01.jpg

Figure 21-1. Applying application lifecycle management (ALM) tools to support agile methods and practices to build the value chain and the delivery of customer value

Tools to Support Agile

When teams discuss agile tools, the focus tends to fall on Agile Planning. However, Agile can take advantage of tools from a variety of areas across the lifecycle. Besides agile planning tools, a team can take advantage of tools in business visioning, collaboration, defect tracking, configuration management, continuous integration and build, and test automation. ALM can help integrate the tools in a way that benefits the team. The rest of this chapter ­examines these different tool areas that can benefit Agile and its goal of delivering customer value.

image Agile Pit Stop   Agile Planning is often the first tool thought of for Agile. But business visioning, collaboration, defect tracking, configuration management, continuous integration and build, test automation can also be advantageous.

Business Visioning: Identifying Customer Value

As teams begin a value delivery lifecycle, they need to provide a means to capture customer ideas and prioritize and rank them to ensure they are building something the customer wants. Ideas primarily come from the customer, but they may be channeled through discussions with sales, presales, marketing, management, and others. With a business visioning idea-capture tool, ideas can come directly from the customer into this customer-facing tool and be sorted out by the Product Owner.

It is advantageous to provide an idea generation and collaboration space with web conferencing that is both threaded and traceable from the source to the idea. This provides customers a place to submit ideas that may evolve into epics or user stories. The latter implies integration between idea generation and user stories in the Product Backlog.

A key to business visioning is having the ability to generate market-level objectives from ideas so that a team has a vision of what they want to build yet remains adaptable to the ever-changing marketplace. Then they should have the ability to generate a business case from the ideas, market objectives, projected return on investment, and market analysis.

Collaboration: Sharing Customer Value

A collaboration tool is a virtual replication of an Agile Team room. This is a virtual room that can be viewed from your computer, in which you can see the rest of the team in action. You can “poke” them, have a discussion, break out into individual virtual team rooms, view the story wall, and see your specific work wall.

Team members need to enable continuous communication among themselves with threaded team conversation. These conversations need to be integrated and connected to certain events (such as Sprint Planning and Daily Scrum) or certain work items (such as user stories), so that they can be available for considering context and further detail as needed.

Full project teams and their Scrum Team components also need the ability to support Scrum of Scrums (SoS) for collaboration and discussion. There may be a project SoS (when there are multiple Scrum Teams on a project), Product Owner SoS, and technical SoS. Each may benefit from collaboration space.

From an external perspective, having the ability to initiate virtual customer validation sessions (such as Sprint Reviews) to demonstrate Sprint functionality from the version control or testing environment is enabled by an agile ALM solution. Feedback from virtual attendees can be captured in the collaboration system and agile tools related to specific stories and Sprint. This input should be readily available for the next Sprint Planning session.

Agile Planning: Capturing and Prioritizing Customer Value

A team, led by the Product Owner, needs the ability to establish and manage a Product Backlog to capture epics, user stories, and tasks and then establish relationships among them (from tasks to their parent story, from stories to their parent epic or theme, and so forth). Agile Planning tools must have the ability to capture:

  • Product Backlog Item (PBI) types, such as epic, theme, user stories, tasks, and bugs
  • unique identifiers for each PBI
  • the originator or source of the PBI
  • the priority of the PBI
  • dependencies the PBI has on other PBIs or external functions
  • the Sprint in which the PBI is built
  • comments regarding the PBI

Chapter 18 discusses agile planning tool needs in the context of the Product Backlog and attributes.

The good news is that this functionality is readily available in various tools. Within the context of managing a backlog, a team needs the ability to ­generate Sprint Backlogs from the Product Backlog based on priority—including the ­ability to capture acceptance criteria related to a story, ensuring that the Sprint story wall is in a visible place.

It is also advantageous for an agile planning tool to capture customer ­personas. This is useful when a team’s requirement language construct (such as the canonical form) captures the persona. You can create the customer personas for your specific product; then, when the Product Owner is writing the user stories, they can be linked to the persona details.

As a result of backlog management, having a means to generate Sprint Burndowns, release burnups, and Sprint and release velocity metrics in an automated manner helps the team track progress. When Agile is being ­implemented on large project teams with multiple Scrum Teams, it is beneficial to get a cross–Scrum Team view of the Sprint and release progress.

The last session within a Sprint is the Sprint Retrospective. It is beneficial to have the ability to support the retrospective process and merge the improvement tasks back into the Product Backlog for Sprint Planning. These tasks can be included in the next Sprint and tracked to closure.

Defect Tracking: Identifying Bugs While Increasing Quality

Defect tracking tools provide a team with the capability of documenting, prioritizing, and tracking defects to closure. As part of the Sprint, teams often incorporate defect work. Because of this, they need the ability to track defects related to the product. In addition, the Product Owner must have the ability to selectively include defects into the Product Backlog as appropriate. This is especially relevant to legacy products.

Teams also need the ability to differentiate clearly among the defects associated with the current Sprint, past Sprints, and past releases. This implies integration between the defect tracking tool and the agile planning backlog management tool.

Version Control: Identifying and Controlling Assets That Form the Basis of Customer Value

A version control tool provides the ability to store, manage, and track changes to source code. There is a need for a version control system that can manage any type of element, such as code, documents, test scripts, and executables. These elements form the basis for the assets that must be managed. These code assets require the ability to be tagged to a release of the product.

The version control system should have the ability to form private workspaces so each team member can work securely in a “sandbox,” allowing for both creativity and integrity prior to promoting code to the project level or backing stream. To support different code levels and streams, the version control system needs a robust branching and merging process to support different lines of development of working code while the assets that represent customer value can be clearly identified and tracked.

Because assets are important to delivering customer value, the version control system must be regularly backed up, along with a tested disaster ­recovery process with quick turn-around time for recovery. The version control system forms the basis for the continuous integration and build system so that what is built comes directly from a location of known integrity.

Continuous Integration and Build: Continuously Building Value

Continuous integration and build refers to the process of checking in and merging code from a developer’s private workspace to the project stream, thereby immediately initiating a project-level build. Key advantages are that the team learns of merge and build issues right away. Frequent code merging reduces the challenges and pain of large, complex integrations in the future. It also provides team members with immediate feedback on the success or failure of changes in a build and in the subsequent smoke test of the product. The smoke test provides a brief test of the functionality to ensure it operates at a basic level.

A continuous integration and build system should be integrated with a version control system that provides effective branching and merging functionality. This includes the ability to initiate merge and build on check-in to the parent branch and to provide information on what was merged and built and their results. In addition, it is beneficial to have an integration with the agile planning tool on one end to make the team aware of the merge and build results and on the other end with the test environment to initiate the next step in testing.

One of the advantages of continuous integration is that the team begins to build the customer value early and often. A very interesting cultural shift occurs when the concept of continuous is ingrained into a culture. Agile embraces a mindset of continuous change in which builds move from an event-based integration process to a continuous integration process. In other words, no one needs to hold onto large amounts of changes for a major integration effort. It also promotes more granular user stories and more frequent code changes.

Testing: Verifying and Automating for Quality

Although prioritized scope drives customer value, teams need to ensure that value is of high quality. The test function is important to Agile. Testing comes with a whole range of tools. The ability to run functional tests, system tests, regression tests, performance tests, load tests, and others are critical to ensuring product quality. Integration with the agile planning tool allows the team to be aware of test results, including what tests were successfully run on stories.

In addition, establishing a test automation framework allows for reduced QA and developer involvement and allows for the tests to be continuously run. In Agile, automation helps reduce manual testing, which slows the team down. As automation is added, a focus on quality data can help a team highlight opportunities to increase velocity and improve quality. Details on test tools should be included within the QA vision discussed in Chapter 15.

Do You Have the Right Tools for the Job?

When discussing tools for Agile, planning tools tend to be the focus. But there are many tools across the project lifecycle that can help an Agile Team. These include tools for business visioning, collaboration, defect tracking, configuration management, continuous integration and build, and test automation. Preparing a technical vision of your tool strategy can help you frame your discussion around the benefits of tools and how the tools can help you identify, track, and delivery customer value.

By fostering integration of tools across the lifecycle, an ALM framework can support both the value chain and Agile in the pursuit of delivering customer value. ALM establishes a tool framework to help a product team establish and manage customer value throughout the lifecycle. It ensures traceability of customer value from one part of the lifecycle area to another. As you consider Agile, remind yourself of the Agile principle: People and interactions over process and tools. This doesn’t mean that you ignore tools, but that you should employ tools to help you deliver customer value.

1 Michael Porter. Competitive Advantage: Creating and Sustaining Superior Performance. Free Press, 1985.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset