Follow Rinat Abdullin
Main | Cloud Computing »
Saturday
13Jun2009

Agile Software Development

Agile Software Development is an iterative and incremental approach in software development, where requirements and solutions evolve through a tight collaboration of self-organizing cross-functional teams.

Simply put, Agile Software Development is a group of software development methodologies that work quite well when:

  • projects are not mission-critical;
  • business requirements change extremely fast;
  • there are great developers available;
  • development teams are small;
  • development culture and mentality favors self-organization and self-learning.

In other words, Agile works quite well in situations when some unique software project has to be delivered really fast in order to seize the market opportunity. This works because Agile software methodologies allow development teams to adapt quickly to the rapidly changing business requirements. This happens because of:

  • short development iterations allowing to start getting feedback early in the project's life-cycle and incorporate it into the product fast by delivering working software repeatedly and in a timely manner;
  • continuous integration helping to reduce development friction and improve quality of a rapidly developing project in self-organizing environment;
  • feature-driven development focusing development on delivering features (functionality) bringing real business value to the client (and the project);
  • lean software development laying out common principles for efficient software development process;
  • eXtreme Programming pushing lightweight software development methodologies to the extreme.

Long-term planning (along with some other formalities of a totally controlled project management process) is mostly sacrificed in favor of the flexibility, fast delivery and self-organization. In such a situation we still have to maintain high quality of the project deliverables (while reducing the resource consumption). This is achieved with the help from:

  • test-driven development - provides foundation for the Continuous Integration and facilitates change while maintaining stability of the software project;
  • pair programming - improves code quality and allows to have more efficient knowledge sharing.

Related Links:

This article is a part of Software Development Body of Knowledge ABC series. You can subscribe to RSS feed to stay updated.

References (3)

References allow you to track sources for this article, as well as articles that were written in response to this article.
  • Response
    You've been kicked (a good thing) - Trackback from DotNetKicks.com
  • Response
    Search Tags Family and Community Development (4) Maternal and Infant Health (2) Nutrition (2) Extension Learning Farm (2) Sheep Program (1) 4- H Youth Development (2) Uncategorized (1) Archives June 2009 December 2007 October 2007 December 1969 Pages 4-
  • Response
    Regardless if you run the business online or not, the Internet is the most powerful environment for advertising and business promotion. Therefore, when starting a home business you have to take into consideration the importance of creating a good web site to represent your company. Choose to work with a professional ...

Reader Comments (1)

good blog........... allowing to start getting feedback early in the project's life-cycle and incorporate it into the product fast by delivering working software repeatedly and in a timely manner;

July 15, 2009 | Unregistered Commenterrobertclaye

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>