Software development methodology is a well thought-out approach on the policies and procedures that are used to plan and manage the progress of any software application. Some of the common software development models are the waterfall model, the evolutionary model, the spiral model, and the iterative development model.
A few of the models are explained below:
This model is made up of various phases where the emphasis is on a completing a phase of the development before proceeding to the next phase. Once a phase is completed, a certain baseline is set after which there is no point of return to that phase. If any change has to be made to an earlier phase, a formal change process is followed to make the change. The graphic representation of these phases in software development resembles the downward flow of a waterfall, hence the name. The phases in this model are requirements gathering, design, coding, testing and maintenance.
As the name suggests, the various phases in this model can be organized like a spiral. The spiral has many cycles. Each cycle in the spiral begins with the identification of objectives for that cycle and the different possibilities for achieving those objectives. An important feature of the model is that each cycle of the spiral is completed by a review, which covers all the products developed during that cycle, including plans for the next cycle. The spiral model works for developed as well as enhancement projects.
Agile software development is an umbrella term for a collection of development methodologies that focus on adaptability over predictability. Projects tend to be separated into smaller, more manageable phases that can be quickly completed (e.g. within one to four weeks) and then either released into production or expanded upon with additional initiatives in a continuous fashion.
Each phase or iteration involves a team going through a complete software development cycle including analysis, design, coding and testing. This helps minimize overall risk, and lets the project adapt to changes quickly. Not all iterations require a release to occur, but the aim is to have an available release (with minimal bugs) at the end of every one of them. There may be multiple iterations required to release a product or some new features.