SDLC — Software Development Life Cycle
- Swetha Y
- Jun 6, 2019
- 0 comment(s)
- 1226 Views
SDLC — Software Development Life Cycle
What is SDLC?
The Software Development Lifecycle is a systematic process for building software that ensures the quality and correctness of the software built. SDLC process aims to produce high-quality software which meets customer’s expectations. The software development should be complete in the pre-defined time frame and cost.
The life cycle is generally defined as the series of changes in one’s life, either it is living or non-living. Anything that has a complete series of steps is taken as the life cycle. These sequences have a starting and end point too. On a side note, we can say that every process has a set of sub-processes within it. Let us take this discussion ahead towards software development. So, SDLC in software testing which means the life cycle of a software development process.
SDLC consists of a detailed plan which explains how to plan, build, and maintain specific software. Every phase of the SDLC lifecycle has its own process and deliverables that feed into the next phase.
Use of SDLC
- It offers a basis for project planning, scheduling, and estimating
- Provides a framework for a standard set of activities and deliverables
- It is a mechanism for project tracking and control
- Increases visibility of project planning to all involved stakeholders of the development process
- Increased and enhance development speed
- Improved client relations
- Helps you to decrease project risk and project management plan overhead
Phases of SDLC
SDLC- Software development life cycle. It consists of various phases that describe how to develop, design and maintain the software project ensuring that all the functional & user requirement, goals and objective are met. This helps in quality production and customer satisfaction. In specific terms that are relevant to SDLC, since SDLC or Systems Development Life Cycle, is a cyclical methodology, phases repeat, so changes can be made to the design in the next cycle.
This is the first phase in the systems development process. It identifies whether or not there is a need for a new system to achieve a business’s strategic objectives. This is a preliminary plan (or a feasibility study) for a company’s business initiative to acquire the resources to build on an infrastructure to modify or improve a service. The company might be trying to meet or exceed expectations for their employees, customers and stakeholders too. The purpose of this step is to find out the scope of the problem and determine solutions. Resources, costs, time, benefits and other items should be considered at this stage.
2. Requirement Analysis
In the requirement analysis phase of SDLC (Software Development Life Cycle), they discuss with the client about his needs regarding software development. The aim of this phase to grab out all the details of the project or we can say that requirement analysis phase is to capture the detail of each requirement and to make sure everyone understands the scope of the work and how each requirement is going to be fulfilled.
The next stage of the Software Development Life Cycle is the Design phase. During the design phase, developers and technical architects start the high-level design of the software and system to be able to deliver each requirement. The technical details of the design are discussed with the stakeholders and various parameters such as risks, technologies to be used, and the capability of the team, project constraints, time and budget are reviewed and then the best design approach is selected for the product.
There are two kinds of design documents developed in this phase:
High-Level Design (HLD)
Brief description and name of each module
An outline of the functionality of every module
Interface relationship and dependencies between modules
Database tables identified along with their key elements
Complete architecture diagrams along with technology details
Low-Level Design (LLD)
Functional logic of the modules
Database tables, which include type and size
Complete detail of the interface
Addresses all types of dependency issues
Listing of error messages
Complete input and outputs for every module
This is the phase where we actually implement all the requirements which are gathered from the client. In these phases, coding is started as per the requirement of the client. In this phase, everyone starts doing their work database administrator, making database programmers, starts coding the function or we can say modules’ of the projects and front end developer begins developing an interactive GUI as per the requirement of the software.
5. Testing & Integration
Testing is the last phase of the Software Development Life Cycle before the software is delivered to customers. In this phase, we check if our software is working as per our expectation. We also check SRS that software fulfils the entire requirement mentioned by the client at the time of the agreement.
Once the software testing phase is over and no bugs or errors are left in the system, then the final deployment process starts. Based on the feedback given by the project manager, the final software is released and checked for deployment issues if any.
7. Maintenance (Operations)
This phase confirms the software operation in terms of more efficiency and fewer errors. If required, the users are trained, or aided with the documentation on how to operate the software and how to keep the software operational. The software is maintained timely by updating the code according to the changes taking place in the user end environment or technology. This phase may face challenges from hidden bugs and real-world unidentified problems.
There are various software development life cycle models defined and designed which are followed during the software development process. These models are also referred to as Software Development Process Models. Each process model follows a series of steps unique to its type to ensure success in the process of software development.
Following are the most important and popular SDLC models followed in the industry
- Waterfall Model. The waterfall is the oldest and most straightforward of the structured SDLC methodologies
- V-Shaped Model
- Iterative Model
- Spiral Model
- Big Bang Model
- Agile Model
1. Waterfall Model
The waterfall is the traditional model of the SDLC (Software Development Lifecycle). In this model, each phase is completed before going to the next phase. There is no option for going back after moving to the next phase. In waterfall model, the next phase is dependent on the result of the previous frame. The waterfall is easily manageable and simple to understand. However, in some situation, it causes a delay in project completion as prior to moving the next phase we need to complete the first phase. Also, since there is little room for revisions once a stage is completed, problems can’t be fixed until you get to the maintenance stage. The biggest disadvantages of this model is that the requirements are not clear prior to project development since no client intervention is allowed in between the project. Hence, if a requirement is wrong or missing, it won’t become apparent until the late stages of the life cycle.
Following points explain advantages and disadvantages:-
- Easy to understand
- Prevention of error propagation with the help of verification and validation
- Well defined stages
- We cannot go back to the previous phase.
- Less client involvement
2. V Model
V Model is advance waterfall model in which testing functionality is added at each stage of the project development instead of the project completion project which leads to better project development. In this model also we cannot move to the next step until or unless we cannot complete the previous step. In this model, we do not get deviated from the project goal as the result of each phase testing.
- Easy to understand and implement
- Early stage error removal
- High success rate as compared to Waterfall as each phase is tested
- Mitigate downwards flow of error.
- Not flexible and rigid model
- High risk is associated with this model
- Goal is not clear in this model
3. Iterative Model
With the Iterative model, the project can be developed in small chunks, each updated chunk contains some additional functionalities. In this model, there is no need for full requirement of the initial development of the software, unlike the V-shaped or Waterfall model. With each iteration, some additional requirements are added. This makes an updated version of the software, and this process continues until the full project is developed. One advantage of the Iterative model over the other SDLC methodologies is that we get a working version of the application early in the process, so it less expensive to implement changes. One disadvantage is that resources can quickly be eaten up by repeating the process again and again.
4. Spiral Model
The spiral model is a combination of the systematic and structured development which takes attributes of iteration. The spiral model is a combination of the systematic and structured development which takes attributes of iteration. Iterative model is combined with the advantages of the simplicity of the waterfall model, with an additional heavy risk analysis features. Working of the Spiral model is divided into four phases (identification, design, build, evaluation and risk analysis) and these four steps are repeated until we will do not have a complete project. This model provides incremental updating on the releases of the software products. The spiral model is best suited for the highly personalized software product because this model uses interaction, and evaluation is started from the early stage of the development. However, the risk you run is creating a never-ending spiral for a project that goes on and on.
The spiral model is a combination of the systematic and structured development which takes attributes of iteration. Iterative model is combined with the advantages of the simplicity of the waterfall model, with an additional heavy risk analysis features.
Spiral model is combination of the systematic and structured development which takes attributes of iteration Iterative model and also combined these advantages with the simplicity of the waterfall model with an additional heavy risk analysis features.
- Risk analysis is very high in this model
- Early production of software in the life cycle.
- Suitable for large projects
- Very less chance of failure
- Development can be terminated after any spiral and there will be a working system available.
5. Big Bang Model
The Big Bang model is an SDLC model where we do not follow any specific process. The development just starts with the required money and efforts, as the input and the output of the software developed may or may not be as per customer requirement. This Big Bang Model does not follow a process/procedure and there is a very little planning required. Even the customer is not sure about what exactly he wants and the requirements are implemented on the fly without much analysis.
Usually, this model is followed for small projects where the development teams are very small.
The advantage of this Big Bang Model is that it is very simple and requires very little or no planning. It is easy to manage and no formal procedure is required.
However, the Big Bang Model is a very high-risk model and changes in the requirements are misunderstood. Requirements may even lead to complete reversal or scraping of the project. It is ideal for repetitive or small projects with minimum risks.
The advantages of the Big Bang Model are as follows −
- This is a very simple model
- Little or no planning required
- Easy to manage
- Very few resources required
- Gives flexibility to developers
- It is a good learning aid for newcomers or students.
The disadvantages of the Big Bang Model are as follows −
- Very High risk and uncertainty.
- Not a good model for complex and object-oriented projects.
- Poor model for long and ongoing projects.
- Can turn out to be very expensive if requirements are misunderstood.
6. Agile Model
The agile model is a hybrid model. It uses advantages of both, iterative and incremental model by dividing software product, breaking a product into an apparatus wherein each cycle or iteration is a working model of a component that is delivered. This model delivers updated releases and each release contains some incremental updates; and after completion of each iteration, the product is tested to ensure if the iteration is acceptable. The Agile model emphasizes association, as the clients, developers and testers effort mutually all through the project. A benefit of the agile model is that, it rapidly delivers an operational product and is measured in a very practical development approach. One drawback of this model is that because it depends profoundly on client communication, the project can head in the wrong way if the client is not clear about the needs or the direction he or she wants to go.
- This model is very adaptable to changing requirements
- Very much focused on client feedback
- Dynamic measure of progress
- Overhead is reduced as compared to other models
- Quick removal of horrific designs and erroneous requirements identified and removed immediately.
- Not feasible for a complex project
- Agile model works well for a small team
- Small projects that are developed by small, self-organizing teams
- Agile model adapt frequent changes in the technology