SDLC, Software Development Life Cycle is a process used by software industry to design, develop and test high quality softwares. The aim of SDLC to produce a high quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates.
The following figure is a graphical representation of the various stages of a typical SDLC.
Planning and Requirement Analysis:
*Requirement analysis is the most important and fundamental stage in SDLC.
*Business requirements are gathered in this phase. This phase is the main focus of the project managers and stake holders.
*Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved from the customer or the market analysts.
*This process done through .SRS,Software Requirement Specification document which consists of all the product requirements to be designed and developed during the project life cycle.
Designing the product architecture:
*In this phase the system and software design is prepared from the requirement specifications which were studied in the first phase.
*System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
Building or Developing the Product:
*In this stage of SDLC the development starts to built the product.
*During this stage the programming code will be generated by design document specification.
Testing the Product:
*After the code is developed it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase.
*During this phase all types of functional testing like unit testing, integration testing, system testing, acceptance testing are done as well as non-functional testing are also done.
Deployment in the Market and Maintenance:
*After successful testing the product is delivered / deployed to the customer for their use.
*When the product is given to the customers they will first do the beta testing. If any changes are required or if any bugs are caught, then they will report it to the engineering team.
There are various software development life cycle models defined and designed which are followed during software development process. These models are also referred as “Software Development Process Models”.
Following are the most important and popular SDLC models followed in the industry:
- Waterfall Model
- Iterative Model
- Spiral Model
- Rad model
Waterfall Model design:
The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin. This type of model is basically used for the for the project which is small and there are no uncertain requirements.
Requirement Gathering and analysis:
All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
The system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
Integration and Testing:
All the units developed in the implementation phase are integrated into a system after testing of each unit.
Deployment of system:
The functional and non functional testing is done, the product is deployed in the customer environment or released into the market.
Maintenance is used to done the issues from the client side and deliver these changes in the customer environment.
- This model is simple and easy to understand and use.
- It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
- In this model phases are processed and completed one at a time. Phases do not overlap.
- Waterfall model works well for smaller projects where requirements are very well understood.
- 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.
Iterative Model design:
An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model.
In incremental model the whole requirement is divided into various builds. During each iteration, the development module goes through the requirements, design, implementation and testing phases. Each subsequent release of the module adds function to the previous release. The process continues till the complete system is ready as per the requirement.
- Parallel development can be planned.
- Progress can be measured.
- Less costly to change the scope/requirements.
- Testing and debugging during smaller iteration is easy.
- Each phase of an iteration is rigid with no overlaps
- Costly system architecture or design issues may arise because not all requirements are gathered up front for the entire lifecycle.
Spiral Model design:
The spiral model is similar to the incremental model with more emphasis placed on risk analysis.The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.
This phase starts with gathering the business requirements in the baseline spiral.It includes understanding the system requirements by continuous communication between the customer and the system analyst.
Design phase starts with the conceptual design in the baseline spiral and involves architectural design, logical design of modules, physical product design and final design in the subsequent spirals.
Construct or Build:
This phase refers to production of the actual software product at every spiral.In the baseline spiral when the product is just thought of and the design is being developed a POC (Proof of Concept) is developed in this phase to get customer feedback.
Evaluation and Risk Analysis:
Analysis includes identifying, estimating, and monitoring technical feasibility and management risks, such as schedule slippage and cost overrun.
- High amount of risk analysis hence, avoidance of Risk is enhanced.
- Good for large and mission-critical projects.
- Strong approval and documentation control.
- Risk analysis requires highly specific expertise.
- Project’s success is highly dependent on the risk analysis phase.
- Doesn’t work well for smaller projects.
V- Model design:
V- model means Verification and Validation model. Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins.
This is the first phase in the development cycle where the product requirements are understood from the customer perspective. This phase involves detailed communication with the customer to understand his expectations and exact requirement.
In system design there is two types HLD and LLD
High level design phase focuses on system architecture and design. It provide overview of solution, platform, system, product and service/process.
Low level design phase is where the actual software components are designed. It defines the actual logic for each and every component of the system.
In this phase more than one technical approach is proposed and based on the technical and financial feasibility the final decision is taken. System design is broken down further into modules taking up different functionality.This is also referred to as High Level Design (HLD).
In this phase the detailed internal design for all the system modules is specified, referred to as Low Level Design (LLD). It is important that the design is compatible with the other modules in the system architecture and the other external systems.
This is at the bottom of the V-Shape model. Module design is converted into code by developers.
- Simple and easy to use.
- Avoids the downward flow of the defects.
- Works well for small projects where requirements are easily understood.
- Software is developed during the implementation phase, so no early prototypes of the software are produced.
- If any changes happen in midway, then the test documents along with requirement documents has to be updated.
RAD model is Rapid Application Development model. It is a type of incremental model. In RAD model the components or functions are developed in parallel as if they were mini projects.
When to use RAD model:
- RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time.
- It should be used if there’s high availability of designers for modeling and the budget is high enough to afford their cost along with the cost of automated code generating tools.
The information flow is identified between various business functions.
Information gathered from business modeling is used to define data objects that are needed for the business.
Data objects defined in data modeling are converted to achieve the business information flow to achieve some specific business objective. Description are identified and created for CRUD of data objects.
Automated tools are used to convert process models into code and the actual system.
Testing and turnover:
Test new components and all the interfaces.
- Reduced development time.
- Increases reusability of components
- Quick initial reviews occur
- Only system that can be modularized can be built using RAD
- Requires highly skilled developers/designers.
- High dependency on modeling skills.