Agile Development
Agile development is a term which describes a software
development process which concentrates focus within a project on
what is core to software development: the writing of working,
maintainable, tested code. Agile development is particularly well
suited to projects with rapidly evolving requirements.
Some of the features of agile development:
- it avoids the use of very long, upfront design phases
- it avoids the use of detailed design documentation,
preferring the use of more lightweight techniques
- it avoids documentation for its own sake. Well-designed code
is often self-documenting, especially when covered by extensive
automated testing
- it prefers short release cycles, with regular customer
feedback
- it encourages development of a restricted set of features
with each iteration, rather than trying to deliver all features
in the first iteration
- it encourages prioritisation of required features. If
progress slips, less critical features can be omitted, rather
than relaxing timescales or allowing quality to be
compromised
- it encourages simplicity of design, with refactoring to introduce complexity as this
becomes necessary
- it aims to minimise the time to delivery of an initial piece
of working software, even if this only covers a subset of initial
requirements
We think an agile development works best for enterprise
software because it allows high developer productivity, is
responsive to change, and lowers project risk.