Software Development Life Cycle

Vaidhyanathan S M
Nerd For Tech
Published in
5 min readNov 21, 2020

In this article we are going to delve deep into the processes involved in the making of a successful software. We will discuss the various stages that the stakeholders and the product itself have to go through in order to be a successful business model.

Courtesy: Pressfoto

Need for Software Development Standards

What is the need for establishing standards for Software Development? It is very important to follow a particular standard or methodology to bring out profitable, useful, reliable and scalable software ensuring customer satisfaction as well. There are various models proposed and standardized by different organizations, business people, software developers, authors and computer scientists.

Let us explore the various stages involved in a typical Software Development Process.

There are 6 stages involved:

  1. Requirements phase
  2. Analysis phase
  3. Design phase
  4. Development phase
  5. Testing phase
  6. Deployment & Maintenance phase

Gathering Requirements

This is the most important phase in the SDLC. In this phase, the technical and business team involved in the project gather complete information about the requirements from the customers. It is critical to not make any assumptions about requirements. Practice active listening and document every elicitation activity.

It involves various activities as follows:

1. Requirements Elicitation

The developers and stakeholders meet ; the latter are inquired concerning their needs and wants regarding the software product.

2. Requirements Analysis

Requirements are identified and conflicts with the stakeholders are solved. Various written and graphical tools such as user stories and UML are used.

3. Requirements Specification

Requirements are documented in a formal artifact called a Requirements Specification (RS) which is officially approved only after validation. For eg. Software Requirements Specification (SRS).

4. Requirements Validation

This process involves checking that the documented requirements and models are consistent and meet the stakeholder’s needs. Only if the final draft passes this validation process, the RS becomes official.

5. Requirements Management

It involves managing all the activities pertaining to the gathered requirements, supervising as the system is developed and being adaptive to the changing requirements.

Requirements engineering is crucial for success of software products.

Analysis

This phase is related to Requirements analysis of the previous phase. It involves critical analysis and thorough study of the requirements and the proposed models. A Feasibility Study is conducted to derive conclusions from the analysis. The feasibility of the project is analyzed considering both the technical and business aspects. It is discussed whether it is possible to materialize the proposed software given the technical and cost constraints.

Courtesy: Pressfoto

Design

In the design phase, based on the requirements gathered and the conclusions derived from the feasibility study, the Design team starts to create design models. The models are designed in such a way that they are suitable for helping the programmers in the development and implementation. Also, most importantly business rules are defined by the business wing of the organization. As far as design pertaining to the software development is concerned, the major activities done are UI layout design, Languages and Frameworks to be used, Database design and Architectural design of the proposed system.

Courtesy: Stories

Software Design process has two levels as shown below.

Courtesy: Javatpoint

Objectives of Software Design

  1. Correctness
  2. Completeness
  3. Efficiency
  4. Flexibility
  5. Consistency
  6. Maintainability

Development

In the development phase, the actual implementation of the proposed software is carried out by the development team taking the models created by the design team as input. It is the responsibility of the development team to follow a set of software development principles and best practices while coding. It is essential for them to make their code as clean and bug-free as possible so that the QA team won’t have to bang their heads trying to figure out loads of bugs.

Courtesy: Pressfoto

Testing

Software testing is the process of evaluating the working of software against various parameters and finding bugs and errors in the code written by the development team. The job of software testers is to validate the software against various test cases and ensure that the functionalities implemented are in-line with the requirements specification.

Courtesy: ph.vector

There are various types of Software testing.

  1. Unit testing
  2. Integration testing
  3. Regression testing
  4. Alpha testing
  5. Beta testing
  6. System testing
  7. Stress testing
  8. Performance testing

It is essential to perform all these types of testing before rolling it out for production.

We will explore the complete process involved in each of the aforementioned testing types in a later article.

Courtesy: Dev.to

After documenting the bugs and finalizing the validation reports, they are sent back to the development team to fix those issues. The development and testing stages are iteratively done until the product is perfect without any bugs.

Deployment and Maintenance

The final version of the bug-free software is given to the Operations team, which are responsible for staging and production of the software. The Operations team is responsible for creating and setting up the server requirements and other hardware related requirements necessary for deploying the software. Then the software is rolled out for use by general public or the customers.

The operations team perform the job of shipping the software by carrying out various activities such as Infrastructure (OS and other hardware) management, Desktop packaging, Database Server setup, etc.

Courtesy: Vectorjuice

After the successful deployment of the software, it is crucial to maintain the software. Maintenance involves activities such as monitoring the server load, number of active users and getting feedback and bug reports from users.

Hope you enjoyed reading the article!

If you have any queries please post in the comment section below. Connect with me on LinkedIn . Also, if you want to look at my amazing collection of apps developed, don’t forget to check Google Play Store.

Know more about me here.

With that being said, thanks for reading my article and Happy Coding!

--

--

Vaidhyanathan S M
Nerd For Tech

Systems Engineer @TCS | Native Android Developer | Enthusiastic Programmer | Skilled in Python, C/C++, Java, Flutter and Flask.