Friday, June 15, 2012

Agile Software Development: An Overview

The process of software development is a complex process and hence a variety of approaches have been researched over the years to make the process all the more productive and worthwhile, and hence there are two broad schools of thought to realize the process of software development namely, the waterfall method and the iterative methods and agile software development is a subset of iterative methods for software development. Software isn't something that we can think of as static it is constantly changing, the requirements of a software project do change over time as the development progresses hence there is an urgent need for a sound software development model that adapts to the changing requirements and is robust and flexible enough to cater to the current needs of the software developers, and agile software development is one which can be a plausible solution for such situations. Agile methods lay more emphasis on productivity and values over process overhead and artefact.

Martin Fowler recognized as one of the founders of the agile model and methods recognizes the following as some of the principles of agile model which contribute to the robustness of the agile model; Customer satisfaction by rapid delivery of useful software, Welcoming the changing requirements that crop up later in the development phase, Frequent delivery of working software (weeks rather than months), progress is measured using working software , Sustainable development, able to maintain a constant pace, Close daily co-operation between business people and developers, Face-to-face conversation is the best form of communication (co-location), Projects are built around motivated individuals, who should be trusted, Emphasis on technical excellence and good design, Simplicity- The art of maximizing the amount of work not done - is essential, Self-organizing teams, Regular adaptation to changing circumstances. One of the key differences between agile software development model and other software development models is that testing of the software is done at different points in the software development cycle while in conventional software models like the waterfall model testing of the application or software is entirely dependent on the development of application it is only after the development phase of the application is over the testing of the application can be carried out. Agile software methodology brings a plethora of techniques and processes to the table that help software programmers and architects to tailor them for their specific applications and make the process and carry out other sequential phases in a defined order. The model attempts to balance the four variables that are involved in any kind of software project namely Cost, Schedule, Requirements and Quality and has a strong focus on return on investment.

Software developers or architects whatever they may be just enjoy not locking any kind of decisions and like to work in short iterative cycles where they can mould their decisions as the situations arise hence imparting robustness to the project. Processes like Extreme Programming (XP), Essential Unified Processes (EssUP) are some of the cornerstone processes that Agile methodology brings to the table.

Summary:
Agile software development is a subset of iterative methods for software development. Agile methods lay more emphasis on productivity and values over process overhead and artefact.

Author:
As DevLabs Knowledge Sharing Team we create innovative products and solutions for our customers. We have a highly skilled team of product architects, user experience designers and engineers with more than 60 years of cumulative experience in developing and delivering products of various scales in various domains. We are Specialist in Outsourced Product Engineering, Agile Software Development, Mobile App Development, e-Learning Software Development, Java Development.

Your Reviews/Queries Are Accepted