For decades software has been developed largely using a serial, "waterfall" method where projects progress through sequential stages: requirements analysis, design, implementation, testing, integration, and maintenance. This methodology has also been called "Big Design Up Front" (BDUF) and tenets include heavy planning up front (which in theory reduces effort and risk later on) and heavy documentation. There has been a growing movement to revise this development paradigm to reduce the inherent risk of waterfall development -- the fact that requirements do (and should) change throughout the life of the project, so trying to cement a predictive list of requirements up front invites issues later in the project. This new "Agile" approach to software development stresses iterative developments, timeboxed projects, and other innovations described below.