PlaNet - Overall Design Document
Technical Specifications



Technical Specifications



Function Specifications

Although it has been discussed before, it still has not been clearly defined as to how we will be able to search through all the employees to select meeting attendees. If possible we would like to be able to quickly run through/search the employee list.

What is the point in having two unique fields for each employee? (EmployeeID & LoginID) It seems to us that only one would be sufficient. As well, throughout the document a reference to 'Employee Name' seems to be used interchangably with *both* EmployeeID (or LoginID. We were unable to figure out which was used where), and the employee's first and last name. This was brought up in our last set of criticisms, and *still* needs to be clarified as these are two completely different pieces of information.

The implementation of the messaging between the employees is exactly what we wanted. Especially nice are the communications between those who schedule a meeting and those who for some reason cancel a meeting (both the originator and just those who are attending). In the future the system could *maybe* be extended to allow user defined messages (perhaps an entire e-mail system) but this is by no means required of this system and could only be one of those if time *really* permits items.

All in all, very well done. The diagrams were quite clear, and the linear document layout made it easy to read and follow.

MMS Functions

Add Meeting
Input:
  1. Meeting Title
  2. Starting Time
  3. Ending Time
  4. Location
  5. Meeting Attendees
  6. Notes
Output:
  1. "Message Sent" dialog
Actions:
  1. The Add Meeting function creates an instance of Meeting, with the Starting Time, Ending Time, Location, and Notes attributes as given from the user inputs. It also creates at least one instance of the relationship "is attending", joining the meeting with one or more employees. The originator, by default, must attend his own meeting. The system checks the meeting database to ensure no other meeting occurs in the same location and containing any common time slots. If one does, a message will appear on the screen to notify the user that his or her attempt to schedule a meeting has failed and why. The system databases will be left unchanged.
  2. The location field is an input which would specify the room (and building if we consider the expansion of the company and our system) if it entered, and can be left as '0' for personal meetings or any non-business related appointments which the user can use to ensure his diary will let the the system - and therefore the other co-workers - that he or she is busy for the given time and date.
  3. Messages will be sent to employees entered in the "Attendees" section - with the exception of the originator - and a dialogue box will be displayed on the screen, telling the meeting originator that the appropriate messages are being sent to the appropriate personnel. All messages on the system are automoted and in an impersonal format.
If Time Permits:
Modify Meeting
Inputs: Any of the following (or none)
  1. Meeting Title
  2. Starting Time
  3. Ending Time
  4. Location
  5. Meeting Attendees
  6. Notes
Output:
  1. "Message Sent" dialogue
Actions:
  1. The function, Modify Meeting, displays information about a particular meeting, including its Starting Time, Ending Time, Location, Meeting Attendees, and Notes. If the user viewing the meeting information is the originator of the meeting, he or she is also allowed to edit any of that information if the user so desires with this function. If information is altered, the diaries of every employee attending will be updated. The system does check whether a conflict occurs in the same manner as the Add Meeting function, and will display a proper error message, refusing to change the meeting time and location.
  2. If a meeting is modified, Messages will be sent to employees entered in the "Meeting Attendees" section (and the ones that have been removed from the meeting, if such a modification was made) - with the exception of the originator - and a dialogue box will be displayed on the screen, telling the meeting originator that the appropriate messages are being sent to the appropriate personnel.
Cancel Meeting Attendance
Input:
  1. Meeting Title
  2. Location (see below)
  3. Time Slot (see below)
Output:
  1. "Message Sent" dialogue
Actions:
  1. Any user can use this function to remove a meeting from his or her diary, i.e. the person will not be attending the meeting. Through our user interface, the "time slot" and "location" inputs are querried automatically by the system and are not manually entered.
  2. If a meeting is deleted from a user's diary, the originator of the meeting will be sent a message of notification, telling the originator who, from his or her requested list of employees, will not be able to attend his or her meeting.
What about meetings that must be attended?

Cancel Meeting
Input:
  1. Meeting Title
  2. Location (see "Cancel Meeting Attendance")
  3. Time Slot (see "Cancel Meeting Attendance")
Output:
  1. "Message Sent" dialogue
Actions:
  1. If an originator of a meeting cancels one of his meetings, the instance of that meeting is removed from the database, along with all diary entries corresponding to it.
  2. If a meeting is cancelled, Messages will be sent to employees entered in the "Meeting Attendees" section - with the exception of the originator - and a dialogue box will be displayed on the screen, telling the meeting originator that the appropriate messages are being sent to the appropriate personnel.
Change Password
Input:
  1. Old Password
  2. New Password
  3. New Password - verification
Output:
  1. A message will be displayed indicating one of three things:
    1. The password update was successful.
    2. The old password entered is incorrect.
    3. The new passwords don't match.
Actions:
  1. When a user requests to change his password, he or she is required to enter his or her current password, his or her new password, and the new password again. If the entered current password does not match the user's current password, or if the entered new passwords do not match each other, a request failed message appears. Otherwise, a request succeeded message appears and the user's password is changed to the new password the user had entered.
Call Periodic Meeting
Input:
  1. Meeting Title
  2. Starting Time
  3. Ending Time
  4. Ending Date
  5. Period
  6. Location
  7. Meeting Attendees
  8. Notes
Output:
  1. "Message Sent" dialogue (optional)
Actions:
  1. This function creates meetings in the same way Add Meeting does, but allows periodic meetings to be scheduled. The user would enter a period (monthly, weekly, daily) and an ending date and a meeting will be scheduled multiple times based on the given period, up until the given ending date - or until one year from the present day, whichever comes first. The same database error checking will be done as with Add Meeting.
  2. A message will be sent in the same manner as it is sent in Add Meeting, but is only sent once per periodic meeting set (not once per meeting).
    It is unclear as to when the periodic meeting would start. We assume that the period and the ending date are entered *in addition* to the information entered as specified in the 'Add Meeting' function description.

Find Common Time
Input:
  1. Employee Names
  2. Duration
  3. Period
Outputs:
  1. List of Available Times
Actions:
  1. This functions looks up the entered employees' schedules and returns a list of available times of the duration specified within in the specified time period.

PAS Functions

Add Employee
Input:
  1. Employee Name
  2. Employee Password
  3. Employee Comments
Output:
  1. None
Actions:
  1. The Add Employee function takes the Employee Name (first and last), Password, and Comments (an unformatted string containing employee information such as office position, age and/or birth date, address, family status, and any other information the system administrator may wish to include, and creates an instance of Employee to put in the system database.
Modify Employee Information
Inputs: Any of the following (or none)
  1. Employee Name
  2. Employee Password
  3. Employee Comments
Output:
  1. None
Actions:
  1. The Modify Employee Information function lets System Administrators view and edit any or all information about an employee in the system database, these include the employee's Name, Password, and Comments information. If any change is made, the employee entry is updated in the system's database.
Delete Employee
Input:
  1. Employee Name
Output:
  1. "Message Sent" dialogue (optional)
Actions:
  1. The Delete Employee function calls the function "Cancel Meeting" on all meetings the specified employee had called/originated and the function "Delete Diary Entry" on all entries in the specified employee's diary. It then removes the employee from the system database. To put it simply, all data associated with the deleted employee is removed from the system. A warning message will be displayed to prevent accidental deletion.
What if the employee is the originator of the meeting. Will the entire meeting be cancelled?

Auxiliary Functions

Login
Input:
  1. Employee Name
  2. Password
Output:
  1. (report of success)
Actions:
  1. The Log In is the first and most important window that is displayed upon the normal boot up of the system. It asks for the user's Name (as he is identified with on the system) and Password, and then verifies the user's authentication. If the user has administrator status he or she is provided with the MMS window as well as the PAS window. Otherwise, successful authentication results in bringing up the MMS window, only.
Logout
Input:
  1. None
Output:
  1. None
Actions:
  1. This exits the MMS and PAS systems.

Entity Relationship Diagram

ERD Diagram

Data Flow Diagrams


Table Definitions

TABLE: Employee

Key Attribute Data Type Comment
Primary EmployeeID Integer Unique ID to identify the employee
(Automatically generated)
Secondary LoginID String[10] Unique name for user identification
. FirstName String[20] First name
. LastName String[50] Last name
. EmployeeNotes String[500] Administrator comment regarding employee
. Password String[8] Private code for user authentication
. Administrator Boolean True for administrators, false for regular users

TABLE: IsAttending

Key Attribute Data Type Comment
Primary EmployeeID Integer The ID of the employee
Primary MeetingID Integer The ID of the meeting

TABLE: Meeting

Key Attribute Data Type Comment
Primary MeetingID Integer The unique ID for the meeting
(Automatically Generated)
Secondary LocationID Integer The ID of the location
Secondary Date Date The day of the meeting
Secondary StartTime Time The start time of the meeting
Secondary EndTime Time The end time of the meeting
Secondary Originator Integer The ID of the employee that originated the meeting
. MeetingNotes String[500] A description of the meeting

TABLE: Location

Key Attribute Data Type Comment
Primary LocationID Integer The unique ID for the location
(Automatically Generated)
Secondary Desc String[40] The unique string description of the room

TABLE: Notice

Key Attribute Data Type Comment
Primary NoticeID Integer The unique ID for the notice
(Automatically Generated)
. EmployeeID Integer The ID of the employee
. MeetingID Integer The ID of the meeting
. DefaultNoticeID Integer The ID of the default notice to include

TABLE: DefaultNotice

Key Attribute Data Type Comment
Primary DefaultNoticeID Integer The unique ID for the default notice
(Automatically Generated)
. Text String[256] The text of the default notice.


Data Dictionary

Administrator = [ "true" | "false" ]
* Non-key attribute of the entity "Employee". This value will be "true" if an employee is a system administrator, and will be "false" if an employee is a user. * Data flow corresponding to a particular employee's status to indicate whether or not they are a system administrator.
Date = string
* Secondary key attribute of the entity "Meeting". Consists of a string of 6 digits: the first two represent the year, the next two represent the month, and the last two represent the date.
The date is described to be stored in a six character string with the year taking only 2 digits. This may in the future pose a problem for us, and as a result it would be nice to store the year as a four digit number instead.

Default Notice = @DefaultNoticeID + Text
* Entity: a list of possible messages that the system can send to employees to inform them of changes to their schedule. * Data flow corresponding to a particular instance of "Default Notice".
Default Notices = {Default Notice}
* Data store in DFD corresponding to the entity "Default Notice".
DefaultNoticeID = integer
* Primary key attribute of entity "DefaultNotice". A unique integer used to refer to a particular instance of "DefaultNotice".
Desc = string
* Secondary key attribute of the entity "Location". A string of up to 40 characters which serves as a unique description of the room.
Employee = @EmployeeID + LoginID + FirstName + LastName + EmployeeNotes + Password + Administrator
* Entity: represents employees who are currently employees of the company that this system remembers information about. * Data flow corresponding to a particular instance of "Employee".
Employees = {Employee}
* Data store inDFD corresponding to the entity "Employee".
Employee Information = {
* Data flow representing all information about a particular employee.
The element description was omitted. We smell a pay cut for your proof-reader...

EmployeeID = integer
* Primary key attribute of the entity "Employee". A Unique ID used to identify a specific employee.
EmployeeNotes = string
* Non-key attribute of the entity "Employee" A string of up to 500 characters containing information that is important about an employee. * Data flow corresponding to the "EmployeeNotes" of a particular instance of "Employee".
EndTime = string
* Secondary key attribute of the entity "Meeting". A string of 4 digits, the first two of which represent the hour (with a range of 1 to 24) and the second two representing the minutes (must be in 15 minute intervals). Used to indicate the time at which a meeting is scheduled to end. * Data flow corresponding to the "EndTime" for a particular instance of "Meeting".
FirstName = string
* Non-key attribute of the entity "Employee". A string of up to 20 characters that is the first name of the employee. * Data flow corresponding to a particular employee's first name.
is at a = @MeetingID + @LocationID
* Relationship between the entity "Meeting" and the entity "Location". Indicates that a particular meeting is scheduled to be held in a particular location. Type 1:1 - Each meeting must be scheduled to take place in one location and a location may only be scheduled to be used for one meeting at a given time.
is attending = @employeeID + MeetingID
* Relationship between the entity "Employee" and the entity "Meeting". Indicates that an employee is scheduled to attend a particular meeting. Type Mc:Mc - each instance of "Meeting" can have zero or more employees attending it, and each employee may be attending zero or more meetings.
is chosen from = @NoticeID + DefaultNoticeID
* Relationship between the entity "Notification" and the entity "Default Notices". Indicates that a particular default notice is part of a particular notice. Type 1:Mc - each instance of a "Notification" must contain only one "Default Notice", but each "Default Notice" can be in zero or many instances of "Notification".
LastName = string
* Non-key attribute of the entity "Employee". A string of up to 50 characters that is the last name of the employee. * Data flow corresponding to a particular employee's last name.
Location = @LocationID + Desc
* Entity: represents the locations in which a meeting can take place. * Data flow corresponding to a particular instance of "Location".
Locations = {Location}
* Data store in DFD corresponding to the entity "Location".
LocationID = integer
* Primary key attribute of the entity "Location", and Secondary key attribute for the entity "Meeting". A unique ID used to refer to a particular instance of "Location".
Location Information = {is at a}
* Data flow in the DFD representing the relationship "is at a" between the entities "Meeting" and "Location". This is all of the instances of "Meeting" that are scheduled to take place at a particular "Location".
LoginID = string
* Secondary key attribute of the entity "Employee". A string of up to 10 characters used as a unique name for user identification. This string is used to identify an employee when the log in to the system. * Data flow corresponding to the LoginID of a particular employee.
Meeting = @MeetingID + LocationID + Date + StartTime + EndTime + Originator + Title + MeetingNotes
* Entity: represents a meeting that an employee has called. * Data flow corresponding to a particular instance of "Meeting".
Meeting Attendees = {is attending}
* Data flow representing the relationship "is attending" between the entities "Meeting" and "Employee". A list of all instances of "Employee" scheduled to attend a particular instance of "Meeting".
Meeting Information = {is attending}
* Data flow representing the relationship "is attending" between the entities "Meeting" and "Employee". A list of all instances of "Meeting" that a particular instance of "Employee" is scheduled to attend.
MeetingID = integer
* Primary key attribute of the entity "Meeting". A unique ID that is automatically generated when an instance of "Meeting" is created.
MeetingNotes = string
* Non-key attribute of the entity "Meeting". A string of up to 500 characters input by the originator of the meeting to provide a description of what the meeting is about.
Meetings = {Meeting}
* Data store in DFD corresponding to the entity "Meeting".
NoticeID = integer
* Primary key attribute of the entity "Notification". A unique ID that is automatically generated when an instance of "Notification" is created.
Notification = @NoticeID + EmployeeID + MeetingID + DefaultNoticeID
* Entity: contains all notices that the system is 'holding' for each employee. * Data flow corresponding to a particular instance of "Notification".
Notifications = {receives}
* Data flow in DFD corresponding to the relationship "receives" between the entities "Employee" and "Notification". This is all instances of "Notification" that a particular employee is to receive. * Data store in the DFD corresponding to the entity "Notification".
Originator = integer
* Secondary key attribute of the entity "Meeting". Corresponds to the EmployeeID of the employee who originated the meeting. * Data flow corresponding to the EmployeeID of the employee who originated a particular instance of "Meeting".
Password = string
* Non-key attribute of the entity "Employee". A string of up to 8 characters which are used in combination with their loginID to verify a user's identity and allow them to log in to the system. * Data flow corresponding to an individual employee's password.
receives = @EmployeeID + @NoticeID
* Relationship between the entity "Employee" and the entity "Notification". Type 1:Mc -each employee can have one or more messages, but each message is for only one employee.
Schedule Information = {is attending}
* Data flow in DFD corresponding to the relationship "is attending" between the entities "Employee" and "Meeting". This is all of the instances of "Meeting" that a particular employee is scheduled to attend.
StartTime = string
* Secondary key attribute of the entity "Meeting". A string of 4 digits, the first two of which represent the hour (with a range of 1 to 24) and the second two representing the minutes (must be in 15 minute intervals). Used to indicate the time at which a meeting is scheduled to begin. * Data flow corresponding to the "StartTime" of a particular instance of "Meeting".
Text = string
* Non-key attribute of the entity "DefaultNotice". A string of up to 256 characters that is the text of the default notice.
Title = string
* Secondary key attribute of the entity "Meeting". A string of up to 50 characters used to specify the title of a meeting. * Data flow corresponding to the "Title" of a particular instance of "Meeting".


Back to top - Table of Contents - ISSI Home Page