Agile software development is a model for development of information technology systems based on iterative and incremental development, based on feedback from the clients. In this methodology the requirements and solutions evolve through collaboration between self-organizing, cross-functional teams who work in close liaison with the clients.
Indeed this methodology highlights how close interactive relationship with the customers promotes better understanding of the requirements and better achievement of the solution iteratively. You may want to look into understanding ALM tools in order to better grasp what Agile software development can do. It promotes evolutionary development, adaptive planning and encourages rapid and flexible response to change.
Although the methodology was conceived in the early 1990s, it started gaining in popularity after 2001 when the methodology started getting adopted in research laboratories of major technology companies. Generally speaking Agile software development is more suitable for products and less for services. Even amongst products, Agile software development methodologies are more suitable for smaller to medium sized products. Ideally development teams for such products have a size ranging from 5 members to 20 or 30 members, although, instances were noted when the methodology was successfully used with a team of 100 members.
Some of the more popular Agile methodologies are as follows:
- Agile Modeling
- Agile Unified Process (AUP)
- Dynamic Systems Development Method (DSDM)
- Essential Unified Process (EssUP)
- Extreme Programming (XP)
- Feature Driven Development (FDD)
- Open Unified Process (OpenUP)
- Scrum
- Velocity tracking
A major difference of Agile methodologies from the Systems Development Life Cycle (SDLC), or software development life cycle models is that the requirements from the client is collected iteratively and in an evolutionary manner. In contrast, in the SDLC methodologies, each stage, including the requirement analysis stage, needs to be completed and finalized, before moving on to the next stage.
Also, another major difference of Agile methodologies from the Systems Development Life Cycle (SDLC) is that the degree of documentation done is typically a lot lesser. Because of smaller team size, extensive informal communication makes high quality software development feasible. But it would be difficult to ensure high quality in larger projects, due to this methodological limitation, which is mostly made by choice to ensure faster delivery of software projects.
The Agile methodologies focuses on different aspects of the software development life-cycle. Some focus on the practices (extreme programming, pragmatic programming, agile modeling), while some focus on managing the software projects (Scrum). There are also methodologies which have a focus on all the stages of the SDLC (DSDM, RUP), although most are tailor cut for the requirements specification phase (e.g. FDD).
Hope this short and simple note is sufficient for an introduction to Agile software development methodologies. Do let me know if you need any more information.
The Agile methodologies focuses on different aspects of the software development life-cycle. Some focus on the practices (extreme programming, pragmatic programming, agile modeling), while some focus on managing the software projects (Scrum). There are also methodologies which have a focus on all the stages of the SDLC (DSDM, RUP), although most are tailor cut for the requirements specification phase (e.g. FDD).