Agile Software Development is said to be today’s methodology. The modern definition was started around 1990. It is pretty an old term now but would like to say something about it since it is now a big trend in Software Industry. I hope this will be good for beginners at least.
Agile Software Development is a set of software development methodologies. Well, it is based on iterative development process. In this process the needs (requirements) and collaboration (from client to developer basically) work together. Agile model is successful in most cases since the project management process is always monitored in all directions. A set of best practices in software engineering is the base.
Well the concept of this method is still developing though its Agile Manifesto and is considered to be non ending. There are many agile development methods. Most of such methods try to promote iterations, team work, collaboration and process adaptability though out the life of a project.
These methods break tasks into small increments with minimal planning. Iterations last usually between one to four weeks only. A full software development process is conducted for each iteration. (i.e., planning, requirement analysis, design, coding, testing etc.). Each iteration will be demonstrated to the respected people (eg: clients). The plus point of this process is the customer can identify “is this what I need” and the development team can reduce overheard by identifying the issues at the beginning itself. It is helpful for the customers (or customer representatives) to add changes quickly as the new change will not affect the whole development process like in old days.
Communication have a big role in this process. It forces face-to-face communications or or videoconferencing (or similar technologies) if possible on daily basis itself. Written documents are also important.
Below is a very basic figure for your understanding:
To improve the quality of output methods like continuous integration, TDD (Test Driven Development), Design Patterns, Code Refactoring etc. are also used.
There are merits as well as demerits exists for Agile method. But the full explanation of Agile Software Development is certainly out of scope of this post. So I halt.