SETL with the intent of producing an executable semantic model for the Ada language, emphasizing clarity of design and user interface over speed and efficiency. The NYU Ada/ED system was the first validated Ada implementation, certified on April 11, 1983. Outline The process of prototyping involves the following steps: Identify basic requirements Determine basic requirements including the input and output information desired. Details, such as security, can typically be ignored. Develop initial prototype The initial prototype is developed that includes only user interfaces. (See Horizontal Prototype, below) Review The customers, including end-users, examine the prototype and provide feedback on potential additions or changes. Revise and enhance the prototype Using the feedback both the specifications and the prototype can be improved. Negotiation about what is within the scope of the contract/product may be necessary. If changes are introduced then a repeat of steps #3 and #4 may be needed. Dimensions Nielsen summarizes the various dimensions of prototypes in his book Usability Engineering: Horizontal prototype A common term for a user interface prototype is the horizontal prototype. It provides a broad view of an entire system or subsystem, focusing on user interaction more than low-level system functionality, such as database access. Horizontal prototypes are useful for: Confirmation of user interface requirements and system scope, Demonstration version of the system to obtain buy-in from the business, Develop preliminary estimates of development time, cost and effort. Vertical prototype A vertical prototype is an enhanced complete elaboration of a single subsystem or function. It is useful for obtaining detailed requirements for a given function, with the following benefits: Refinement database design, Obtain information on data volumes and system interface needs, for network sizing and performance engineering, Clarify complex requirements by drilling down to actual system functionality. Types Software prototyping has many variants. However, all of the methods are in some way based on two major forms of prototyping: throwaway prototyping and evolutionary prototyping. Throwaway prototyping Also called close-ended prototyping. Throwaway or rapid prototyping refers to the creation of a model that will eventually be discarded rather than becoming part of the final delivered software. After preliminary requirements gathering is accomplished, a simple working model of the system is constructed to visually show the users what their requirements may look like when they are implemented into a finished system. It is also a form of rapid prototyping. Rapid prototyping involves creating a working model of various