Waterfall methodology refers to software development methodology that focuses on extensive improvements delivered in longer intervals. It is in contrast to agile software development, which targets incremental releases at shorter intervals.
Waterfall development has the traits of being highly structured and inflexible. This methodology occurs when each stage of development depends on and requires the product generated by the previous stage of the process. For example, software architecture design gets paused until the requirements documents come through. Consequently, software development cannot start unless software architecture design completes.
Due to its linear flow with discrete stages and milestones, it is often the de-facto methodology in most software development processes. Waterfall methodology is well suited to projects with precise requirements, firm scope, and stable technologies.
Since the waterfall method flows mainly in a single direction rather than having feedback loops, there is a significant focus on reaching a higher level of fidelity in each stage. Making changes in an earlier stage becomes very expensive after software moves to the later stages. This fidelity reflects in highly detailed documentation produced in each step of the waterfall process. Documentation produced during each stage acts as a guide for the next stage.