XP development cycle consists of two phases one is ‘Release Planning’ and the other is ‘Iteration Planning’. In release planning we decide what should be delivered and in which priority. In iteration planning we break the requirements in to tasks and plan how to deliver those activities decided in release planning. Below figure ‘Actual Essence‘ shows what actually these two phases deliver.
Figure: - Actual Essence
If you are still having the old SDLC in mind below figure ‘Mapping to Traditional Cycle’ shows how the two phases map to SDLC.
Figure: - Mapping to Traditional Cycle
So let’s explore both these phases in a more detailed manner. Both phases “Release Planning” and “Iteration Planning” have three common phases “Exploration”, “Commitment” and “Steering”.
Figure: - XP Planning Cycle
Release Planning
Release planning happens at the start of each project. In this phase project is broken in to small releases. Every release is broken down in to collection of user stories. Now let’s try to understand the three phases in release planning.
• Exploration: - In this phase requirement gathering is done by using user story concept (Please read the previous question on user story to understand the concept of user story). In this phase we understand the requirement to get higher level understanding. Please note only higher level. User story card is size normally 3 X 5 inch, so you can not really go detail in that size of card. We think it’s absolutely fine rather than writing huge documents it sounds sense to have to the point requirement paragraphs. So here is a step by step explanation of how the exploration phase moves :-
o So the first step is user writes the story on the user card.
o Once the story is written the developer analyzes it and determines can we estimate the user story?. If the developer can not estimate then it’s again sent back to user to revise and elaborate the user story.
o Once the user story is clear and can be estimated, ideal day or story (read about story point, ideal day and estimation in the coming questions) are calculated.
o Now its time to say the user, ok we can not deliver everything at one go, so can you please prioritize. So in this phase the end user gives ranking to the user stories (In the next section we will deal with how a user story is ranked).
o Once the user is done with story prioritization, its time to calculate velocity determination (In the coming section we have one complete question on velocity determination).
o Agile is all about accepting end customer changes. In this phase we give a chance to the end user to decide if they want to change anything. If they want to change we again request the user to update the story.
o If everything is ok we go ahead for iteration planning.
Below figure “Release planning” shows the above discussed steps in a pictorial format.
Figure: - Release Planning
Iteration Planning
Iteration planning is all about going deep in to every user story and breaking the same in to tasks. This phase can also be termed as detailing of every user story. Iteration planning is all about translating the user story in to task. Below are the steps in details for iteration planning:-
• User stories which need to be delivered in this iteration are broken down in to manageable tasks.
• Every task is then estimated. The result of the estimation is either ideal hours or task points (we will discuss about task point and ideal hours in the coming section).
• After the tasks are estimated we need to assign the task to developers. Each programmer picks a task and own responsibility to complete the task.
• Once he owns the responsibility he should estimate the same and commit to complete the same.
• In XP on any development task two developers should work. In this phase the developer makes partner of his choice for developing this task.
• In this phase we do designing of the task. We should not make lengthy and comprehensive design plans; rather it should be small and concentrated on the task. In traditional SDLC we have full devoted phase for designing and the output is a lengthy and complicated design document. One of the important characteristic of a software project is that as we come near execution we are clearer. So it’s best to prepare design just before execution.
• Now that you and your partner are familiar with the design plan its time to write a test plan. This is one of the huge differences as compared to original traditional SDLC. We first right the test plan and then start execution. Writing test plans before coding gives you a clear view of what is expected from the code.
• Once the test plan is completed its time to execute the code.
• In this phase we run the test plan and see that if all test plan pass.
• Nothing is perfect it has to be made perfect. Once you are done with coding, review the code to see if there is any scope of refactoring (Refactoring is explained in more depth in the coming sections).
• We the run the functional test to ensure everything is up to the mark.
Figure: - Iteration Planning
One of the important points to realize is project is broken down in to set of releases à which is further analyzed using short user stories à user stories are further broken in to task ,which is estimated and executed by the developer. Once one release is done the next release is taken for delivery. For instance the below project shown in figure ‘Release, Stories and Task’ has two releases one and two.
Figure: - Release, Stories and Tasks