Software Development Life Cycle

Githmi Vithanawasam
6 min readNov 20, 2020

--

When developing a software product, it can be easy or more complex. However, in the end, we have to get a quality product for our customers and clients. To do software development efficiently, developers use the software development life cycle. Here, I write about the SDLC, why we need it, its phases, various models of it, and the pros and cons of those different models.

What is SDLC?

SDLC — Software Development Life Cycle

Software development life cycle is a framework that consists of an iterative process describing tasks performed in each step to having a better high-quality software product.

Why we need SDLC?

These are the reasons why we should use SDLC in developing our software systems.

  • We can have project scheduling, planning, and budgeting.
  • It provides a framework for a standard set of activities and deliverables.
  • We can control and track the process of the project in a better way.
  • We can improve our relationship with clients.
  • It enhances development speed.
  • It helps to decrease project management risk.

Phases of SDLC

According to Wikipedia resources usually, the software development life cycle has six steps. But in various models of SDLC, these steps are combined, split, or omitted by software developers.

These main phases are,

1. Requirement analysis

2. Design

3. Development and testing

4. Implementation

5. Documentation

6. Evaluation

Let’s see these steps in detail.

1) Requirement Analysis

Requirement analysis is a fundamental step in the software development life cycle. Also, it is important because, in this phase, developers can have a good sense of the project scope and its purpose. Here we have to identify project goals and requirements. For that, we can make documentation, have client interviews, observations, and questionnaires. After all of these are done, we can have SRS -Software Requirement Specification (this name is different from organization to organization) document that can benefit the whole SDLC process.

2) Design

The next stage is the Design. In this stage, developers get SRS as the input and have the DDS — Design Document Specification as the output. This DDS can consist of another two parts called High-Level Design (HHL) and Low-Level Design (LLD). According to the requirements identify in the first phase, developers introduce different design approaches. Then they select one design approach from them considering risk assessment, product robustness, design modularity, budget, and time constraints. The design approach should include architecture, user interface, platforms, programming, communications, security, etc.

3) Implementation

The actual development of the product begins at this stage, and this is the longest phase in SDLC. According to DDS, developers start coding to implement the software. In this phase, tasks are divided into units or modules and assigned developers to do them. After this phase, we can have a working feature to share with customers. Developers have to follow coding guidelines, also according to the selected programming language and programming tools like compilers, debuggers, interpreters.

4) Testing

Testing is a subpart of every phase. But here, Quality Assurance (QA) professional and a testing team take a look at the whole created product. In this phase, they mainly focus on bug fixes and whether the implemented product achieves the goals in SRS. During this phase, all types of functional testing like unit testing, integration testing, system testing, acceptance testing, and non-functional testing are done. From this phase, we can reduce many faults and can give a satisfying product for customers.

5) Deployment

After all testings and bug fixes are done, we can deploy the product. Here we can deploy the software in the development environment, or we can do User Acceptance Testing (UAT). This will depend on the client. Most developing teams like to move their product with different development environments and find problems that can be arisen. Here, we can find the final faults of the product before releasing it to the market. In some projects creation of documentation and marketing material is done in this phase.

6) Maintenance

This is the last phase of SDLC. When it comes to users after deployment, the actual problems arise. Based on customer feedback, developers will do enhancements to the product and will clear issues. Here developers need to consider about restart the cycle of development again because this is an iterative process. Then developers can upgrade the product to the newer version of the software.

Now let’s see look at what are the famous software development model.

1) Waterfall Model — Linear Sequential Model

This model is the first one that uses SDLC. In this model, the whole process divides into phases, and after one phase finish, we can move to the next phase. Always output of the previous step is an input for the next step. This is a tried and tested model.

Advantages -

Simple and easy to understand.

Whole process divide into phases.

Deliverables of each phase well define.

Easy to manage.

Disadvantages -

Gets more time to develop a product using the waterfall model.

Can’t use for short duration projects.

Can’t start a new phase until the ongoing phase is completed.

Can’t use for projects that have uncertain requirements because it costs more to change them at later steps.

2)Agile Model

Agile model is designed considering to put user needs first. This model mostly considers user experience and input. This model can use in any project and it keeps continuous interaction in development and testing. Here, the whole project divides into small incremental builds. All of these builds are provided in iterations, and these iterations are called “sprints”. This is a combination of iterative and incremental model.

Advantages -

More flexible to adapt to changes.

Can add new features easily.

Take customer feedback and suggestions at every stage.

Disadvantages -

Lack of documentation.

Need experienced resources.

A project can fail if the customer hasn’t a clear idea about the product.

3) Iterative Model

In the iterative model whole process divides into small chunks. Developers create an initial version quickly and test it. Then find faults in the product and make it improve in future versions. This model mostly uses in large projects. It can get an application up and functional quickly to meet a business need. Phases of the iterative model are the inception phase, the elaboration phase, the construction phase, and the transition phase.

Advantages -

Can easily manage the product.

Can easily do any change in the requirement without much cost.

Analyze and identify risk in the iterations.

Detect defects at an early stage.

Disadvantages -

Need a complete understanding and requirement of the product.
Can exceed its scope quickly and risks using unplanned resources.

4) Spiral Model

The spiral model is the most flexible model among these models and it is riskier. This is somewhat similar to the iterative model because of its repetition and it has features of the prototype model. The spiral model has planning, risk analysis, engineering, and evaluation phases. Developers can work with different phases at the same time in this model.

Advantages -

Risk analysis was done using prototype models.

Enhancements and changes of functionalities can be done in the next iteration.

Disadvantages -

Better suit for only large projects.

Cost more because of the large number of iterations and much time.

5) V Model — Verification and Validation Model

V model is an extension of the waterfall model. In this model, we can test at each stage of the development. This model is used for testing and development. The phase is planned in parallel to the verifying stage on one side and the validation stage on another side, and both of these phases are joined by the coding phase.

Verification phase -

Requirement analysis, System design, High-level design, Low-level design, Coding

Validation phase -

Unit testing, Integration testing, System testing, Acceptance design

Advantages -

Simple and easy to understand

Better for small projects

Can have high-quality products

Disadvantages -

Not good for ongoing projects

If requirements change at a later stage, it will cost more.

I hope you got a good knowledge of the software development life cycle and the different models that used SDLC. Thank you for reading my article.

RESOURCES :

--

--