Emerged in late 1990s, aim to reduce delivery time for working software systems.
- Specification, design, implementation and testing are inter-leaved.
- Outputs from development process are decided through negotiation during software development.
- System is developed as a series of increments.
- Frequent delivery of new versions for evaluation.
- Extensive tool support (e.g. automation)
- Focus on working code (minimal design / documentation)
Principles of Agile:
- customer involvement: customers should be closely involved through the development process
- incremental delivery: software developed in increments; customer specifies requirements for each increment
- people not process: recognise and exploit skills of development team; leave team members to develop their own ways of working; no prescriptive processes
- embrace change: expect system requirements to change; design system to accommodate future changes
- maintain simplicity: focus on simplicity in both software and development process; actively work to eliminate complexity from system
Agile applies where:
- We are developing a small or medium-sized product.
- There is a clear commitment from customer to become involved in the development process.
- Where there are few external rules and regulations that affect development.