Formalmethods are particularly effective early in development at the requirements and specification levels, but can be used for a completely formaldevelopment of an implementation (e.g., a program).
Formalmethods may be used to give a description of the system to be developed, at whatever level(s) of detail desired.
At times, proponents of formalmethods have claimed that their techniques would be the silver bullet to the software crisis.