A step-by-step approach taken to the development of an application. Each step sees the life-cycle of analysis, design, development, testing, installation and review being repeated, each time adding more and more to the application until it is eventually completed