Traditional software development methodology relies on strictly defined project requirements in order to plan, develop and execute a software project. Sometimes called the "Waterfall" method, this methodology is rapidly losing favor among small-to-medium-sized enterprises (SMEs) due to the rigidity and inflexibility of the methodology in terms of handling shifting project goals or deliverables. In the Waterfall process, each stage of the development cycle is contingent on its previous step, this means that if a functional requirement is changed late into the development process, the project will need to be returned to the planning stages to incorporate these changes. While this approach is well disciplined, when a project is inflexible to changes, the cost to change goes up considerably.
Instead, many SMEs are increasingly reliant on a flexible form of software development known as the "Agile" method. Whereas the Waterfall process prioritizes requirement documents, the Agile process prioritizes value and functional requirements. Unlike the Waterfall process, the Agile process is an ongoing iterative development process that allows for shifting project requirements, and in doing so lowers the cost of development by maximizing the functionality of deliverables. It's for these reasons that we use an agile methodology to approach all of our projects.