Agile Software Development Process
Agile methodology has small box iterations rather than phases. The output of each iteration will be production deliverable and could be evaluated to get early feedback. Agile development needs continuous enhancement in the development process to improve software quality. It’s not a one time process but an iterative process which keeps improving across the organization.
Note: Successful agile development depends purely on motivated developers and business users who understand the benefits of agility with great interest
Typically, agile development breaks the work into a series of releases and each release is a cycle of iteration and each cycle of iteration has a set of features.
Agile planning is for reviewing what work needs to be done in each cycle (release / iteration). This is the time for the product owner to describe what he wants to see in each cycle:
- Release planning: It contains a set of features for each release. The product owner will be responsible for release planning and create the release plan before staring the release.
- Iterative planning: The development team will be responsible for identifying the work that needs to done before staring the starting the next iteration. This can be achieved by daily standup meetings.
Tools: There plenty of tools available for Agile planning below:
- ThoughtWorks Studios' Mingle <http://www.thoughtworks-studios.com/mingle-agile-project-management>
- Extreme Planner <http://www.extremeplanner.com/>
Create User Stories
User story is the short description of features/functionality. Features could be combinations of many stories. User stories are very simple and easy to understand which can be written in few lines within few minutes. Please note that project stockholders or business domain users write the user stories, not the developers.
As per “Mike Cohn” suggestion (in User Stories Applied) user story could follow the format as below:
As a (role) I want (something) so that (benefit).
E.g. As a user, I want to search for my customers by their first and last names
Tools: The best approach is to use index cards to write the stories. There various tools come for story mapping and tracking such as :
- SilverStories <<http://toolsforagile.com/silverstories/>>
- Pivotaltracker <<http://www.pivotaltracker.com/>>
Note: Please note that story writing is not one time it is recursive activity involve during across the project development cycle
Estimate Your Work:
Estimation in agile is to guessing how complex the feature would be and assumed the time based on past experience in completion of similar complex features. It is ongoing process which keeps improving the guessing on based on prior experience and pattern learning.
Mostly story could be estimated in points not in time. Points explain the what is the complexity of the story represent in number (1,2,3, and so on)
Estimation is good for better business decision and defining scope of release or iteration. For instance we can easily distribute the equal number for stories in each iteration/release.
As per below figure we define the estimation or size of story based on 4 parameters: No time, No deadline, Not detailed, Pattern learning)
Planning Poker<< http://www.planningpoker.com/>> is best technique to define and refine your estimate
Stand-up meeting is daily short meeting between development team to briefly describe what I completed yesterday, what I am going to complete today and current status on assigned task. Occasionally business user and domain expert could also join the meeting as well which give more visibility and confidence to them.
It is not status meeting its just to give everybody a rough idea of where the team is which give more visibility and coordination across the team and give right direction for the day plan.
Tools: I feel Whiteboard is very effective for stand up meeting
Monitor your Project
Velocity is an extremely simple, powerful method for accurately measuring the rate at which development teams consistently deliver business value. Velocity is a measure of productivity that project managers sometimes use in Agile software development. You calculate the velocity by counting the number of units of work completed in a certain interval, which is determined at the start of the project.
To calculate velocity , end of each iteration, the agile team looks at the requirements it has finished and adds up the number of story points associated with those requirements. The total number of completed story points is the team’s velocity, or work output, for that iteration. After the first little iteration, you’ll start to see a trend and will be able to calculate the average velocity
Tools: Below are some tools could be used to track the velocity
- TargetProcess<< http://www.targetprocess.com/>>
- Pivotaltracker <<http://www.pivotaltracker.com/>>
- Timetracking << http://slimtimer.com/>
Burndown report is another metric to track the measure project progress. Burndown reports track the number of points completed and are used for monitoring single iterations, releases, and the entire project backlog. Burndown reports show progress, reflecting both the value delivered (in points) and the team’s velocity
Tools: Below are some tools could be used to measure Burndown reports
- TargetProcess <<http://www.targetprocess.com/Product/agile_tour.aspx>>
- XPlanner <<http://xplanner.codehaus.org/>>
- Pivotal Tracker <<http://www.pivotaltracker.com/>>
- ScrumWorks <<http://danube.com/scrumworks/basic>>
In this article I explained about the key agile process and what are the some of the tools could be used.