|Source: Ann E.K. Sobel, Michael R. Clarkson, Formal Methods Application: An Empirical Tale of Software Development, IEEE Transaction on Software Engineering, Vol 28, No. 3, March 2002, page 310|
You are to create a program that allows a user to issue a set of elevator requests, floor and direction. These are entered through menus and dialogs and are displayed in the “request” view. A request contains the floor at which the request is made and also the floor to which the user wants to go. In another view, the elevator and floors are graphically displayed. When the user presses the “GO” button in this graphic view, the elevator proceeds to process the requests that have been entered via the other view. The application shows the elevator going from one floor to another processing these requests. The current request, current floor, and status of elevator (stopped, moving up, moving down) should be displayed in text at the bottom of this graphic display. While the elevator is processing these requests, the user may enter other requests in the other view. The elevator scheduling algorithm should examine all current requests to determine the next floor and direction. When a new request is added, the algorithm should recalculate the next floor and direction.