This article is an overview of agile development basics, including common terms and processes, used during the agile development process. The overview will help engineers understand the agile elements and stages and have a basic understanding of how the agile process identifies and then delivers a work product.
This is an important overview for engineers that want to understand and communicate effectively with their software counterparts in teams that are employing agile processes such as in partner groups or customer teams.
Agile is set of development methods and recommended processes that strive to deliver higher-quality, ‘shippable’ products through iterative and incremental cycles.
Agile development emphasizes on-going evaluation of features to be built, constant streams of feedback, daily interaction, cross-functional teams and self-selection of work items.
The Agile Manifesto, written in 2001 by agile method pioneers, outlines the importance individuals, interactions, working software, collaboration with customers and responsiveness are to the methodology.
The Agile Manifesto reads, in its entirety, as follows:
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.”*
*Agile Manifesto Copyright 2001: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn,
Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern,
Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
This declaration may be freely copied in any form, but only in its entirety through this notice.
Agile development benefits from working, ‘shippable’, product at the end of each iteration. The work product at the end of each iteration has undergone continuous testing and feature iteration and is ready for production use. Product owners and stakeholders are able to build upon working pieces from each iteration and quickly prioritize features for the next iteration without delay.
A total understanding of the work at hand and constant communication with development, stakeholders, product owners and quality assurance provides cost-savings as expensive delays and testing mishaps are avoided.
The agile life-cycle begins with stakeholders and product owners determining what features are possible candidates for inclusion in the product. Product managers leverage stakeholder input to write epics, epics are large user stories that need to be broken down into smaller pieces of work. After an epic is broken down into stories, the stories are prioritized and maintained in a backlog. The backlog is an aggregate of stories pending inclusion in an iteration.
Release planning, iteration planning and daily planning provide iteration teams with the product features that they will work on during iterations.
During release planning developers make estimates about the level of effort required for stories, define what stories will be included in each period of iteration (periods of iteration are known as ‘sprints’ when using an agile scrum methodology).
Aother work product of the planning phase and pre- develoment are test unit cases, these are small unit tests that are written and completed by a developer before beginning work help to increase the quality and accuracy of subsequent code.
Agile Process Stages
The agile process can be implemented in a variety of customized formats. A hallmark of most implementations is requirements gathering and creation of epics and their resulting stories. These become the cornerstone for release planning.
Iteration planning and the backlog go hand in hand as items are pulled from the backlog to be included in a specific iteration or sprint if using scrum methodology.
Estimation is an important part of always improving the iterative process. In the beginning agile estimates can be off the mark but with good practice of iteration retrospective techniques (see next paragraph for more on iteration retrospective) teams learn to estimate well in time.
As the iteration progresses you may hear the term ‘burndown’, this refers to the stories or tasks that have been accomplished so far in an iteration. Items completed and reflected in burndown reports should be demonstrable and shippable.
Agile Testing, Iteration
Testing is an important part of the agile process. Test driven development means that small unit tests are written and manually run by developers right before development.
Automated unit testing enables tests to be written and then performed by software programs designed to test and provide reporting on the results.
Development in agile is continuous, with shippable code being produced constantly. Testing throughout the process vs. just at the end of development, ensures that the iteration is maximized and errors, issues and bugs are found very early on.
At the end of an iteration there will be an interation review, this review is typically an informal demonstration of the working, shippable, code product accomplished during current iteration.
Another goal marker for each iteration is the iteration retrospective. During the iteration retrospective the entire iteration team inspects it’s process and reviews issues that arose during the iteration. Estimates are compared to actual burndown progress to determine the level of accuracy. every iteration attempts to increase estimate accuracy rates. The review is a time to openly determine what worked and what didn’t. The entire team commits to making changes to improve the next iteration.
Agile implementations and methodologies come in many formats. Your organization or your customer’s may use a very traditional implementation or you may see a hybrid form of scrum being used. Whatever the method, the goal of agile methodlogy, a working, shippable product at each iteration, remains.
There are many sources of information to take your agile knowledge to the next level. Courses and certifications in the various aspects of agile are prolific. You can find more information on agile through the Agile Alliance.
Author: Carol Glennon