Agile Software Development

Agile Software Development

Agile approaches to software development consider design and implementation to be the central activities in the software process. They incorporate other activities, such as requirements elicitation and testing, into design and implementation.

The philosophy behind agile methods is reflected in the agile manifesto that was agreed on by many of the leading developers of these methods. This manifesto states:-

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 by following a plan

That is, while there is value in the items on

the right, we value the items on the left more.

The Manifesto for Agile Software Development states that the core values of agile process models are:-

  1. Customer involvement:- Customers should be closely involved throughout the development process. Their role is to provide and prioritize new system requirements and to evaluate the iterations of the system.

  2. Incremental delivery:- The software is developed in increments with the customer specifying the requirements to be included in each increment.

  3. People not process:- The skills of the development team should be recognized and exploited. Team members should be left to develop their ways of working without prescriptive processes.

  4. Embrace change:- Expect the system requirements to change and so design the system to accommodate these changes.

  5. Maintain simplicity:- Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.

Principles Behind Agile Manifesto

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter time scale.

  4. Business people and developers must work together daily throughout the project.

  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

  7. Working software is the primary measure of progress.

  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  9. Continuous attention to technical excellence and good design enhances agility.

  10. Simplicity--the art of maximizing the amount of work not done--is essential.

  11. The best architectures, requirements, and designs emerge from self-organizing teams.

  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

  13. The software itself is the important measure of the team's progress, rather than documentation.

  14. The development team has the autonomy to determine how to structure itself, handle the development work, and apply the process model.

  15. Adaptability to change comes in large part through delivering software incrementally.

  16. Adaptability also comes from frequent delivery, so that customers can more easily examine the software and provide feedback.

  17. The process is tolerant: it is adapted to the development team's needs.

  18. Software is important, documentation less so: this means that design and construction are often heavily interleaved

Example Agile Methodologies

  1. Extreme Programming (Beck)

  2. SCRUM (Schwaber and Beedle)

  3. Lean Software Development

  4. Dynamic Systems Development Methodology

  5. Crystal Methodologies (Cockburn)

  6. Adaptive Software Development (Highsmith)

  7. Feature-Driven Development (Palmer and Felsing)

Advantages

  1. Customer support involvement and customer satisfaction

  2. Strong communication of the software team with customer

  3. Little planning requirement

  4. Efficient design and fulfils the business requirements

  5. Anytime changes are acceptable

  6. Provides a very realistic approach to software development

  7. Update versions of functions software are released everywhere

  8. It reduces total development and deployment time.

Disadvantages

  1. Due to a lack of proper documentation Once the project is complete and the developer is allocated to another project, maintenance of the finished project can become difficulty.

  2. Depends heavily on customer interactions. So if the customer is not clear, the team can drive it in the wrong direction

  3. Not useful in small project development.

  4. Require an expert project member to make crucial decisions in meetings.

This is all about agile software development.