An approach to project management that uses a sequential development process in a top to bottom approach that flows like a waterfall through all phases of a project. Typical phases in a waterfall approach include: requirements, analysis, design, coding, testing, and deployment. Waterfall approaches are best suited to complicated processes that do not require an Agile approach, such as large engineering projects, construction projects, or other projects with well-defined steps that flow in a determined order with little variability. Waterfall is usually considered to be an opposing approach to Agile methodologies.