Software prototyping is the process of iteratively creating incomplete versions of an application, resulting in its progressive improvement. This is similar to the prototyping commonly performed in other fields such as manufacturing and mechanical engineering. A software prototype typically only performs a few of the required features and may be quite different from the final product. The primary advantage of prototyping over traditional software development is that developers receive regular feedback from users, which begins early in the project. Developers and users were able to quickly determine how well the prototype matches the software specifications used to build prototype. Furthermore, project managers are able to determine whether their initial deadlines and milestones are realistic.