In the past, process models were required only to ensure that projects were completed according to the constraints set out in the initial plan. While the Waterfall model achieved this aim, it was found to be too linear for most large projects, and is now considered to be suitable only when applied to smaller projects. As popularity began to shift to the more iterative Spiral model, the aim of process models began to change towards providing a more flexible structure. This has culminated in the minimal structure of modern agile models such as Extreme Programming. Agile process models are still developing, however (Beck, 1999); this is clear from the problem of a typically shorter lifespan for software developed using agile methods. Therefore, the future of software models will need to involve models that are flexible enough to allow change, whilst still being structured enough to permit the composition of strong design documentation, all while still providing development teams a means of staying within budget and deadlines.