CS 33901 Software Engineering
Assignment 1 - Design in UML

Design Assignment using UML - 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 message system as an add-on to the Phone System and must use this API.
    Pickup       ()                   //Initiates one end of a connection
    Hangup       ()                   //Ends a connection
    dial         (char)               //Allows dialing of '0'..'9', '#', '*'
    ring         ()                   //Sends a ring to the reciever in connection
    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
A connection (object) is activated after n (e.g., 4) number of rings without a pickup (answer) from the account owner. Each account 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 account has been dialed, an error message is generated telling the caller then the message system reverts to its initial state. If an active account has been reached, the account'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 an account 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 account 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 account.

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 account exists and has extended functionality to manage the message system. The admin account can add or remove a accounts and set a user's password.

The following are a subset of the system menu options:

Accessing an Account
To restrict access to an account to its owner, the system prompts for a password. After the account owner has entered the correct password, it is possible to retrieve messages from the account or to change account 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 are saved.

Assignment (using a UML tool of your choice):
  • Develop Use-Case diagram(s) for the specified system
  • Develop a data dictionary and initial object diagram for the system
  • Develop detailed scenarios for:
    • accessing an account
    • retrieving a message
    • deleting a message
    • leaving a message
  • 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.
  • Submit (in GitHub Classroom) the following documents for the message system:
    • Use case diagrams (using a UML tool)
    • Data dictionary (neatly typed up)
    • Scenarios for the 4 features (neatly typed up)
    • Sequence diagrams for the 4 features (using a UML tool)
    • Class diagram (using a UML tool)

Some UML Tools are listed under resources

Last update: Mon Sep 21 12:23:28 2020 EST