A traditional (waterfall) software development approach provides a highly structured and linear design process that relies heavily on detailed up-front planning where each phase must be completed before moving sequentially on to the next one.
One main disadvantage to this approach is there is no realization of any business value until the end of the project. In addition, you will rarely (if ever) return to a phase once it is complete. Therefore, there is only one opportunity to get it right and there is usually one large product integration at the end of a project. This type of big bang project delivery approach can increase risks and can lead to a product that does not meet system requirements.
In contrast, agile utilizes an iterative and incremental framework for delivery where each iteration delivers a fully functioning increment of software. Basically, iterative development allows time for improving on what has already been developed, while incremental development breaks up the work into smaller chunks as they are integrated and adjusted as needed.
Rather than just continuing on with developing the next cycle of a product without feedback, an agile team will elicit customer response to software as it is delivered. This provides a powerful inspection and adaption loop for future product iterations and increments while reducing project risks and increasing customer satisfaction.