The realization of a generic application can be done on the basis of the system elements (specification, architecture, knowledge of the hardware architecture) and/or after having identified the parameter data and the links with the software. The objective of the needs analysis is to verify the fulfillment of the client's expectations and the technological feasibility. The purpose of the specification phase is to describe what the software is meant to do. The description of each module/component (data, algorithms) is set out as part of the design. The design phase is separated into two steps: (i) known as “preliminary design”, involves identifying the data to be handled by the software and the necessary services; and (ii) “detailed design” involves describing all of the application's services by means of their algorithms. The design phase then leads into the coding phase.