Welcome to web Pages of Vicky Shiv

Resume Experience Projects Courses Thesis Download

 

 

Voice Mail System

This project is the Voice Mail System(VMS) developed in C++ on a UNIX platform. It implements the factory design patterns. It contain linked list and array, two data structure to choose from at the run time. The design methodology followed here is the use of CRC cards.The Booch-method defines different models to describe this system. The logical model (problem domain) represents the class and object structure. The object diagram shows how the classes interact with each other, it captures some moments in the life of the system and helps you to describe the dynamic behavior.This course project is to get a thorough knowledge of Booch Terminology in term of transaction diagrams , interaction diagrams, class diagram ,object diagrams and various notations used in it and apply them to one of the application(Voice Mail System)..

User Specification And Requirement Document
Brief Description Of Functionality of Voice Mail System
CRC Cards
Design Issues
Advantages Of Design
      1. Changes From User Point Of View
      2. Changes From Developer Point Of View
Error Checking
            Test Cases

User specification and Requirement Document

 

Simple voice mail stimulation

1. Reaching an extension

At the outset, the mail message system awaits the input of a four-digit extension number. Some numbers belong to active extensions, others do not. We will see below how active extensions are created. If an inactive extension has been dialed, an error message is generated, and the system reverts to its initial state. If an active extension has been reached, the mailbox greeting is played. Unless changed by the owner, the greeting is You have reached extension xxxx. Please leave a message now.

At this point, the caller can type in a message, by entering the message text on the keyboard. At the end of the message, an `H' should be entered on a single line to denote hanging up the telephone. Only non empty messages should be stored. Alternatively, callers can enter the `#' key to access their own mailboxes.

 

 

2. Accessing a mailbox

To restrict access to the owner of the mailbox, the system prompts for a passcode. After the mailbox owner has entered the correct passcode, it is possible retrieve messages from the mailbox, or to change mailbox settings . the user options menu is displayed:

You have n new messages and s saved messages.

Press 1 to retrieve your messages.

Press 2 to change your greeting.

Press 3 to change your passcode.

(The first command prompt is only shown when messages are pending.) When`1' is pressed, the system enters the message retrieval loop. If the caller selects to change the greeting, the system prompts to record a new greeting. If the caller selects to enter a new passcode, the system prompts to enter a new passcode. Passcodes must be four digits long. Invalid passcodes cause an error message. Upon completion of greeting or passcode change, the main menu is displayed again. If the user hangs up instead of entering a greeting or passcode, no change is recorded .

 

 

3. Retrieving messages

The first message is displayed. Then the message options menu appears:

 

Press 1 to delete the current message.

Press 2 to save the current message.

 

After the selection is processed, the next message is played. This repeats until all messages are played. Then user options menu appears again. At anytime, the caller may hang up by entering `H'. 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.

 

4. Adding new mailboxes

 

When first started, the mail system has one special mailbox, with extension 9999 and passcode 1728, belonging to the administrator and no further active extensions. The administrator mailbox works the same way as all other mailboxes, but has an additional option in the main menu :

Press 4 to add a new extension.

When `4' is pressed, the system prompts to enter the new four digit extension number and then prompts for a four digit passcode. The extension is activated and the main menu is played again.

5. Simulation of voice data and telephone equipment

In our program, we need to simulate the three distinct input events that occur in a real telephone system: speaking, pushing a button on the telephone pad, and picking up and hanging up the telephone. We use the following convention for input: An `H' on a line by itself denotes hanging up the telephone. A sequence of keys `1' ... `9' on a line with no further characters denotes a dialed number. A `#' or `*' on a line by itself denotes pushing one of the command keys on the pad. Any other text denotes voice input.

 

Entering mailbox 0000 terminates the program.

 

 

6. System limits

We need to set some limits on system resources. The following limits are admittedly unrealistic, but they enable us to concentrate on the object oriented features rather than memory management during the programming phase. We set a limit on 10 active mail boxes in addition to the administrator mailbox, up to 20 new and 10 saved messages per mailbox Attempts to generate more active accounts are rejected. If a mailbox with 20 new messages is called, the message You have reached extension xxxx. The mailbox is currently full. is displayed instead of the greeting, and no new message can be stored. If the saved message area is full, the mailbox owner can only discard new

messages.

 

BRIEF DESCRIPTION OF THE FUNCTIONALITY OF VOICE M AIL SYSTEM

 

OPERATIONS OF THE MAIL BOX

Administrator point of view

  • Adding new mail boxes .
  • Deleting mail boxes.
  • Changing the password of the administrator.

 

User point of view

  • Sending messages .
  • Deleting messages .
  • Recording messages .
  • Listen to the messages .
  • Changing password of the mailbox .

ISSUES FOR THE CHANGE IN THE REQUIREMENT

Prone to change from client point of view

  1. Extension can changes from 4 to 5 digits .
  2. Number of stored messages can change .

 

Prone to change from developer point of view

  1. Change in the datastructure used to store messages and mailboxes..

 

CRC Cards for the Different Classes

 

  1. CRC Card for the Message Class.
  2. CRC Card for the Mailbox Class .
  3. CRC Card for the Administrator Class .
  4. CRC Card for the MainSystem Class.
  5. CRC Card for the List Class.

 

CRC Card for the Message Class.

Class name : Message

Responsibilities: To store messages and output the message on the screen.

Collaborations: mailbox

 

 

Superclass: none

subclass :none

 

Methods variable

 


  • Message(char* ) constructor of the messagemessage
  • GetMessage () out put the message on the screen
  • ~Message() Destructor of message

 

CRC Card for the Mailbox Class .

Class name : Mailbox

Responsibilities: Add messages ,Delete Messages ,Play Greeting, Play Messages

Change Greetings ,Change Password

Collaborations: Message ,Administrator ,List

Superclass: none

subclass :none

 

Methods variable


private:

  • Reviewmessage( ) to review messageint mailboxid
  • Changegreeting ( ) to change the greetingList newmessage
  • Changepassword( ) to change the password List oldmessage
  • GetoldMessage ( )to display the old messagechar* password
  • GetnewMessage ( )to display the new messagechar* greeting
  • DeleteoldMessage ( )to delete old messageint noofnew
  • Deletenewmessage( ) to delete new messageint noofold
  • Savemessage( ) to save the new message to the old

message list

public:

  • Mailbox( ) constructor of the mail box
  • ~Mailbox( ) destructor of the mail box
  • Validatepassword( ) validate password of the mail box
  • Addmessage( ) add a new message to the mail box
  • Run( ) the main menu of the mail box

 

 

CRC card for the Administrator Class .

Class name : Administrator

Responsibilities: Add mailboxes ,Delete Mailboxes , Change the password

Collaborations: mailbox ,List ,MainSystem

 

Superclass: none

subclass :none

 

Methods variable


Private:

  • Addmailbox( ) add mail boxesList collection
  • Deletemailbox( ) delete mail boxesint noofmailbox
  • Changepassword ( )change the password of the admin.Char* admin_password

Public:

  • Admin() constructor of administrator
  • ~Admin() destructor of the administrator
  • Chkpw() check for the valid admininistrator
  • Run() main menu menu of the administrator
  • Getmailbox() Run the menu of a particular mailbox

 

CRC card for the MainSystem Class.

Class name : Mainsystem

Responsibilities: Main Interface for the voice mail system

Collaborations: Admin

 

 

Superclass: none

subclass :none

 

Methods variable

 


Private :

  • Callaministrator() cal l the run function of the admin Admin* administrator.

Public

  • Mainsystem() constructor of the mainsystem
  • ~Mainsystem() destructor of mainsystem
  • Run () menu function of the mainsystem

 

CRC Card for the List Class.

Class name : List

Responsibilities: Add an element to the list, delete an element to the list , Return the item stored in the list

Collaborations: mailbox , Administrator

Superclass: none

subclass :none

 

Methods variable

 


  • List(key); constructor of the listListelement *first
  • ~List() destructor of the listListelement*last
  • Remove(key) remove the element
  • IsEmpty() tells where the list is empty or not
  • Getelement(key) return the void pointer stored in the list
  • Insert( key) insert an element in the list

 

Design Issues

 

 

Some important issues of the Voice Mail System Design

 

 

 

  • Voice Mail system have only few method which are public .Run method which is the main interface of the each system (i.e.: mailbox ,administrator and mainsystem ) is public.

 

  • System have only mailbox owner access to the mailbox . If some user want to leave a message to the mail box then he can call the Addmessage method (public) from the mailbox .

 

  • We can change the implementation from the List to trees, array etc without changing the interface. So we can use any data structure to store the mailboxes or messages . Only we have to do is to re-link the code.

 

Advantages Of The Designs

 

Changes From User Point Of View :

User can change the system limit easily . User has to change the variables in global.h file .

 

 

 

System Limit to be changed

Value Of Variable To Be Changed

Present System Limit

Number of Mailboxes

M_MAILBOX

10

Number of New Messages

M_NEW

20

Number of Old Messages

M_OLD

10

Extension

M_EXTENTION

4

Length of Messages

M_MESSAGE

100

Password Length

M_MINPASS,M_PASSWORD

4,10

conclusion : user has to recompile all the file that to get the required effect .

 

 

Changes From The Designer Point Of View

 

  • we have user a generic code (Single Linked List ) to store mailboxes ,old messages and the new message. Developer can change this to any other implementation such as array , tree , double linked list etc. without changing the user interface.

conclusion :user has to recompile only this container class( single link list ) and relink the code to get the desired effect.

 

 

 

ERROR CHECKING

Error checking in the voice mail system

 

  1. Mailbox can not contains more than 10 (M_OLD)old messages .
  2. Mailbox can not contains more than 20 (M_NEW)new messages.
  3. Password length should be between 4 (M_MINPASS) and 10(M_PASSWORD) characters.
  4. Checking for the invalid choice in the menu
  5. Error checking for the valid mailbox extension .It should be a 4 (M_EXTENTION) digit integer number.
  6. Administrator can not add more than 10(M_MAILBOX) mailboxes.
  7. Deleting mailboxes which does not exist.
  8. Adding mailboxes which already exist
  9. Error checking for the valid Mailboxes
  10. Error checking for the valid Administrator
  11. Error checking for the valid mailbox when user want to leave the message

 

 

Test Cases 

  1. Boundary Condition for Number Of Mailbox
  2. Boundary condition for Number of old message
  3. Boundary condition for Number of new message
  4. Adding mailbox which already exit
  5. Deleting mailbox which does not exit
  6. Changing the password of administrator
  7. Changing the password of the mailbox
  8. Changing the greeting
  9. Changing the greeting to default
  10. Deleting old messages
  11. Deleting new messages
  12. Deleting new messages and saving them to the old message.
  13. Deleting new messages and saving them to the old message(provided old message list is full).

 

 Vicky Shiv 04/21/98

 

 
1