Software development is not a single process and it is not an one day work. The process of software development takes many steps and a certain period of time to develop. And the steps are not just only about coding. Usually any software development process includes steps like analysis, requirements gathering, designing, coding, testing and implementation.
The above mentioned steps will be done using various approaches. One approach may be a step by step going of each step. One approach may contain a looping kind structure. The various approaches for software development are collectively called Software Development Lifecycle Methods. The most common used SDLC methods are Waterfall, V-Model, Iterative, Agile, Spiral and DevOps.
Waterfall
Waterfall model is widely considered the oldest of the structured SDLC methodologies. It’s also a very straightforward approach: finish one phase, then move on to the next. In this method there is nothing on going back to a phase, once it is completed. Still the method remains a strong solution for certain types of projects, especially government contractors. The major steps involved in the Waterfall model are Requirements, Design, Implementation, Testing and Maintenance.
Advantages
- Simple and easy to understand and use
- Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
- Phases are processed and completed one at a time.
- Works well for smaller projects where requirements are very well understood.
- Clearly defined stages.
- Well understood milestones.
- Easy to arrange tasks.
- Process and results are well documented.
Disadvantages
- No working software is produced until late during the life cycle.
- High amounts of risk and uncertainty.
- Not a good model for complex and object-oriented projects.
- Poor model for long and ongoing projects.
- Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model.
- It is difficult to measure progress within stages.
- Cannot accommodate changing requirements.
- Adjusting scope during the life cycle can end a project.
V-Model
The V-Model can be said as an evolution of the Waterfall methodology. There are many similarities between both models. The v-model has a very strict approach, with the next phase beginning only when the previous phase is complete. Requirements have to be very clear before the project starts, because it is usually expensive to go back and make changes. This model is used in the medical development field, as it is strictly a disciplined domain.
Advantages
- This is a highly-disciplined model and Phases are completed one at a time.
- Works well for smaller projects where requirements are very well understood.
- Simple and easy to understand and use.
- Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
Disadvantages
- High risk and uncertainty.
- Not a good model for complex and object-oriented projects.
- Poor model for long and ongoing projects.
- Not suitable for the projects where requirements are at a moderate to high risk of changing.
- Once an application is in the testing stage, it is difficult to go back and change a functionality.
- No working software is produced until late during the life cycle
Iterative
This model takes the basic approach of waterfall model and cycles thorough the steps for numerous times. Rather than stretching the entire project across the phases of the SDLC, each step is turned into several mini-projects that can add value as the product evolves. Instead of starting with fully known requirements, project teams implement a set of software requirements, then test, evaluate and pinpoint further requirements. A new version of the software is produced with each phase, or iteration. Rinse and repeat until the complete system is ready.
Advantages
- Some working functionality can be developed quickly and early in the life cycle.
- Results are obtained early and periodically.
- Parallel development can be planned.
- Progress can be measured.
- Less costly to change the scope/requirements.
- Testing and debugging during smaller iteration is easy.
- Risks are identified and resolved during iteration; and each iteration is an easily managed milestone.
- Easier to manage risk — High risk part is done first.
- With every increment, operational product is delivered.
Disadvantages
- More resources may be required.
- Although cost of change is lesser, but it is not very suitable for changing requirements.
- More management attention is required.
- System architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life cycle.
- Defining increments may require definition of the complete system.
- Not suitable for smaller projects.
- Management complexity is more.
Agile
The agile methodology is the opposite of the waterfall approach. Rather than treating requirements, design, and testing as large sequential steps, an agile model makes them all ongoing processes that require involvement from developers, management, and customers. It is the latest most adapted methodology. Here the whole project will be divided into segments called ‘Sprints’. Each sprint has a fixed time span to complete. In this approach, workload, budget and all the other things are decided based on sprints. As part of their embrace of this methodology, many teams are also applying an Agile framework known as Scrum to help structure more complex development projects. Daily Scrum meetings help the whole team monitor progress throughout the project. And the ScrumMaster is tasked with keeping the team focused on its goal.
Advantages
- Is a very realistic approach to software development.
- Promotes teamwork and cross training.
- Functionality can be developed rapidly and demonstrated.
- Resource requirements are minimum.
- Suitable for fixed or changing requirements
- Delivers early partial working solutions.
- Good model for environments that change steadily.
- Minimal rules, documentation easily employed.
Disadvantages
- Not suitable for handling complex dependencies.
- More risk of sustainability, maintainability and extensibility.
- An overall plan, an agile leader and agile PM practice is a must without which it will not work.
- Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
- Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.
- There is a very high individual dependency, since there is minimum documentation generated.
- Transfer of technology to new team members may be quite challenging due to lack of documentation.
Spiral
One of the most flexible SDLC methodologies, the Spiral model takes a cue from the Iterative model and its repetition. Here the project passes through four phases over and over again namely, planning, risk analysis, engineering and evaluation. The Spiral model is typically used for large projects. It enables development teams to build a highly customized product, and incorporate user feedback early on in the project.
Advantages
- Changing requirements can be accommodated.
- Allows extensive use of prototypes.
- Requirements can be captured more accurately.
- Users see the system early.
- Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management.
Disadvantages
- Management is more complex.
- End of the project may not be known early.
- Not suitable for small or low risk projects and could be expensive for small projects.
- Process is complex
- Spiral may go on indefinitely.
- Large number of intermediate stages requires excessive documentation.
DevOps
Amazon defines DevOps as, “DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.” It is one of the newest SDLC methodologies and is being adopted by many software companies and IT organizations. The specialty of this model is that it brings development teams together with operational teams in order to streamline delivery and support. Teams must have flexible resources in order for a DevOps arrangement to succeed.
Advantages
- Cloud-based DevOps makes it easier to collaborate, putting all the tools in the cloud so they can be accessed by users anywhere.
- DevOps as a Service means faster testing and deployment. Generally, using cloud services enables increased release frequency.
- Using DevOps as a Service hides the complexities of data and information flow, which means DevOps team members can focus on their specific tools without having to understand the entire tool chain.
- Using cloud services is a more data-driven process where everyone uses the same data set.
- DevOps as a Service does not have to function on its own; it can coexist with internal DevOps development and deployment processes.
Disadvantages
- Outsourcing a DevOps infrastructure requires a specific level of software development expertise, including an in-depth understanding of integration, infrastructure, and orchestrating workflow.
- Cloning an enterprise infrastructure for test purposes is complex and can lead to unforeseen compatibility problems.
- Security is always a concern. The security team is usually not part of DevOps, and the DevOps team tends to choose speed over security when developing software.
References: