A software development process, also known as a software development life-cycle (SDLC),
is a structure imposed on the development of a software product. Similar terms include
software life cycle and software process. It is often considered a subset of systems
development life cycle. There are several models for such processes, each describing
approaches to a variety of tasks or activities that take place during the process.
Some people consider a life-cycle model a more general term and a software development
process a more specific term. For example, there are many specific software development
processes that 'fit' the spiral life-cycle model. ISO/IEC 12207 is an international
standard for software life-cycle processes. It aims to be the standard that defines
all the tasks required for developing and maintaining software.
Planning is an objective of each and every activity, where we want to discover things
that belong to the project. An important task in creating a software program is extracting
the requirements or requirements analysis. Customers typically have an abstract
idea of what they want as an end result, but do not know what software should do.
Skilled and experienced software engineers recognize incomplete, ambiguous, or even
contradictory requirements at this point. Frequently demonstrating live code may
help reduce the risk that the requirements are incorrect.
Implementation, testing and documenting:
Implementation is the part of the process where software engineers actually program
the code for the project.
Software testing is an integral and important phase of the software development process.
This part of the process ensures that defects are recognized as soon as possible.
Deployment and maintenance:
Deployment starts directly after the code is appropriately tested, approved for release,
and sold or otherwise distributed into a production environment. This may involve
installation, customization (such as by setting parameters to the customer's values),
testing, and possibly an extended period of evaluation.
Maintaining and enhancing software to cope with newly discovered faults or requirements
can take substantial time and effort, as missed requirements may force redesign of