Software Development Life Cycle Models

Chandima Maduwanthi
8 min readNov 20, 2020

This article will explain what are SDLC models.

First of all, let’s see what is the Software Development Life Cycle.

SDLC or the Software Development Life Cycle is a process that produces software with the highest quality and lowest cost in the shortest time possible. SDLC provides a well-structured flow of phases that help an organization to quickly produce high-quality software which is well-tested and ready for production use.

SDLC methodology focuses on the following phases of software development:

Planning and Requirement Analysis

Requirement analysis is the first phase of the Software Development Life Cycle. The main aim of this phase is to know the actual requirement of clients and to document them properly. The emphasis in requirement analysis is on identifying what is needed from the system. This information is then used to plan the basic project approach and to conduct product feasibility study in the economical, operational and technical areas.

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.

Software design

It is the most creative phase in Software Development Life Cycle. The goal of this phase is to transform the requirement specification into a structure or plan. It is the process of planning and problem solving for a software solution. The output of this phase is Software Design Document (SDD).

Software development

In this phase Software Design Document (SDD) is converted into code by using a programming language. It is the logical phase of the Software Development Life Cycle. The output of this phase is program code

Testing

Just after coding phase, testing is carried out to know the outcome of application. Testing is made to know the actual result and the expected result. This is most important and powerful phase. Effective testing will provide high quality software products, lower maintenance costs, and more accurate and reliable results.

Deployment

In the deployment phase, the application is made available to users. Many companies prefer to automate the deployment phase. This can be as simple as a payment portal and download link on the company website. It could also be downloading an application on a smartphone.

Maintenance

At this point, the development cycle is almost finished. The application is done and being used in the field. In this phase, users discover bugs that weren’t found during testing. These errors need to be resolved, which can spawn new development cycles.

SDLC Models

There are various software development approaches defined and designed which are used during development process of software, these approaches are also referred as “Software Development Process Models”. Each process model follows a particular life cycle in order to ensure success in process of software development. Some of the SDLC Models have described here.

1. Waterfall Model

The Waterfall model is the classical model of software engineering. It is also referred as a linear-sequential life cycle model. It defines some basic tasks, which are carried out in sequence: requirements definition, Architecture design, detailed design, implementation, component verification, integration verification and requirements validation. In a waterfall model, each phase must be completed before the next phase can begin. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. The waterfall model serves as a baseline for many other lifecycle models.

Advantages:

•Simple and easy to understand, use and manage

•Phases are processed and completed one at a time.

• Works well for smaller projects where requirements are very well understood.

•Clearly defined stages.

• Easy to arrange tasks.

• Process and results are well documented.

Disadvantages:

• No working software is produced until late during the life cycle.

• High amounts of risk and uncertainty.

• Not a good model for complex and object-oriented projects.

• Poor model for long and ongoing projects.

• It is difficult to measure progress within stages.

• Cannot accommodate changing requirements.

2. Iterative Model

In the Iterative model, iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed. At each iteration, design modifications are made and new functional capabilities are added. The basic idea behind this method is to develop a system through repeated cycles and in smaller portions at a time. This allows the development team to demonstrate results earlier on in the process and obtain valuable feedback from system users.

Advantages:

• Some working functionality can be developed quickly and early in the life cycle.

• Results are obtained early and periodically.

• Parallel development can be planned.

• Testing and debugging during smaller iteration is easy.

• Easier to manage risk — High risk part is done first.

• Less costly to change the scope or requirements.

• Better suited for large and mission-critical projects.

Disadvantages:

• More resources may be required.

• Although cost of change is lesser, but it is not very suitable for changing requirements.

• More management attention is required.

• System architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life cycle.

• Highly skilled resources are required for risk analysis.

• Projects progress is highly dependent upon the risk analysis phase.

3. Spiral Model

This Spiral model is a combination of iterative development process model and sequential linear development model with a very high emphasis on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals). Requirements are gathered during the planning phase. In the risk analysis phase, a process is undertaken to identify risk and alternate solutions and at the end a prototype is produced. Software is produced in the engineering phase, along with testing at the end of the phase. The evaluation phase allows the customer to evaluate the output of the project to data before the project continues to the next spiral.

Advantages:

• Changing requirements can be accommodated.

• Allows extensive use of prototypes.

• Requirements can be captured more accurately.

• Users see the system early.

• Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management.

Disadvantages:

• Process is complex

• Management is more complex.

• End of the project may not be known early.

• Not suitable for small or low risk projects and could be expensive for small projects.

4. V-Model

V-Shaped life cycle execute the number of processes in a sequential path like the water fall model. In this model each phase must be completed before the next phase begins. When each of the phases preceding implementation, a system test plan is created before any coding is done. The focuses of the test plan is to meeting the functionality specified in the requirements.

Advantages:

• Phases are completed one at a time.

• Works well for smaller projects where requirements are very well understood.

• Simple and easy to understand and use.

• Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.

Disadvantages:

• High 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.

• Once an application is in the testing stage, it is difficult to go back and change a functionality.

• No working software is produced until late during the life cycle.

5. RAD Model

RAD model is Rapid Application Development model. In RAD model the components or functions are developed in parallel as if they were mini projects. The developments are time boxed, delivered and then assembled into a working prototype. This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements.

Advantages:

• Changing requirements can be accommodated.

• Progress can be measured.

• Iteration time can be short with use of powerful RAD tools.

• Productivity with fewer people in a short time.

• Reduced development time.

• Increases reusability of components.

Disadvantages:

• Dependency on technically strong team members for identifying business requirements.

• Requires highly skilled developers.

• High dependency on Modelling skills.

• Inapplicable to cheaper projects as cost of Modelling and automated code generation is very high.

• Management complexity is more.

• Suitable for systems that are component based and scalable.

• Requires user involvement throughout the life cycle.

6. Agile Model

Agile Software Development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross functional teams. It promotes the adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. Agile development methodology is a conceptual framework for undertaking any software engineering projects. There are a number of agile software development methods but the most popular agile methods are Extreme Programming (XP), crystal methods, Scrum, Feature Driven Development.

Advantages:

• Is a very realistic approach to software development.

• Promotes teamwork and cross training.

• Functionality can be developed rapidly and demonstrated.

• Resource requirements are minimum.

• Suitable for fixed or changing requirements

• Delivers early partial working solutions.

• Minimal rules, documentation easily employed.

• Enables concurrent development and delivery within an overall planned context.

• Easy to manage.

• Gives flexibility to developers.

Disadvantages:

• Not suitable for handling complex dependencies.

• More risk of sustainability, maintainability and extensibility.

• An overall plan, an agile leader and agile PM practice is a must without which it will not work.

• Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.

• Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.

• There is a very high individual dependency, since there is minimum documentation generated.

• Transfer of technology to new team members may be quite challenging due to lack of documentation.

--

--

Chandima Maduwanthi

BSc.(Hons) Software Engineering Undergraduate | University Of Kelaniya