During the process of software development, there are various software development approaches that are defined and designed to aid in the process. These are commonly referred to as Software Development Process Models.

Plenty of such models exists, like Waterfall model, incremental model, V-model, iterative model, Rad model, Agile model, Spiral model, Prototype model, and many more. Each of these models follows a specific life cycle of their own in order to achieve success in the software development process.

The phases of the software cycle and the order in which all those phases should be executed, depends on the software life cycle model chosen for that particular software development process. Each phase of the software life cycle readies the software for the next phase of the cycle.

For every software life cycle model, requirements are translated into design and the Code is written according to the design. This phase is commonly known as development phase. After the code is written and the development phase is complete, the testing process verifies that everything is done according the requirement design.

For this testing purpose, the testing team too follows a Software Testing Life Cycle (STLC). This life cycle is similar to the development cycle used by the development team.

For any given Software Development Life Cycle model, there are six phases that are common. These six phases are

  • Requirement gathering and analysis
  • Design
  • Implementation or coding
  • Testing
  • Deployment
  • Maintenance

These six phases of a Software Development Life Cycle model are further explained in detail below.

Requirement Gathering and Analysis

In this phase, business requirements are gathered and compiled. For project managers and stakeholders, this is the most important phase as the complete requirements of the software product are decided in this very phase.

Meetings with the managers, stakeholders and users are organized and the requirements for the product are determined. Questions like “Who is going to use the system? What will they use the system for? What should be the user interface design? What is the input and output of the system?” are answered.

After the requirements gathering phase, all these requirements are analysed for their validity and the possibility of incorporating these in the software being developed is also checked.

Finally, when everything is said and done, a Requirement Specification document is created. This document then acts as a guidebook for the coming phases of the Software Development Life Cycle model. On the other hand, the testing team implements the Software Testing Life Cycle and begins the Test Planning phase after their requirement analysis is complete.

Design

In this phase, the system and software design is prepared using the requirement specifications document. Creating a system design helps in specifying the hardware and system requirement along with defining the overall structure of the system. This system design specifications, then act as an input for the next phase of the model.

For testers, in this phase, a Test Strategy is defined, where it “what to test and how to test” is determined.

Implementation/Coding

After the system design phase is completed, the work is divided in modules or units and actual coding begins. Since, the code of the software is written in this phase, this phase is the main focus for the developer. Also, this is the longest phase of the Software Development Life Cycle.

Testing

Once the software code is written, it needs to be tested to make sure that the product meets the requirements. Moreover, this phase also verifies whether all the needs addressed and gathered during the requirements phase are met or not.

In this phase, all kinds of functional testing like unit testing, integration testing, system testing, and acceptance testing are done. This phase also includes, non-functional testing as well.

Deployment

After the testing phase is successful, the product is deployed to the customers for their use. The first part of deployment includes beta testing, where just a few users are allowed to use the product to make sure everything is working as expected.

If any bugs or errors are identified by the users in beta testing, they will report these to the engineering team, which will then fix these bugs and errors and ready the product for the final deployment, i.e. available for all users.

Maintenance

Once the users get used to the developed product, maintenance is required. This is where the daily bugs and problems need to be solved from time to time basis. This phase continues till the software is developed to its max or till it is being supported by the company.