WRIGHT STATE UNIVERSITY
Department of Computer Science
and Engineering
                         CEG860 Winter 2010                                                                                                                                           Prasad
             
                                                    The Elevator Problem  (20 pts)   (Due: March 2)

The elevator problem, an example of Discrete Event Simulation, is a classic problem of Software Engineering.

1. Background

The original description, which is about the operation of a single elevator in the Mathematics Building of the California Institute of Technology, can be found in Section 2.2.5 of Donald Knuth's monumental work The Art of Computer Programming, Vol. I, Fundamental Algorithms, now in its Third Edition (1997) (from Addison Wesley). As a first cut, you can ignore issues concerning the physical properties of the elevator including maximum load/capacity, velocity and acceleration of the elevator, the time delays for doors to open and close, that Knuth details.

The simplified minimal requirements can be stated in terms of the following constraints, adapted from Stephen R. Schach's Classical and Object-Oriented Software Engineering, Fourth Edition (1999) (from WCB-McGraw Hill):

For further questions and clarifications, use or experiment with Russ Engineering elevators. As a last resort, make reasonable assumptions.

2. Object-Oriented Programming Problem

You are to analyze the problem requirements to come up with an adequate specification.

Now design a solution to the problem using Object-Oriented Concepts. You will find Chapter 22 (and Chapter 20) of Bertrand Meyer's Object-Oriented Software Construction useful in structuring your program. You will find knowledge of Java/Java APIs (resp. C++/MFC classes), which encapsulate certain useful design patterns, in easing later translation into an implementation. You are welcome to study the Object-Oriented Design given in Schach's book to better understand the issues.

You are eventually required to build and test (1) a batch-version of the program that can simulate the behavior of a single elevator subjected to input requests from people on various floors and inside the elevator, and (2) a simple interactive-version of the two elevator problem with a GUI in Java (resp. C++) to visualize this behavior.


What to hand in?

For this exercise, you need to turn-in the following documents through email to t.k.prasad@wright.edu.

1.
An informal specification of the problem (after analyzing the requirements),
2.
An object-oriented design of a solution (in terms of classes and services provided by them, interactions between objects, state transition diagrams, etc), and
3.
A concrete Java (resp. C++) implementation.

If you are using any material from well-known sources, please cite them in the document.

Minor points motivated by past lapses


Grading

Your work will be graded on what you turn-in by the due date, plus a demonstration of the turned-in working prototype.

The implementation you turn-in must be entirely your own and for this course. Plagiarism will automatically earn you a grade of F.


T. K. Prasad ( 01/19/2010 )