You must have heard many people use the term software development methodology or process. So what exactly does it mean? A software development methodology is a framework that is used to plan and control the process of developing any software or information system. Whether called a method, methodology, or framework, the framework provides a process that can be followed while building a software product from inception to support. Several of these methodologies have come up over the years and gained popularity. The Systems Development Life Cycle or SDLC is probably the oldest of these. (Elliott & Strachan & Radford (2004))
The typical SDLC broadly consists of the following phases:
A need for a product is identified and a proposal is created.
This includes a detailed analysis that results in requirements. Scope of the system is finalized, and the project may be kicked off. Budget and resources are allocated and work begins.
A detailed design is finalized by the team.
The system is developed by the team and is ready for test.
Detailed testing is carried out to ensure the system meets the requirements and is bug free. Approvals are obtained to release the system to customers.
The system is now ‘live’ in production and is sold or made available to the users.
Support includes fixing any issues such as downtime, or any problems encountered by the customers. Enhancements may be suggested for future versions of the product.
The SDLC gave rise to several other popular models or methodologies such as waterfall, spiral, prototyping, V model, RUP etc. Let us have a brief look at some of these –
The waterfall model is a sequential process where different phases occur one by one such as requirements analysis, design, coding, testing, implementation and support. The boundaries between the phases are strongly defined, and the next phase does not begin until the prior one is approved and signed off. The ‘heavy upfront design’ approach used by waterfall may be suitable for large scale conventional projects, but there is also a chance that the product will be outdated by the time it is released.
The spiral model is supposed to be a hybrid of waterfall and prototyping. The development is split up into phases or iterations. The same set of activities occurs in each phase. Design, development and testing are done for the limited scope of each phase and incremental releases are thus possible. The spiral model offers lower risk than the waterfall model since design flaws may be exposed early on.
The V model offers a strongly structured process similar to the waterfall model, but offers shorter feedback loops. One arm of the ‘V’ typically consists of various requirements and design stages. User input is obtained at each phase and changes are made accordingly before proceeding to the next phase.
Rational Unified Process
Popularly known as RUP, this is an iterative framework created by Rational (now part of IBM). RUP contains the building blocks of Who (roles), What ( work ) and How (tasks). RUP consists of four phases – inception, elaboration, construction and transition. Each phase has a milestone that must be met before moving on to the next phase. Many organizations customize the RUP model according to their needs and it has proved to be widely successful.
Agile development is the new kid on the block among software methodologies. It is iterative as well as incremental and very popular in the current times because of its shorter time to market and flexibility. The creation of the Agile Manifesto is now historic. Collaboration and response to change are some of the popular aspects of agile development.
These are some of the popular software development methodologies in use today. We will be discussing agile development in detail in the forthcoming articles.