Software development is conversion of user requirements into a computer based program. It is used to automate tireless, lengthy and complicated processes as it saves effort, time and resources. It may comprise of new development, alteration of existing code or just maintenance of an existing system.

A software development process is a systematic approach for planning and controlling the process of developing and implementing software. There are many software development processes used in the industry with different operating steps and flow.

Common software development life cycle phases are:

Requirement analysis: In this phase functional requirements of a user are collected, understood and converted into software requirements.

Design: Certain design objectives like execution time, accuracy, also needs to be specified in this phase. Depending on the software requirements and the design objectives the design of the software in terms of the algorithm to be used is decided in this phase.

Coding: This is the phase where coding or software programming is done. The design objectives and the software requirements are taken as input to write the programs.

Testing: After the code has been written, the software is tested to check for errors and to verify if the program is giving the desired output.

Three categories of testing include:

Unit testing: Each unit of the software is checked separately to ensure that its error free and is giving the desired result.

Integration testing: Once unit testing is completed the software programs are combined to check if the data flow between different units is correct and if after combining the units the software is not throwing an error.

System testing: System testing is done on the complete software to ensure that the complete software as a package is running properly without errors and is fulfilling its functional requirements.

Two types of testing include:

Black box testing: It focuses on creating test cases for testing the software based on the functional requirement specified by the user.

White box testing: It focuses on creating test cases for testing the software based on the logic of various program units

Implementation: Once the program is tested and the bugs are fixed the software is installed at the client’s side and the users are trained on how to use the software.

Maintenance: This phase is an optional phase for any software development project for a company and it depends on whether the client wants the developer to maintain the software for any bugs identified after the software has been implemented and for any up-gradation and addition of new requirement modules to the existing system.

Different software development models include waterfall model, spiral model, prototyping, agile methodologies, etc. The main objective of implementing a software development process is to ensure delivery of quality software to the client in terms of zero errors, user friendly and ability to cater to the functional requirements of the client. A few characteristic of quality software are correctness, robustness, usability, portability, efficiency, maintainability, reliability, flexibility, security, interoperability and performance.