The software development process or life cycle is a structure applied to the development of a software product. There are several models for such processes (such as the agile method), each describing approaches to a variety of tasks or activities that take place during the process.
- 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.
- Specification. Specification is the task of precisely describing the software to be written, in a rigorous way. In practice, most successful specifications 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. Specifications are most important for external interfaces that must remain stable.
- Software architecture. The architecture of a software system refers to an abstract representation of that system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that future requirements can be addressed.