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 Development Methodology
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.
- Extreme Programming (XP) – It is a set of best practices of which some are taken to an “extreme” level. As with other agile methods, XP regards ongoing changes to requirements as an expected and desirable aspect of software development. Each and every feature of the final product is individually scrutinized for cost and development time by the client and the development team. The client then chooses the features that will be included in the next release based on a cost-benefit analysis. The major advantage of this approach for small to medium-size systems is that it works when the client’s requirements are vague or change continuously. The highlight of this development model is its flexibility because it can work in the face of a high degree of requirement uncertainty on the user’s part. XP is often seen as complementary to Scrum, filling most of the holes that Scrum leaves wide open. The life cycle of XP consists of five phases: Exploration, Planning, Iterations to Release, Productionizing Maintenance and Death.
- Scrum – The term Scrum originally comes from rugby where it signifies a strategy to get an out of play ball back into the game with teamwork. Scrum is more or less a skeleton that includes a small set of practices and predefined roles. It concentrates on the management aspects of software development, dividing development into thirty day iterations (called ’sprints’) and applying closer monitoring and control with daily scrum meetings. This also means that Scrum by itself is never enough as it places much less emphasis on engineering practices and that development teams have to combine its project management approach with other additional practices such as XP’s engineering practices.