SDLC (Overview) | Software Development Life Cycle (SDLC)

Software Development Life Cycle (SDLC) is a process that defines the various stages involved in the development of software. It is a framework that defines activities that are performed during the software development process. It covers the detailed plan for building, deploying and maintaining the software.

It is a systematic approach that generates a structure for the developer to design, create and deliver high-quality software based on customer requirements and needs. The primary goal of the SDLC process is to produce cost-efficient and high-quality products. It aims to produce quality software that exceeds customer expectations, meets deadlines and cost estimates.

The software development life cycle (SDLC) is a process used for structuring the development of any software system, from initiation through implementation. It defines the complete cycle of development i.e. all the tasks involved in planning, designing, testing, and deploying a Software Product.

The life cycle defines a methodology for improving the quality of software and the overall development process. It enables the production of high-quality, low-cost software, in the shortest possible production time. 


The following figure is a graphical representation of the various stages of a SDLC:







Phases of SDLC (Software Development Life Cycle):


Project Planning:

The planning stage (also called the feasibility stage) is the phase in which developers will plan for the project. Project planning is a vital role in the software delivery lifecycle since this is the part where the team estimates the cost and defines the requirements of the software. This typically includes resource allocation, capacity planning, and project scheduling and cost estimation.

During the planning phase, the development team collects input from stakeholders involved in the project; customers, sales, internal and external experts, and developers. This input is synthesized into a detailed definition of the requirements for creating the desired software. The team also determines what resources are required to satisfy the project requirements, and then infers the associated cost.

The planning phase will determine project goals and establish a high-level plan for the intended project. Planning should clearly define the scope and purpose of the application. 


Requirements Gathering & Analysis:

In this phase, all the relevant information is collected from the customer to develop the product as per their expectation. This is done to clearly understand the customer requirements. Discuss each detail and specification of the product with the customer.

Project Manager set up a meeting with the customer to gather all the information like what the customer wants to build, who will be the end-user, what is the purpose of the product. Before building a product a core understanding or knowledge of the product is very important.

Once the requirement gathering is done, the development team will then analyze the requirements. Requirement documentation is very important activity after the requirement gathering and analysis. This is a way to represent requirements in a consistent format.

During this activity, the user requirements are systematically organized into a Software Requirement Specification (SRS) documents.  This document should be thoroughly understood by the developers and also should be reviewed by the customer for future reference.


Designing the Software:

Once the requirements are understood, software architects and developers can begin to design the software. The goal of design phase is to transform the requirements specified in the SRS documents into a structure that is suitable for implementation in some programming languages.

In this phase, we design the architecture of the system using the SRS documents means we sketched a blueprint of the project on a paper or on a computer.

In other words, Software design is the process of designing the architecture, components, modules, interfaces for a system to satisfy specified requirements.

This phase includes Algorithms, Flowchart, Pseudo-code, Screen layouts and other necessary documentation. The organization also creates user interaction interfaces, data models, and entity relationship diagrams (ERDs) in this phase.


Coding or Implementation:

Coding or implementation starts once the developer gets the Design document. The Software design is translated into source code. In this stage, developers start builds the entire system by writing code using the chosen programming language.

This is the actual writing of the program. A small project might be written by a single developer while a large project might be broken up and worked by several teams.

The system first developed in small programs called modules. In the coding phase, tasks are divided into units or modules and assigned to the various developers.

 

Testing:


Building software is not the end. Now it must be tested to make sure that there aren’t any bugs. Testing starts once the coding is complete and the modules are released for testing. Software testing involves examining and checking the software, through different testing process. The testing is done to ensure that the entire application works according to the customer requirements.

After the development of the software, there can be many defects in the software or software may not work as they are expected. Testing is carried out to verify the entire system. In this phase, the developed software is tested thoroughly and any defects found are assigned to developers to get them fixed. The aim of the testing is to find out the gaps and defect within the system and also to check whether the system is running according to the requirement of the customer.

Testing is an important part of the project because it helps to improve the quality of the project. In this stage, all the pieces of code are tested to verify and validate a software product. The testing team tests the functionality of the entire system.


Deployment:

In the deployment phase, the application is made available to the users. Once the testing is done, and the product is ready for deployment, it is released for customers to use.

After successful testing product is delivered/ deployed to the customer and even customer are trained on now to use the product.


Maintenance:

The maintenance phase is the last but important phase of SDLC. The SDLC doesn’t end when software reaches the market. Once the product has been delivered to the customer, task of maintenance starts as when the customer will come up with an error, the issue should be fixed from time to time.

Software maintenance is modification of a software product after delivery to correct faults, to improve performance, or to adopt the product to a modified environment. According to the changing user end environment or technology, the software is updated timely.

Maintenance is the backbone of the software success. When software is developed, then software needs to be modified from time-to-time to keep it up to date with environment changes and changing the user requirements.

Furthermore, developers are responsible for implementing any changes that the software might need after deployment.

Now a days, the companies are paying more attention towards maintenance of their product. For example, Windows and several antivirus software are regularly updated to maintain their performance.



Importance of SDLC (Why is the SDLC important?)


The software development life cycle adds value to software development in the following ways:

  • It provides an effective framework and method to develop software applications.
  • It helps in effectively planning before starting the actual development. 
  • SDLC allows developers to analyze the requirements.
  • It enables developers to design and build high-quality software products. This is because they follow a systematic process
  • It increases visibility on all aspects of the life cycle to all stakeholders involved in the development process
  • It increases the speed of development
  • It improves client relations
  • It decreases project risks
  • It decreases project management expenses and the overall cost of production. 
  • It helps in reducing unnecessary costs during development. During the initial phases, developers can estimate the costs.




Post a Comment

0 Comments