Cybervid Exercise for CS 582

As you enter the new CyberVid movie rental outlet, you are greeted by walls lined with interactive video display terminals, complete with keyboards and touch sensitive screens.

As you approach a terminal, you see that it is displaying short clips from currently popular new video releases.

The moment you touch the screen or hit a key on the keyboard, the terminal asks you some introductory identification questions, then permits you to browse the complete offerings of the store.

You can search for movie titles by name, by category (comedy, horror, science fiction, family, classic, and so on), by actor, by director, or other means. With each title you can view on the screen a short video preview of the movie, along with other informative information (rating, major actors, director, date, synopsis of plot).

As you browse the movies, the system is automatically maintaining a list of titles you have selected. When you finish your browsing, the system instructs you to proceed to the counter at the back of the store.

When you arrive at the counter, your videos will already be waiting for you to check out.


Your task is to design the software system that will run the prototype version of the CyberVid terminals. Because this is a prototype (to be used to impress those who might provide financial backing for the venture), you can assume there is are only two devices; the video rental terminal and a printer at the back of the store. When you are finished you should have a complete set of CRC cards for the components in your design, and be able to simulate various scenarios describing different patterns of use.

Here are some questions to get you started:

  1. Does the system need to have a record of an individual before the system can be used? Can somebody just walk in off the street and begin using the terminal?
  2. What happens if somebody decides, after reviewing several films and making several selections, that they do not want to rent any movies after all.
  3. What happens if, after selecting several titles, the user decides they do not want to rent one of the movies earlier selected?

And questions for your design:

  1. Are the responsibilities of every component clearly laid out?
  2. What decisions do you need to make in order to separate the design into components, and what decisions can you postpone resolving, because they are entirely contained within a single component?
  3. What information needs to be shared between components? What information can be entirely contained within a component?
  4. Are the components independent of each other? Could one component be developed in isolation from the rest of the system? <\ol>