Difference Between Waterfall and Agile

Waterfall methodology is a software development methodology that is based on sequential-linear approach of software development. It reinforces the notion of "define before design" and "design before code".
Whereas agile is based on increamental-iterative approach where requirements are expected to change frequently.

1. Waterfall methodology is sequential and linear. Agile methodology is increamental and iterative.
2. Requirements have to be freezed at the beginning of SDLC. Requirements are expected to change and changes are incorporated at any point.
3. Working model of software is delivered at the later phases of SDLC. Working model is delivered during initial phases and successive iteration of the model are delivered to the client for feedback.
4. It is difficult to scale-up projects based on waterfall methodology. Scaling up of products is easy because of the iterative approach.
5. Customers or end user doesn't have a say after the requirements are freezed during the initial phases. They only get to know the product once it is build completely. Frequent customer interaction and feedbacks are involved in agile methodology.
6. Waterfall requires formalized documentations. In agile documentation is often negelected and a working prototype serves as basis for customer's evaluation and feedback.
7. Testing is performed once the software is build. Continous testing is performed during each iteration.