Continuing on the subject of Agile development -
Agile, makes the assumption that neither customers nor software producers have a full understanding of what needs to be built. Contrast this with the traditional approach where the aim is to have the requirements defined and signed-off at the beginning of the software development lifecycle.
Agile projects involve learning through the project, leading to changes in requirements and how the system gets built. While traditional models are about "controlling" and "mitigating" change, agile introduces a different paradigm of accepting and accommodating changes. Traditional models involve extensive planning and regular monitoring to minimize deviations. Any such deviations are viewed as undesirable and attempts are made to get conformance of actual observed results to plan. In an agile model, any deviations from plan are treated as sources of additional information that help modify the plan to conform to reality.