In the modern world of client-facing software development, project requirements can change frequently, or not be fully established at the beginning of a project, so a process is needed that works with this problem to realistically develop software that places the focus on the client. From this process developed a methodology called Agile.

What is Agile Software Development?

Agile is referred to as both a methodology and a philosophy for software development that has become wildly popular in the last decade, even outside the realm of software development.

The agile methodology consists of four values and twelve principles that encompass the spirit of what it means to be an agile development team. These can be found in the <a href="https://agilemanifesto.org/" style="color:inherit;" target="_blank">Agile Manifesto</a> and <a href="https://agilemanifesto.org/principles.html" style="color:inherit" target="_blank">12 Principles</a> respectively.

In summary, agile development follows the rules of:

  • Focus on client satisfaction by frequently delivering software every few weeks.
  • Being flexible to changing requirements throughout the development process.
  • Regular meetings for communicating ideas and reflecting on progress are necessary to maintain team agility.
  • Properly functioning software is the primary measure of project progress.
  • Maximizing the amount of work not done is required; keep the project simple.
  • Creating an environment of support, excellence, and trust to allow team members to get the job done.
  • Self-organizing teams often produce the best work.

Agile Models

The twelve principles outline a general philosophy that describe no SDLC model in particular, but provide a framework for creating agile models. Some popular agile development models include:

  • Scrum
  • Extreme Programming (XP)
  • Kanban
  • Feature-Driven Development (FDD)
  • Crystal
  • Dynamic Systems Development Method (DSDM)

> Some models, such as scrum and XP have existed before the creation of the agile method, but have been grouped into the category due to their close resemblance to the agile values.

Advantages of Agile Development

  • Frequent delivery of software, high customer satisfaction.
  • Designed to be flexible to changing requirements.
  • A focus on people is given higher priority than the underlying processes.
  • Feedback is received quickly from frequent delivery.
  • High attention to detail and creating well-designed software.

Disadvantages of Agile Development

  • Produces less documentation which can be both good and bad, however can create unclear designs.
  • Project can derail if the client does not have a clear vision for their software.
  • Constant meetings can create a time vacuum in development.
  • Requires high expertise to implement properly; inexperienced programmers and managers can quickly lose pace.
  • Developer burnout can occur due to the constant, fast-paced environment.