Listen to this Article



What and Why

What? 

Software(or System or Application) Development Life Cycle is a systematic process that enables the production of high-quality, low-cost software in the shortest possible time. It includes frameworks describing all aspects of the software development project from planning, requirements gathering, analysis, implementation, testing, documentation, deployment, and maintenance.

Why? 

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

  • It provides a practical framework and method to develop software applications.
  • It helps in effectively planning before starting the actual development. In addition, SDLC allows developers to analyze the requirements.
  • It helps in reducing unnecessary costs during development. During the initial phases, developers can estimate the costs and predict costly mistakes.
  • It enables developers to design and build high-quality software products. This is because they follow a systematic process to test the software before it is rolled out.
  • It provides a basis when evaluating the effectiveness of the software. This further enhances the software product.

Steps

SDLC encompasses seven steps, which are followed in a logical order.

Requirements  gathering,  Planning

The requirement is the first stage in the SDLC process. The senior team members conduct it with inputs from all the stakeholders and domain experts in the industry. Planning for the quality assurance requirements and recognizing the risks involved is also done at this stage.

This stage gives a clearer picture of the entire project's scope and the anticipated issues, opportunities, and directives that triggered the project. Requirements gathering stage needs teams to get detailed and precise re- requirements. This helps companies to finalize the necessary timeline to finish the work of that system.

System and Feasibility analysis

Once the requirement analysis phase is completed, the next SDLC step is defining and documenting software needs. This process is conducted with the help of the 'Software Requirement Specification’ document, also known as the 'SRS' document. It includes everything which should be designed and developed during the project life cycle.

There are mainly five types of feasibilities checks:

  • Economic: Can we complete the project within the budget or not?
  • Legal: Can we handle this project as per cyber law and other regulatory frameworks/compliances.
  • Operation feasibility: Can we create operations that the client expects?
  • Technical: Need to check whether the current computer system can support the software
  • Schedule: Decide whether the project can be completed within the given schedule or not.

Design and Modeling

The system and software design documents are prepared in this third phase as per the software requirement specification document. This helps define the overall system architecture. In addition, this design phase serves as input for the next phase of the model.

There are two kinds of design documents developed in this phase. High- level and Low-level design. 

High-Level Design (HLD)

  • Brief description and name of each module
  • An outline about the functionality of every module
  • Interface relationship and dependencies between modules
  • Database tables identified along with their key elements
  • Complete architecture diagrams along with technology details

Low-Level Design (LLD)

  • Functional logic of the modules
  • Database tables, which include type and size
  • Complete detail of the interface
  • Addresses all types of dependency issues
  • Listing of error messages
  • Complete input and outputs for every module

Design elements describe the desired system features in detail. They generally include functional hierarchy diagrams, screen layout diagrams, tables of business rules, business process diagrams, pseudo-code, and a complete entity-relationship diagram with a full data dictionary. These design elements are intended to describe the system in sufficient detail, such that skilled developers and engineers may develop and deliver the system with minimal additional input design.

Development/Coding/Implementation

Once the system design phase is over, the next phase is coding. In this phase, developers start to build the entire system by writing code using the chosen programming language. In the coding phase, tasks are divided into units or modules and assigned to the various developers. It is the most prolonged phase of the Software Development Life Cycle process.

In this phase, the developer needs to follow specific predefined coding guidelines. They also need to use programming tools like compilers, interpreters, debuggers to generate and implement the code. 

Testing

Once the software is complete and it is deployed in the testing environment. The testing team starts testing the functionality of the entire system. This is done to verify that the entire application works according to the customer's requirements.

During this phase, the QA and testing team may find bugs/defects that they communicate to developers. Then, the development team fixes the bug and sends it back to QA for a re-test. This process continues until the software is bug-free, stable, and working according to the business needs of that system.

The following are types of testing that may be relevant, depending on the type of system under development:

  • Defect testing the failed scenarios, including
  • Path testing
  • Data set testing
  • Unit testing
  • System testing
  • Integration testing
  • Black-box testing
  • White-box testing
  • Regression testing
  • Automation testing
  • User acceptance testing
  • Software performance testing

Deployment and Delivery

Once the software testing phase is over, and there are no bugs or errors left in the system, the final deployment process starts. Based on the feedback given by the project manager, the final software is released and checked for deployment issues, if any.

Operations and maintenance, Bug and change requests, enhancements

The actual problem starts when the customer starts using the developed system, and those need to be solved from time to time. Maintenance is the seventh phase of SDLC, where the developed product is taken care of. According to the changing user end environment or technology, the software is updated timely.

Once the system is deployed and customers start using the developed system, the following three activities occur.

  • Bug fixing – bugs are reported because of some scenarios that are not tested.
  • Upgrade – Upgrading the application to the newer versions of the software
  • Enhancement – Adding some new features into the existing software

Environment

Environments are controlled areas where systems developers can build, dis- tribute, install, configure, test, and execute systems that move through the SDLC. Each environment is aligned with different areas of the SDLC and is intended to have specific purposes. Examples of such environments include the following:

  • development environment: where developers can work independently of each other before trying to merge their work with the work of others;
  • common build environment: where merged work can be built, together, as a combined system;
  • systems integration testing environment: where basic testing of a sys- team's integration points to other upstream or downstream systems can be tested;
  • user acceptance testing environment: where business stakeholders can test against their original business requirements; and
  • production environment: where systems finally get deployed for final use by their intended end-users.

Models

Waterfall Model

This SDLC model is considered to be the oldest and most forthright. We finish with one phase and then start with the next, with the help of this methodology. Why the name waterfall? Because each of the phases in this model has its own mini-plan, and each stage waterfalls into the next. A drawback that holds back this model is that even the tiny details left incomplete can hold an entire process.

Iterative Model

This SDLC model stresses on repetition. Developers create a version rapidly for relatively less cost, then test and improve it through successive versions. One significant disadvantage of this model is that it can eat up resources fast if left unchecked.

V-Shaped Model

This model can be considered an extension of the waterfall model, as it includes tests at each stage of development. However, just like the case with waterfall, this process can run into obstructions.

Big Bang Model

This SDLC model is considered best for small projects as it throws most of its resources at development. However, it lacks the detailed requirements definition stage compared to other methods.

Spiral Model

One of the most flexible of the SDLC models is the spiral model. It resembles the iterative model in its emphasis on repetition. However, even this model repeatedly goes through the planning, design, build and test phases, with gradual improvements at each stage.

Agile Model

Agile is the new normal; It is one of the most utilized models, as it approaches software development in incremental but rapid cycles, commonly referred to as "sprints ."With new changes in scope and direction being implemented in each sprint, the project can be completed quickly with higher flexibility. In addition, agile means spending less time in the planning phases, and a project can diverge from original specifications.

References

https://en.wikipedia.org/wiki/Software development process 

https://www.section.io/engineering-education/understanding-software-development- life-cycle

https://www.betsol.com/blog/7-stages-of-sdlc-how-to-keep-development-teams- running

https://www.guru99.com/software-development-life-cycle-tutorial.html#2