Introduction

This article is a quick FAQ of Agile. By reading this you will understand fundamentals of Agile and different ways of implementing Agile.

What does Agile mean?

Dictionary meaning of Agile is quick moving. Now how does that apply to software? Agile development methodology considers software as the most important entity and accepts user requirement changes. Agile advocates that we should accept changes and deliver the same in small releases. Agile accepts change as a norm and encourages constant feedback from the end user.

Figure: - Agile

Below figure shows how Agile differs in principles from traditional methodologies.

Figure: - Change of Agile thinking

Below are principles of Agile methodology:-

Can you explain Agile modeling?

Agile modeling is an approach to the modeling aspects of software development. It's a practice for modeling and documentation for software systems. In one line

It's a collection of best practices for software modelling in light-weight manner.

In abstraction we can say it augments other software processes. For instance let's say your company is using UML and then Agile applies approach practices on UML.For example "Keep things simple" is Agile approach. So it means that we do not need to use all diagrams in our project, use only which are needed. If we summarize then in one word we can say Agile modeling says "Do only what's needed and nothing more than that".

Figure: - Agile Modeling

What are core and supplementary principles in Agile modeling?

Agile modeling defines set of practices which can show us the way towards becoming successful Agile modelers. These practices are divided in to two sections one the "Core Principles" and other "Supplementary Principles". Below figure 'Agile Model Principles' shows the same in a pictorial format.

Figure: - Agile Model Principles

Let's understand one by one what those principles mean.

Core Principles

Supplementary principles

What is the main principle behind Agile documentation?

The main deliverable in Agile is a working software and not documentation. Documentation is a support to get the working software. In traditional delivery cycle lot of documentation where generated in design and requirement phase. But we are sure many of documentation where either created just for the sake of it or it was just created. Below are the some of the key points to make documentation Agile:-

Figure: - Agile documentation

What are the different methodologies to implement Agile?

Agile is a thinking approach to software development which promises to remove the issues we had with traditional waterfall methodology. In order to implement Agile practically in projects we have various methodologies. Below figure 'Agile Methodologies' shows the same in more detailed manner.

Figure: - Agile Methodologies

Note: - We will cover each methodogly in detail in the coming sections.

What is XP?

Extreme Programming (also termed as XP) is an agile software development methodology. XP focuses on coding of the software. XP has four core values and fourteen principles.

XP has four core values:-

From the above four core values 14 principles are derived. Values give a broader level view while the 14 principles go deep in to how to implement XP.

What are User Stories in XP and how different are they from requirement?

Use story is nothing but end users requirement. What differentiates a user story from a requirement is that they are short and sweet. In one sentence they are just enough and nothing more than that. User story ideally should be written on index cards. Below figure 'User Story Index Card' shows the card. Its 3 x 5 inches (8 x 13 cm) card. This will keep your stories as small as possible. Requirement document go in pages. As we are keeping the stories short its simple to read and understand. Traditional requirement documents are verbose and they tend to loose the main requirement of the project.

Note: - When I was working in a multinational company I remember first 50 pages of the requirement document having things like history, backtracking, author of the document etc. I was completely drained till I started reading the core requirement.

Every story has a title, short description and estimation. We will come to the estimation part later.

Note: - Theoretically it's good to have cards, but in real scenario you will not. We have seen in actual scenario project manager keeping stories in document and every story not more than 15 lines.

Figure: - User Story Index Card

Who writes User stories?

It's written and owned by the end customer and no one else.

When do we say a story is valid?

Story is valid if it can be estimated.

When are test plans written in XP?

Test plans are written before writing the code.

Can you explain the XP development life cycle?

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 :-

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:-

Figure: - Iteration Planning

One of the important points to realize is project is broken down in to set of releases a 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

Can you explain how planning game works in Extreme Programming?

The above question answers the question.

How do we estimate in Agile?

If you read the Agile cycle carefully (explained in the previous section) you will see Agile estimation happens at two places.

Estimation happens at two levels one when we take the requirement and one when we are very near to execution that's at the task level. This looks very much logical because as we are very near to complete task estimation is more and more clear. So task level estimation just comes as a cross verification for user story level estimation.

Figure: - Agile Estimation

User Story Level Estimation

Estimation unit at user story in Agile is either "ideal days" or "Story points".

Ideal days are nothing but the actual time the developer spent or will spend on only coding. For instance attending phone calls, meetings, eating lunch and breakfast etc are not included in the ideal days. In old estimation technology we estimate eight hours as the complete time a developer will do coding. But actually a developer does not code continuously for eight hours, so the estimates can be very much wrong if we consider the full eight day hours.

Estimation units can also be represented in story points. Story Points are abstract units given to represent the size of the story. In normal scenario one story point equals to one ideal day. Story point is a relative measure. If one story is one story point and the other is two story points that means the second story will take twice the effort as compared to the first story.

Velocity determination defines how many user stories can be completed in one iteration. So first the user decides the length of the iteration. Length of iteration is decided depending on the release dates. Velocity is normally determined from history. So what ever was the last team history velocity same will be used in the further estimation. But if there is no history then the below formulae will be used:-

Figure: - Velocity Determination

There are two formulas in the above figure the first formula is used when we do not have history about the project and the second formulae is when we have a history of the iteration. Below are the details of all the parameters in the formulae:-

Below figure 'Iteration and Release calculation' shows a simple sample with a team size of 5, load factor of 2, one iteration takes 11 business days and there two releases in the project.

Figure: - Iteration and Release calculation

Task Level Estimation

As the Agile cycle moves ahead user story is broken down in to task and assigned to each developer. Level of effort at the task level is a form of Task points or Ideal hours. Ideally one task point represents one ideal hour. Ideal hour is the time when developer spends only on coding and nothing else.

Individual Velocity determination defines how many how many ideal hours a developer has within one iteration. Below figure 'Individual Velocity Calculation' shows in detail how to get the number of ideal hours in iteration for a developer. Below is a sample calculation which shows with 8 hours a day , iteration of 11 days and load factor of 2 ( i.e. developer code for only 50% time i.e. 4 hours) , we get 44 ideal hours for developer in that iteration.

Figure: - Individual Velocity Calculation

On What basis can stories be prioritized?

User story should normally be prioritized from the business importance point of view. In real scenarios this is not the only criteria. Below are some of the factors to be accounted when prioritizing user stories:-

  • Prioritize by business value: - Business user assigns a value according to the business needs. There three level of ratings for business value:-
    • Most important features: - With out these features the software has no meaning.
    • Important features: - It's important to have features. But if these features do not exist there are alternatives by which user can manage.
    • Nice to have features: - These features are not essential features but rather it's over the top cream for the end user.
  • Prioritize by risk: - This factor helps us prioritize by risk from the development angle. Risk index is assigned from 0 to 2 and are classified in three main categories :-
    • Completeness
    • Volatility
    • Complexity

Below figure "Risk Index" shows the values and the classification accordingly.

Figure: - Risk Index

Can you point out simple differences between Agile and traditional SDLC?

Below figure "Agile and Traditional SDLC" points out some of the main differences. If you have worked practically on both these you can point out more differences.

Figure: - Agile and Traditional SDLC

Continue to next part >>