Complex software projects rarely end the way they are initially planned. In large
projects, requirements often change during the course of development. Development
processes must, therefore, be structured in an agile manner that allows changes
even during development. Agile software development is defined by flexible processes,
which can integrate changes at any point during the development process.