Software Development Life Cycle (SDLC)
Software Development Life Cycle or SDLC is a common word used in software industry. Most of you heard this for the first time when you are in university. So let’s discuss about SDLC in this article.
SDLC is the process that produces software with the highest quality and lowest cost in the shortest time possible. Main goal of the SDLC is to minimize project risks through forward planning and deliver a quality product.
SDLC models were introduced to follow a disciplined and systematic method while designing software. With the software development life cycle, the process of software design is divided into small parts, which makes the problem more understandable and easier to solve. SDLC comprises a detailed description or step-by-step plan for designing, developing, testing, and maintaining the software.
Importance of SDLC
We all know that software development process can be challenging due to reasons like requirement changes, technology upgrades etc. So having a well maintained process is very important. There are some benefits of SDLC.
SDLC Phases
SDLC will be different from team to team. But there are common phases. Lets see what are they and their functions.
Planning
Planning is the most important stage. This is where we outline the project. Not only in software development, but before we do any major task we are gonna plan how to do it. So same thing is done here. This typically includes resource allocation, capacity planning, project scheduling, cost estimation, and provisioning.
During the planning phase business requirement gathering is done from clients or stakeholders.
Define Requirements
In this stage, the requirements and information gathered from stakeholders will be converted to well defined requirements in a way that development team can understand. his process guides the development of several important documents: a software requirement specification (SRS), a Use Case document, and a Requirement Traceability Matrix document.
Designing
This is where the designers come up with the best architecture for the product. In this phase we will decide the programming languages, libraries, design patterns, security measures of the product. Design diagrams like sequence diagrams, UMLs, data base design diagrams, flow charts, architectural diagrams will be designed. These are very important before moving to development. These all should be well documented and organized so developers won’t face any trouble.
Development
This is where the requirement is turned to a code and developed. Depending on the complexity of the product the number of developers involved will be changed. Developers build the product according to the design. This phase will take some time and depends on the complexity of the product, experience of the developers etc. It’s important to have a set timeline and milestones so the software developers understand the expectations and you can keep track of the progress in this stage.
Testing
This is where the product will be tested by quality assurance team to ensure that product meets the client requirements. All the kind of testing will be done to ensure the quality of the product. It is important test all the areas of the product. QA team will report bugs during this stage and developers need to fix them.
The types of testing to do in this phase:
Deployment
This stage is where the application will be available for end users. Deployment is not end with a one step. Deployment always happen when there is a new version of the product available.
Deployment depends on the product of the nature, tools and client. Some times deployment will happen on stages.
Maintenance
Monitoring and maintenance is important once the product deployed. If there are performance issues, security issues they need to be addressed as quickly as possible. Many products are built using iterative development models that call for constant improvement. Additional features launch new development cycles, where developers, the product owner, and stakeholders start the process all over again. Many products are developed throughout their entire lives.
SDLC Models
There are different types of models being used. Here are some commonly used ones.
Waterfall Model
This is the classic software development model. This process is a sequential process or a linear process where in the output of one phase is input of another phase. So previous phase becomes important to be completed before we move to next phase. Systems that have well-defined and understood requirements are a good fit for the Waterfall Model
Pros:
Cons:
Suitable Situations:
Incremental Model
The process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved.
Recommended by LinkedIn
Pros:
Cons:
Suitable Situations:
Spiral Model
This is an evolutionary software process model that couples the iterative feature of prototyping with the controlled and systematic aspects of the linear sequential model. It implements the potential for rapid development of new versions of the software. Using the spiral model, the software is developed in a series of incremental releases. During the early iterations, the additional release may be a paper model or prototype. During later iterations, more and more complete versions of the engineered system are produced.
Pros:
Cons:
Suitable Situations:
Evolutionary Prototyping Model
In this type, developers build a prototype. This is similar to the actual product. Users will evaluate the prototype and provide feedbacks. Based on those feedbacks developers will do refinements. If user is satisfied on the prototype, it will brought up to the standards as needed for final product. Over time and multiple feedback cycles, the prototype may have more advanced functionality added to it as needed by the client. The process thus results in the finished product.
Pros:
Cons:
Suitable Situations:
Agile Model
The biggest problem we face in software development is changing requirements. For such Agile is the solution. The agile development model is also a type of Incremental model. In Agile the product is developed in incremental, rapid cycles. This results in small incremental releases with each release building on previous functionality. Each release is thoroughly tested to ensure software quality is maintained.
Pros:
Cons:
Suitable Situations:
RAD Model
RAD or Rapid Application Development is an adaptive software development model based on prototyping and quick feedback with less emphasis on specific planning. RAD approach prioritizes development and building a prototype, rather than planning. RAD is a concept that products can be developed faster and of higher quality through:
Pros:
Cons:
Suitable Situations:
So in this article we discussed What is SDLC, it’s benefits and use cases. I hope this is helpful to you and you can learn from this article. Thank you and stay connected.