Agile methods

  • Dissatisfaction with the overheads involved in design methods led to the creation of agile methods. These methods:
    • Focus on the code rather than the design;
    • Are based on an iterative approach to software development;
    • Are intended to deliver working software quickly and evolve this quickly to meet changing requirements.
  • Agile methods are probably best suited to small/medium-sized business systems or PC products.

Principles of agile methods

Customer involvementThe customer should be closely involved throughout the development process. Their role is to provide and priorities new system requirements and to evaluate the iterations of the system.
Incremental deliveryThe software is developed in increments with the customer specifying the requirements to be included in each increment.
People not processThe skills of the development team should be recognized and exploited. The team should be left to develop their own ways of working without prescriptive processes.
Embrace changeExpect the system requirements to change and design the system so that it can accommodate these changes.
Maintain simplicityFocus on simplicity in both the software being developed and in the development process used. Wherever possible, actively work to eliminate complexity from the system.

Problems with agile methods

  • It can be difficult to keep the interest of customers who are involved in the process.
  • Team members may be unsuited to the intense involvement that characterizes agile methods.
  • Prioritizing changes can be difficult where there are multiple stakeholders.
  • Maintaining simplicity requires extra work.
  • Contracts may be a problem as with other approaches to iterative development.

Agile Manifesto principles

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with preference to the shorter timescale.
  • Business people and developers must work together daily throughout the project.
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Working software is the primary measure of progress.
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.

•Simplicity –the art of maximizing the amount of work not done –is essential.