Software Development Life Cycle Methods
Before we get into Software Development Life Cycle methods we have to know that what is mean by SDLC ?, Let’s get an idea;
What is Software Development Life Cycle ?
SDLC is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.
SDLC is a way to measure and improve the development process. It allows a fine-grain analysis of each step of the process. This, in turn, helps companies maximize efficiency at each stage. As computing power increases, it places a higher demand on software and developers. Companies must reduce costs, deliver software faster, and meet or exceed their customers’ needs. SDLC helps achieve these goals by identifying inefficiencies and higher costs and fixing them to run smoothly. There are usually six stages in this cycle; requirement analysis, design, development and testing, implementation, documentation, and evaluation.
The Software Development Life Cycle simply outlines each task required to put together a software application. This helps to reduce waste and increase the efficiency of the development process. Monitoring also ensures the project stays on track, and continues to be a feasible investment for the company.
There are different software development life cycle models specify and design, which are followed during the software development phase. These models are also called as Software Development Process Models. Each model follows a series of phase unique to its type to ensure success in the step of software development.
Here are some most common used SDLC models,
1. Waterfall Model
Waterfall is a cascade SDLC model, in which development process looks like the flow, moving step by step through the phases of analysis, projecting, realization, testing, implementation, and support. This SDLC model includes gradual execution of every stage completely. This process is strictly documented and predefined with features expected to every phase of this software development life cycle model.
Advantages of Waterfall model,
- Simple and easy to understand and use.
- Works well for smaller projects where requirements are very well understood.
- Management simplicity thanks to its rigidity: every phase has a defined result and process review.
- Development stages go one by one.
- Perfect for the small or mid-sized projects where requirements are clear and not equivocal.
- Easy to determine the key points in the development cycle.
- Easy to classify and prioritize tasks.
Disadvantages of Waterfall model,
- The software is ready only after the last stage is over.
- High risks and uncertainty.
- Not a good model for complex and object-oriented projects.
- Inappropriate for the long-term projects.
- The progress of the stage is hard to measure while it is still in the development.
- Integration is done at the very end, which does not give the option of identifying the problem in advance.
2. Iterative Model
In the Iterative model, iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed. It does not need the full list of requirements before the project starts. The development process may start with the requirements to the functional part, which can be expanded later. The process is repetitive, allowing to make new versions of the product for every cycle.
Every iteration includes the development of a separate component of the system, and after that, this component is added to the functional developed earlier. Speaking with math terminology, the iterative model is a realization of the sequential approximation method; that means a gradual closeness to the planned final product shape. At each iteration, design modifications are made and new functional capabilities are added. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).
Advantages of Iterative model,
- 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.
- With every increment, operational product is delivered.
- It supports changing requirements.
- Initial Operating time is less.
- Better suited for large and mission-critical projects.
Disadvantages of Iterative model,
- 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.
- End of project may not be known which is a risk.
- Highly skilled resources are required for risk analysis.
- Projects progress is highly dependent upon the risk analysis phase.
3. Spiral Model
Spiral model combines architecture and prototyping by stages. It is a combination of the Iterative and Waterfall SDLC models with the significant accent on the risk analysis. The main issue of the spiral model is defining the right moment to make a step into the next stage. The preliminary set time frames are recommended as the solution to this issue. The shift to the next stage is done according to the plan, even if the work on the previous stage isn’t done yet. The plan is introduced basing on the statistic data, received during the previous projects even from the personal developer’s experience.
Advantages of Spiral model,
- Lifecycle is divided into small parts, and if the risk concentration is higher, the phase can be finished earlier to address the treats
- Changing requirements can be accommodated.
- Requirements can be captured more accurately.
- The development process is precisely documented yet scalable to the changes
- The scalability allows to make changes and add new functionality even at the relatively late stages
- The earlier working prototype is done sooner users can point out the flaws
Disadvantages of Spiral model,
- Can be quite expensive
- Management is more complex.
- The risk control demands involvement of the highly-skilled professionals
- Can be ineffective for the small projects
- Spiral may go on indefinitely.
- Big number of the intermediate stages requires excessive documentation
4. V-Model
V-Model is an expansion of classic waterfall model and it’s based on associated test stage for the every development stage. This is a very strict model and the next stage is started only after the previous phase. This is also called “Validation and verification” model. Every stage has the current process control, to make sure that the conversion to the next stage is possible.
Advantages of V-Model,
- Every stage of V-shaped model has strict results so it’s easy to control
- Testing and verification take place in the early stages
- Good for the small projects, where requirements are static and clear
- 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 of V-Model,
- Lack of the flexibility
- Bad choice for the small projects
- Relatively big risks
- 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.
5. Agile Model
Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks.
In the agile methodology after every development iteration, the customer is able to see the result and understand if he is satisfied with it or he is not. This is one of the advantages of the agile software development life cycle model. One of its disadvantages is that with the absence of defined requirements it is difficult to estimate the resources and development cost. Extreme programming is one of the practical use of the agile model. The basis of such model consists of short weekly meetings Sprints which are the part of the Scrum approach.
Advantages of Agile model,
- 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.
- Enables concurrent development and delivery within an overall planned context.
- Little or no planning required.
- Easy to manage.
- Gives flexibility to developers.
Disadvantages of Agile Model,
- 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.
6. DevOps Model
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 of DevOps Model,
- 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.
- DevOps as a Service does not have to function on its own; it can coexist with internal DevOps development and deployment processes.
Disadvantages of DevOps Model,
- 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.