How Agile ALM Improves Planning
For some folks, planning their software development project means putting the plan in Microsoft Project (or Primavera or some other project management system). This involves a lot of initial planning, followed by deciding what gets done first, and then writing a plan that estimates far into the future what will get done.
For Agile teams, while comprehensive project plans can help to coordinate large initiatives, most planning takes the form of release plans with stories. The focus is on team collaboration. The planning happens within planning sessions that allow for changes to scope, resources or dates quickly. Using reporting mechanisms like burn down charts (release burn down charts show the progress of the team), velocity charts, and cumulative flow diagrams helps teams plan. Task boards also make the team's planning more transparent.
Planning also happens in a more collaborative way using Agile methods. Scrum, XP Sprint or iteration planning sessions allow the team to plan and commit to what they will get done within a fixed amount of time. This also allows them to adjust their plan quickly when things change (as they always do).
Here are some examples of tools that can be utilized for planning activities. This list is by no means complete, but these tools support Agile methods.
How Agile ALM Improves Requirements Gathering
Agile teams rely on smaller scoped work items in their requirements gathering. Most teams utilize user stories to convey features that need to be built. ALM tools must have a way to capture stories and use these stories in planning sessions. The easiest ALM tool one could use for basic requirements gathering is index cards on a big board. Using a board and index cards is a great way for a team to begin a project. It is also a great way for co-located teams to show requirements and track them (planning). With large distributed teams (large being more than 10 people), however, it can become difficult to use this method.
Other types of requirements include acceptance criteria. In Agile teams -- as in most teams -- these take the form of wireframes, mockups, and some written format. Another twist that Agile teams use is automated acceptance criteria, tests that act as acceptance criteria for the team to develop against. Depending on team maturity, using an electronic tool to capture and keep user stories, mock ups, wireframes and Acceptance Criteria can help large distributed teams in requirements gathering.
Teams would use the same tools for requirements gathering as they would for planning.
The Role of Version Control in Agile ALM
When writing code as a team you must have some type of version control system. This is a given nowadays for most software developers, but I still hear tales of teams that are using a file system as their version control. And I do not mean Visual Source Safe!
ALM practices -- Agile in particular -- inform your version control practice. They require that your version control system allows you to get back to a particular version of software easily. Your version control system also should allow your team to work on new features while still allowing you to perform maintenance work if necessary. So you should establish a branching and merging strategy for your team.
This is not necessarily an Agile-only ALM practice; it is necessary for any ALM implementation. Your version control should not be an impediment to delivering frequently. Agile teams must have a way of doing continuous integration when a team member checks in code. This can be done with an integrated ALM solution like a Visual Studio ALM, or using an open source product like Jenkins.
Version Control Tools
Below are some examples of tools that can be utilized for version control. This list is by no means complete, but these tools do support Agile methods.