Software is required for an “internet café” software system as described below:
The system controls all PCs in the café’s local network. New users must register to use the PCs. The
supervisor enters user details into the system which then produces a magnetic-strip card for that user. On
payment of a fee the system writes on the card the appropriate amount of “credit time” and the user can
then place it in a PC card-reader to operate the PC. No actual login is needed as the system obtains the
user’s ID from the card. When finished the user simply removes the card (any time left on the card can
be used next time). While using the system, the remaining time is shown at the bottom of the screen, and
a message is displayed when only 3, 2 or 1 minutes remain, and finally the user is logged off when the
paid-for time expires. The system stores information about users and their usage times, and can produce
various reports at the supervisor’s request.
• Working alone (not in groups), produce a layered partial software design for the above system
using Rational Rose. The design need not be complete, for example the user interface is not
important. However all submissions must include the following:
1. The class diagram of the overall layered software design.
Your design must make appropriate use of GRASP and GoF patterns.
Advice: the layers and the patterns must be made obvious in your design
2. A detailed design sequence diagram that realizes a major use-case (or thread
of execution). [see Note A] This development is interdependent with (3).
3. A sub-set of the design class diagram in (1) showing the detailed design of
the classes involved in the use case above. This must show:
(a) The types of all the attributes.
(b) The return types of the methods that appear in the sequence diagram (but
not the other methods)
(c) The arguments and argument types for the methods that appear in the
sequence diagram (but not the other methods)
[See Note B] This development is interdependent with (2).
4. a state diagram for a significant class involved in that use case.
Advice: make sure it is a state diagram (not a flowchart of tasks, actions and
5. Skeleton Java code listings for three of these classes, to be produced as
(a) Use the code generator in Rose to generate the skeleton Java code for the
(b) Edit the Java code to include appropriate Contract4J or iContract style
DbC assertions (contract tests).
Advice: clear narrative assertions may be used for difficult cases, but only
6. In addition to the diagrams from Rational Rose, you will need to include
appropriate descriptions and explanations of your design into the relevant sections
of the design document. In particular you must include discussion reflecting on
the design decisions you made such as your layers, major patterns you used, why
you used them, and where you used them.