CS 4/53901 Software Engineering
Assignment 1


UML Assignment - Simple Voice Messaging System

This system is a simple phone voice messaging system. It acts as an answering service for an organization wide phone system. You are to construct the software for the message system only and can assume that the hardware for the phone system, dialing, and message recording are in place.

The interface to the Phone System is given below; you will be building this mail system as an add-on to the Phone System and must use this API.
 
PhoneSystem
    Pickup       ()                   //Initiates one end of a connection
    Hangup       ()                   //Ends a connection
    dial         (char)               //Allows dialing of '0'..'9', '#', '*'
    play         (message)            //Play message
    connection   ()        : Boolean  //True if a connection exists
    record       (int)     : message  //Record a message until hangup() or time
                                      //limit (seconds) is reached
    getRingCount ()        : int      //Returns the number of rings
    getDial      ()        : char     //Returns the character dialed (buffered)
                                      //returns 0 if buffer is empty
                                      //returns -1 if a hangup occurs
    getExtension ()        : string   //Returns the current extension
    
 


The mail system is activated after n (e.g., 4) number of rings without a pickup (answer) from the extension owner. Each mailbox is indexed by a unique extension that is determined by the phone system. Some numbers belong to active extensions; others do not. If an inactive extension (has no mailbox) has been dialed, an error message is generated telling the caller then the mail system reverts to its initial state. If an active extension has been reached, the mailbox's greeting is played. Unless changed by the owner, the greeting is:

"You have reached extension xxxx.
If you would like to leave a message press 1
If you would like to access a mailbox press #".


At this point, the caller can record a message by talking. The message is ended with a hang up or a timeout in number of seconds. Alternatively, callers can press the "#" key to access their own mailboxes from a phone and enter in the proper extension and password. An owner can also dial "8888" from their own phone and just enter their password to access their mailbox.

The phone system interface allows access for the caller and the message system. When a pickup is done and dial tone is set and a connection is initiated. The caller can then dial an extension and system will ring an extension until someone does a pickup at the other end or the caller hangs up. Connection will be true so long a hangup is not executed. The Phone System manages all other aspects of the connections, message recording, and message playback. All characters dialed are buffered in a queue which is accessed via getDial. All interface calls are blocking and as such the message system will wait until the interface call has completed execution and a value returned.

An administration mailbox exists and has extended functionality to manage the mail system. The admin mailbox can add or remove a mailbox and set a user's password.

The following are a subset of the system menu options:

Accessing a Mailbox
To restrict access to a mailbox to its owner, the system prompts for a password. After the mailbox owner has entered the correct password, it is possible to retrieve messages from the mailbox or to change mailbox settings. The user options menu is:

Press 1 to retrieve your messages.
Press 2 to change your greeting.
Press 3 to change your password.

Retrieving Messages
The first message is displayed. Then the message options menu is:
Press 1 to play the current message.
Press 2 to delete the current message.
Press 3 to skip the current message.

After the selection is processed, the next message is played or an acknowledgement of the action is given. This repeats until all messages are played. Then the user options menu is repeated. At any time, the caller may hang up. New messages are played in the order in which they were received. After all new messages are played, the saved messages are played in the order in which they were saved.

Assignment (using a UML tool of your choice):
  • Give Use-Case diagram(s) for the specified system
  • Develop detailed scenarios for (these should be typed up neatly):
    • accessing a mailbox
    • retrieving a message
    • deleting a message
    • leaving a message
  • Give a data dictionary and initial object mode for the system
  • Using a UML tool:
    • Develop detailed sequence diagrams for each of the scenarios above.
    • Develop a detailed class diagram that describes the necessary design elements for this part of the system.
  • The design must reflect that the system will need to be multi-threaded to support multiple simultaneous users.


URL:http://www.cs.kent.edu/~jmaletic/cs43901/hw1.html
Last update: Wed Feb 24 10:35:39 2010 EST