The term agile covers several project management approaches, all characterized by using incremental work packages.
This lesson will look at the six agile approaches and show how each is used.
What Is Agile?
Agile has been the buzzword in project management for about a decade, and with good reason. Agile is actually an umbrella term over several project management approaches that are characterized by their ability to allow project teams to respond to changing requirements and priorities by using incremental work packages. While all agile methods have common characteristics, each agile method has unique processes that set it apart. Let’s look at how each method is used with Charlie’s team, who is developing a new software game.
Scrum & Lean
Scrum is a framework for developing and sustaining complex products.
Let’s look at scrum in action. Charlie’s team is beginning an iterative cycle, called a sprint, so Charlie reviews the product backlog with the customer. The product backlog is essentially a prioritized wish list created by the customer of features the new game needs. Charlie selects the top tasks to work on for that sprint, keeping within a two- to four-week timeframe. This task list is called the sprint backlog.Every day during the sprint, Charlie’s team holds a quick meeting called daily scrum to set the work for that day and resolve any work stoppages or roadblocks.
Once the work is complete, Charlie meets with the customer to hand over the product, review the product backlog, and reprioritize the requirements. Charlie’s team continues working in sprints until the entire game is built.Now, let’s look at lean.
Lean started in Toyota’s lean manufacturing movement. Now adapted to project management, lean focuses on eliminating waste and delivering value to the customer. Let’s look at how Charlie’s team would use lean to develop a new software game.First, Charlie’s team breaks down the overall project into iterations that will deliver working pieces of the game. For each iteration, Charlie’s team maps the process they will use. The team examines the process and eliminates waste, removing unnecessary steps and reducing delays.The team uses the improved process to complete the iteration.
At the end of each iteration, the team checks if the improved project process worked better and starts the next iteration using the successful changes. This cycle of plan-do-check-act continues, increasing project efficiency until the final game is delivered.
Extreme Programming (XP) & Crystal
Extreme Programming, or XP, is an approach specific to software development that amps up the speed of product release to every one to three weeks.
XP is unique among other software development methods because it specifies engineering practices. Let’s see how Charlie’s team can use XP to develop the new game.Charlie’s team starts gathering requirements for the new game by having the customer describe the features in short user stories. Charlie combines all the user stories to develop a release plan for the entire game.To deliver working iterations of the software, Charlie develops an iteration plan. It breaks down the release plan into objectives that can be completed in one to three weeks. The software developers write the test plan for each iteration as a final planning activity.
The team starts coding the software, using pairs of developers at a single computer to work together. The old adage ‘two heads are better than one’ is true here. Two programmers working together produce a higher quality software the first time around. The code is sent for unit testing, again using paired programming. During the iteration, the team holds a daily meeting to ensure there are no roadblocks to completing the day’s tasks.
Once the code is written and tested, the software is released to the customer for acceptance testing. User stories are reviewed and prioritized, and the project team begins the next iteration plan. The team continues working through all iterations until the final software is delivered.Now, let’s learn about crystal. Crystal isn’t a single method, but a family of methodologies that focus on frequent delivery.
However, crystal avoids processes whenever possible and relies on individual contributions to ensure project success. Let’s take a look at how crystal might be used with the same software game project.Charlie’s company has extensive processes, and he thinks they are getting in the way of project success. He decides to try a new approach.
While developing the game, Charlie will use only processes that add value to the project.Stealing a page from scrum, Charlie holds a daily stand up meeting instead of a weekly meeting typical of his company. In the daily meeting, Charlie ensures the team is aware of project changes and resolves roadblocks to completing tasks. Halfway through the project, the team finds that daily meetings are too frequent, so Charlie reduces the frequency of the meeting.
Dynamic Systems Development Method
Dynamic systems development method (DSDM) uses a phased approach to break down a project into smaller parts that can be delivered in iterative cycles.
Let’s look at DSDM with the new software game project.Charlie has been involved with this effort since the pre-project phase. He helped the company identify the project, obtain funding, and ensure leadership commitment.During the next two phases, the feasibility study and business study, the Charlie’s team determines if the project can be done and gathers requirements from the stakeholders, the development department, and a sample of gamers.
The next three phases are the project execution, which is done in iterations to develop working pieces of the game. The team builds several functional models that address different requirements, then integrates them into a working game design and begins implementation. The team continues working in iterations until the game is fully built.The final stage of the project is the post-project phase.
The team ensures the game operates properly, fixes any software bugs, and gains final acceptance.
Feature Driven Development (FDD)
Feature driven development (FDD) is another phased approach software development agile method. FDD uses a more traditional approach in the beginning of the project, then an iterative approach to develop the requirements, called features. Let’s see FDD in action with Charlie’s team.Charlie starts by developing an overall model to establish scope.
Next, the team builds a features list, an extensive list of all features the game will have. Finally, Charlie’s team creates a development plan that lays out the order features will be developed and tested.The next phase of an FDD project is the iterative design, build, and test of the features in two-week timeframes. The iteration is provided to the customer, who provides feedback that is added to the features list. This iterative cycle is repeated until the entire game is developed.
Agile is an umbrella term over several project management approaches characterized by using incremental work packages.
Agile includes scrum, lean, extreme programming (XP), crystal, dynamic systems development method (DSDM), and feature driven development.