What is SDLC?
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.
A typical Software Development Life Cycle consists of the following stages :
Stage 1: Planning and Requirement Analysis
Requirement analysis is the most important and fundamental stage in SDLC. This phase involves aspects of project and product management. The outputs of the planning phase include: project plans, schedules, cost estimations, and procurement requirements.
Stage 2: Defining Requirements
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 is done through an SRS (Software Requirement Specification) document which consists of all the product requirements to be designed and developed during the project life cycle.
Stage 3: Designing the Product Architecture
SRS is the reference for product architects to come out with the best architecture for the product to be developed. Based on the requirements specified in SRS, usually more than one design approach for the product architecture is proposed and documented in a DDS — Design Document Specification.
Stage 4: Building or Developing the Product
In this stage of SDLC the actual development starts and the product is built. The programming code is generated as per DDS during this stage. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.
Stage 5: Testing the Product
This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are mostly involved in all the stages of SDLC. However, this stage refers to the testing only stage of the product where product defects are reported, tracked, fixed and retested, until the product reaches the quality standards defined in the SRS.
Stage 6: Deployment in the Market and Maintenance
Once the product is tested and ready to be deployed it is released formally in the appropriate market. Sometimes product deployment happens in stages as per the business strategy of that organization. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing)
Advantages and Issues with the SDLC
Pros of SDLC:
- Ample documentation
- Comprehensive steps
- Ease of maintenance
- Effective development and design standards
- Evaluation of cost as well as completion targets
- Possibility to monitor full-scale projects
- Powerful control
Cons of SDLC:
- Difficult to estimate costs and project overruns
- Inflexible to changes in requirements
- Increased development cost and development time
- Limited automation of document and standards
- Little parallelism
- The software is required to be thoroughly defined before beginning
- User input might be limited in some scenarios
There are various software development life cycle models defined and designed which are followed during the software development process. These models are also referred 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
- Iterative Model
- Spiral Model
- Agile Model
The Waterfall Model is a linear sequential flow. It is mostly known as the traditional software development process model, widely used until now, and the most popular SDLC model and the one you should avoid to use. Moreover, it was the first introduced presentation of the software lifecycle
Advantages of Waterfall Model
- It is very easy to explain to the business users and explain the output of each phase.
- Structures approach.
- Stages and activities are well defined.
- It is easier for project managers to plan, schedule the project, utilize the resources, and define the milestones easily.
- Validation and verification at each phase ensure early detection of errors/misunderstanding at the same phase.
- Each phase has specific deliverables.
Disadvantages of Waterfall Model
- It takes the full lifecycle to deliver a workable solution to the customer.
- It is very difficult to go back to any phase after it finished.
- It assumes that the requirements of a system can be frozen without any changes or enhancements.
- A little flexibility and adjusting scope is difficult and expensive.
- It requires more time for the detailed plan upfront of the project, as the requirements are clear and frozen and it should be visible to have the detailed plan delivered to the customer.
- It delays the testing phase which can discover a lot of issues in requirements, design, and implementation as well.
Iterative SDLC Model
The Iterative SDLC model 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.
Advantages of Iterative Model
- Produces business value early in the development lifecycle.
- Better use of scarce resources through proper increment definition.
- Can accommodate some change requests between increments.
- More focused on customer value than the linear approaches.
- We can detect project issues and changes earlier.
Disadvantages of Iterative Model
- Requires heavy documentation.
- Follows a defined set of processes.
- Defines increments based on function and feature dependencies.
- Requires more customer involvement than the linear approaches.
- Partitioning the functions and features might be problematic.
- Integration between the iterations can be an issue if it is not considered during the development and project planning.
Spiral SDLC Model
Spiral model is SDLC model, which 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.
Advantages of Spiral model
- Estimates become more realistic as work progressed because important issues are discovered earlier.
- Early involvement of developers.
- Manages risks and develops the system into phases.
Disadvantages of Spiral model
- High cost and time to reach the final product.
- Needs special skills to evaluate the risks and assumptions.
- Highly customized limiting re-usability
V-Model is mostly known as the validation and verification software development process model, and It is one of the most know software development methodology.
Advantages of V-Model
- Simple and easy to use
- Each phase has specific deliverables.
- Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.
- Works well for where requirements are easily understood.
- V-Model Improves the quality and reliability of the software.
- It reduces the amount of re-work because of the early detection of defects and issues.
- It provides better management for project risks.
Disadvantages of V-Model
- Adjusting scope is difficult and expensive.
- The software is developed during the implementation phase, so no early prototypes of the software are produced.
- The model doesn’t provide a clear path for problems found during testing phases.
- Moreover, It is costly and required more time, in addition to a detailed plan
It is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams.
Advantages of Agile Model
- Provided flexibility to promote the development of software in small, quick steps
- Release updates to users more frequently based on continuous iterations
- Highly adaptive to change requirements
- Identify minor issues before they can turn into bigger ones
- Products penetrate to market faster
- Better communication between users and product owners
Disadvantages of Agile Model
- The ability and collaboration of the customer to express user needs.
- Documentation is done at later stages.
- Reduce the usability of components.
- Needs special skills for the team.