Касательно waterfall. Если коротко и прямо, то есть наивно-бытовое понимание waterfall, в котором мы имеем четкие этапы со сроками и последовательностью выполнения. Есть его методы его реального и эффективного применения от контринтуитивного RAD, который требует высокой квалификации от разработчиков, до UP, который требует высокой квалификации от руководителя проекта.
Чего мы имеем в классическом waterfall. Вы делаете оценки, выстраиваете последовательность работ и по взаимосвязи задач выделяете критический путь. Получаете жесткую систему, которая может быть эффективно выполнена, если оценки верны, а условия задачи неизменны.
В реальной жизни, оценки — вещь неточная. Если проект идет полгода, будут приходить уточнения, важные причем. Люди будут болеть, увольняться, разводить и прочие. Даже не смотря на то, что в оценки задач вы включали буфер руководителя проекта, критический путь будет скакать по проекту и выбиваться из рук. И где-то через месяц-два план проекта будет лучше перестроить. С учетом того, что кто-то опоздал, где-то сработали риски и так далее.
Конечно, если это не что-то, что эта команда делает раз в 20 по одному и тому же пути.