Software Development Life Cycle

People from software background may have heard a lot about SDLC.

But what actually is it? 

Let’s discuss in depth about SDLC and its different phases.

SDLC stands for Software Development Life cycle. It is basically a process or a methodology to ensure that a good quality software is build. The software development life cycle is not only a great way to ensure whether the product meets the needs of your business and customers, but it is also essential in supporting the product once it’s published. For this the SDLC is divided into different phases. The different phases of SDLC are shown in the diagram below.
Software Development Life Cycle

SDLC Phases
1) Requirements Gathering and Analysis : 

This is the first phase of SDLC and plays a vital role for the next preceding phases. In this phase requirements are gathered with continuous communication taking place between stakeholders, end users and the project team. The main intention of this phase is to figure out what the customers actually needs. Once the requirements are confirmed the same is then documented in Requirement Specification document which then referred in the further phases of SDLC. The Business Analysts are the one who play a major role in this phase.

2) Designing :
In designing phase, Requirement Specification document is used to define how the application will be written. Based on this Technical design requirements are prepared by lead development staff that can include architects and lead developers. This phase is more of a technical discussion. Also testers discuss the test strategy or what and how testing will be carried out. Given below are few points which are usually covered :

  • Risk Analysis: Threats and vulnerabilities likely to be encountered, highly secured projects like a banking application involving what extent of personal data to collect, how to collect it, and permissions/authorizations to make changes.
  • Functional Specifications: How the flow of the application should be, what all fields should be mandatory, etc.
  • Non-Functional Specifications: Performance, Response times, Bandwidth, Extensibility of the system.

3) Implementation :
On the basis of the output from the Designing phase the actual development of the product starts in the Implementation which is also referred as Coding phase. This is normally the longest phase of the SDLC. The finished product here is provided as input to the Testing phase.

4) Testing :
Once the application is migrated to a test environment, different types of testing will be performed including unit testing, integration testing, system testing, acceptance testing as well as non-functional testing are also done. User acceptance testing is the last part of testing and is performed by the end users to ensure the system meets their expectations. At this point, defects may be found and more work may be required in the analysis, design or coding. 

5) Deployment :
Once testing is completed and the testing team marks the product as Fit for Customer, it is then deployed to the customer for their use. We may have seen many times whenever any software is released its first version is named as Beta version. The intention for releasing a beta release is to allow customers for performing beta testing. If any bugs are found then they send their feedback to the engineering/development team and finally most stable version is released.

6) Maintenance :
Continues improvement and fixing of the software is essential for any product, for this reason Maintenance phase proves to be very efficient. Actual problems are encountered when the customers start using the product in actual real time environment. So the phase where the developed products working and behaviour is continuously tracked is referred to as Maintenance phase.
This was all about the phases involved in SDLC. So we can conclude that SDLC is just a cycle. It doesn’t terminate until the application retires. The iterative process can go on for as long as more items are added in response to potential needs. It often requires on-going innovation from the developers. So it can be said that the success of a product or software majorly depends whether all phases of SDLC are followed strictly.

Now the question arises are there any specific ways or methods to implement SDLC. And the answer is YES. The different ways or methods of SDLC are nothing but referred as SDLC models. There are many different SDLC models which are listed below :

  1. Waterfall model
  2. V model
  3. Incremental model
  4. RAD model
  5. Extreme Programming(Agile model)
  6. Iterative model
  7. Spiral model
  8. Prototype model

Out of all the above models the Agile model is the one which is most commonly used now a days.

Choosing the right SDLC model :
Based on the software application or product different organizations prefer different models. But selecting a Software Development Life Cycle (SDLC) model is a challenging task for many organizations. But it can be achieved successfully only if we have proper understanding of the pros and cons of each of the above mentioned model.

All the above models will be discussed in brief in the next article on SDLC models – Advantages and Disadvantages.

1 comment: