What is SDLC?
Software Development Life Cycle is a process followed for a software project within an organization. It contains a detailed plan describing how to develop, maintain, replace and alter specific software. Also, this life cycle defines a methodology for improving the quality of the software development process.
Let's look into the SDLC models
- Waterfall model
- V-shaped model
- Evolutionary prototyping model
- Iterative model
- Spiral model
- DevOps
Waterfall Model
The waterfall model is sequential. This development activity is divided into different phases, and each activity is executed in a downward fashion, taking the output of one phase as input to another phase. Each phase consists of a series of tasks and has different objectives, where the development of one phase starts only after the previous phase is completed.
Phases of Waterfall model:
1.Requirement:
The client gives us requirements for developing an application and analyzing them.
2.Design:
Prepare a blueprint for software, it gives us an idea about what software will look like.
3.Implementation:
Coding is done in this phase.
4. Verification:
A team of developers works together on various components of this application once the application is developed, it's tested in the verification phase.
5.Maintainance:
After verification, the application is monitored for performance. Any issues due to performance are resolved in this phase.
Advantages
- Easy to understand and simple
- For smaller projects, waterfall models work well and yields appropriate results.
Disadvantages
- For complex or bigger projects, this model is not suitable as the risk factor is higher.
- Changes are not reflected throughout the development. It is difficult to go back and make changes to
previous phase.
Agile model
The agile model is a combination of iterative and incremental process models. Also, the agile method adopts iterative development. Here each incremental part is developed over an iteration and each iteration is intended to be small, easily manageable, and can be completed within a couple of weeks, enabling constant change throughout the development. This model enables the team to deliver products faster with greater quality, adaptability to change, and responsiveness within an estimated time. It makes sure to meet the customer's needs by taking their feedback along with the process and make necessary changes.
Agile Model phases:
1. Project Initiation:
The initial phase of starting the project, will look into the overview, figure out the resources needed with estimated duration, and identify team members.
2.Planning:
The team gets together and identifies what they are exactly looking for. Creating a backlog of user requirements and future features, planning would be complete when the backlog is complete and prioritize the functionalities of the product.
3. Development:
After getting the project requirement, it's time for the developer team to code and create a working product. The team works with the first iteration with a number of revisions and this functionality can be extended in future iterations.
4. Production:
The production phase is where the product is deployed and delivered to end-users. It is important to monitor the early bugs and problems, that were missed during testing.
5.Retirement:
The last phase of the Agile model is in which the product is pulled from production and updates the user with new releases.
Iterative:
It is the implementation of the software development life cycle in which the initial development is stated based on the initial requirements and more features are added to the base software product with the ongoing iterations until the final system is created.
Incremental:
It is the process of software development where requirements are broken down into multiple standalone modules of the software development cycle. Incremental development is done in steps from analysis design, implementation, testing/ verification, and maintenance.
Advantages
- It reduces the total development time of the whole project.
Disadvantages
- Due to the absence of proper documentation, when the project is completed and developers are assigned to another project, maintenance of the project becomes difficult.
V-shaped model
It stands for the verification and validation model. Each phase of the software development life cycle must complete before the next please starts. Also, it follows a sequential design process same as the waterfall model. Here testing of the device is planned in parallel with the corresponding stage of development.
Verification
It involves a static analysis method done without executing code. Also, it is the process of evaluation of the product development process to find out whether specified requirements meet.
Validation
It involves a dynamic analysis method( functional/ non-functional), and testing is done by executing code. Also, validation is the process to classify the software after completion of the development process to determine whether the software meets the requirements.
Phases of verification
Business requirement analysis:
This phase contains detailed communication to understand customers' expectations and exact requirements.
System design:
In this stage, system engineers analyze and interpret the business of the proposed system by studying the user requirements document.
High level design:
It consists of a list of modules, brief functionality of each module, their interface relationships, dependencies, database tables, etc.
Low level design:
Here system breaks down into small modules.
Coding:
After designing, the coding phase is started. Based on the requirements, a suitable programming language is decided.
Phases of validation
Unit testing:
In this V-model, unit test plans are developed during the module design phase. Also, unit test plans are executed to eliminate errors at the code level or unit level.
Integration testing/ component testing:
It is developed during the high-level design phase. These tests verify that groups created and tested independently can co-exist and communicate among themselves.
System testing:
This is developed during the system design phase, unlike unit testing and component testing plans, system test plans are composed by the client business team. It ensures that expectations from application developers are met.
Acceptance Testing:
It is related to the business requirement analysis part. It includes testing the software product in a user atmosphere. Acceptance testing reveals compatibility problems with the different systems.
Advantages
- Simple and easy to use.
- Verification and validation of the product in the early stages of product development.
Disadvantages
- This model doesn't provide a clear path for problems found during the testing phases.
- Very inflexible like the waterfall model.
DevOps
It is a software development approach that involves continuous development, continuous testing, continuous integration, continuous deployment, and continuous monitoring throughout its development lifecycle.
Stages of DevOps
1.Version control system:
It maintains different versions of code.
2. Continuous integration:
It is a continuous build, here we do compile, code review, validate, unit testing, and integration testing.
Unit testing -> testing different parts Integration testing -> how different parts work together.
3.Continuous deployment:
If the application is deployed onto the test server to perform the user acceptance testing with the help of tools like selenium and once that's done it will be deployed on the production servers for release. The whole process is automated.
4.Continuous monitoring:
This phase continuously monitors the performance of the application and keeps a log of all its services and functionalities. The root cause of any issue is determined in this phase.
Advantages
- Faster deployment
- Improvement in product quality.
- Continuous delivery of software.
Disadvantages
- High probability of errors.
- Lack of transparency
- High cost
- Late feedback
Conclusion
The software development methodologies mentioned above all exist to varying degrees, and they should be determined by the business requirements of a project, as well as the individual needs of the team. The best development lifecycle for one project may not work for another, and successful projects can be born from almost any methodology. However, it is helpful to have an understanding of what's out there in order to fully realize which methodology will enhance a project.