Agile Software Development

Agile software development is a family of development processes based on a set of principles which align well with existing practice and culture in EOL.

Our software development projects, particularly those that emphasize iteration and evolving scientific requirements and instrumentation, may benefit from adopting aspects of the agile software development methods. As examples, releasing working software early and throughout the development process allows users and domain experts to give continuous, valuable, and relevant feedback. This encourages the exchange of new ideas, a cooperative and interactive software development environment, and should result in the creation of valuable and useful software. Test-driven development emphasizes writing tests first, which helps to clarify purpose and verify that software works as expected.

Agile software development is a people-oriented, collaborative development approach with the flexibility to respond quickly to changes. The Agile methodology family includes techniques such as Extreme Programming (XP), SCRUM (project management framework), LEAN, Feature-Driven development (FDD), Test-Driven development (TDD), and Dynamic Systems Development Method (DSDM). There are many options and no specific engineering practices are prescribed.

Agile Software Development process ideas are based on the Agile Manifesto and its associated basic principles (www.agilemanifesto.org).