In general a software development process or life cycle includes the following activities:
Requirements Analysis
Extracting the requirements of a desired software product is the first task in creating it. While customers probably believe they know what the software is to do, it may require skill and experience in software engineering to recognize incomplete, ambiguous or contradictory requirements.
Functional specifications
Functional specification is the task of precisely describing the software to be written, in a mathematically rigorous way. In practice, most successful designs are written to understand and fine-tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Functional specifications are most important for external interfaces that must remain stable.
Implementation
According to the Functional specification the software is being realized.
Testing
The aim of test is to check whether the software works as defined is Functional specification.
Maintenance
Maintaining and enhancing software to cope with newly discovered problems or new requirements can take far more time than the initial development of the software.