Appendix A - Tutorial Materials for Programming Project Simulation

Specification

This is the single page specification document that was given to all participants:

The goal of this project is to implement a conference management system. Submission of papers, and registration will be done via forms on the World Wide Web, and automated confirmation messages will be sent to participants via electronic mail

The system will take care of organising the conference timetable and managing the conference budget. It will also book caterers for travel, as well as sending the conference programme and proceedings to the publisher for printing.

The interfaces to external systems have already been defined as a set of transactions for each external system. These include interfaces to travel agency, tourist office, conference facility, caterer, publisher and hotel booking agent.

The system will provide user interfaces for ordinary delegates, authors, and programme committee members (who review the submitted papers).

Instructions to Coordinators

Each headed section below contains the text from one of the pages of instructions given to coordinators two hours before the start of the tutorial session.

Database Coordinator: Hints

Your job will be of critical importance to the success of this project: no-one can start work until you tell them what to do - so don't waste any time! Read these instructions and hints as quickly as possible, then choose people and assign them responsibility for implementing one or more modules. If there are not enough people to do all the things you need then you may have to implement some of the modules yourself. But remember not to get so involved in implementation that other people waste time waiting for your decisions.

You will be responsible for defining the data elements within the database, responding to requests for additional data elements, and ensuring there is no duplication. You should also protect the integrity of this data (i.e. make sure no-one can destroy information critical to other parts of the system). To do this each data store should have modules defined for data maintenance. For example, a module to add a new paper presenter, another to update details of an existing presenter.

Assume that the data elements will be grouped as follows (you may need to add others):

* people attending the conference

* paper presenters

* program committee members

* submitted papers

* conference hotel lists

You should allocate one or more of these to members of your team and get them to do the detailed design as quickly as possible. Other teams will need this information soon!

Because everyone will be invoking the database modules it would be a good idea to sit in the middle of the room, and put the modules you implement there.

External Interfaces Coordinator: Hints

First paragraph is identical to that of the database coordinator (and to the first paragraph given to all other coordinators).

This system will interact with a number of other computer systems (travel agency, tourist office, hotel bookings, and so on). There are interface specifications for each of these systems.

You should assign people to be responsible for each external interface. They should help interpret their interface specification for people working on other parts of the system and - if appropriate - implement local modules that interact with their interface.

System Test Coordinator: Hints

First paragraph is identical to that of the database coordinator (and to the first paragraph given to all other coordinators).

Your job is to create a plan to test all parts of the system. This should include examples of test conditions with specific input values and expected output. You should consider at least the following: - check the correctness and completeness of functionality of normal transactions in all subsystems - check the interaction with external systems - check error handling - check boundary conditions (e.g. what happens when a hotel is fully booked?)

Timetable And Budgeting Coordinator: Hints

First paragraph is identical to that of the database coordinator (and to the first paragraph given to all other coordinators).

The timetable and budget subsystems do not have any interface to the outside world, but almost all other parts of the system rely on them. They are also quite complicated, so you should allocate some people who are responsible for the interface to the rest of the system, and some who are responsible for implementing the internal logic.

The timetable subsystems must allocate papers to particular time-slots. It must make sure that rooms are available, and that the size of the room is proportional to the popularity of the paper. The author of a paper should be attending the conference on the day it is presented! Papers can be organised into parallel streams when there are several on a particular topic. Ultimately the timetable must be sent to the publisher to be published in the conference programme.

The BUDGETING subsystems must ensure that all the money being spent is less than the total money coming in. The main source of money is people registering for the conference (although keynote speakers shouldn't pay for their conference registration, travel or accommodation). There will be some break-even point where the number of delegates is sufficient for the conference to be viable: the system should know where that point is.

Net Transaction Coordinator: Hints

First paragraph is identical to that of the database coordinator (and to the first paragraph given to all other coordinators).

Authors, programme committee members and delegates will all need to send information to the system using WEB forms. You should probably allocate one person to be the technical specialist for designing the interface to take information from the WEB form and into the rest of the system.

You will need one or more HCI designers who designs the actual layout of the forms. There are special materials for form design and a specification for the forms that the HCI designer should get from the project manager.

The system will send notifications by email in some circumstances, including the following: - inform a delegate how much they will have to pay and what bank account to send the money to - send a member of the programme committee a request to review a submitted paper, including it?s title and where to get the paper (via ftp) - send an author an acceptance or rejection of their paper and ask them to record their presentation requirements - send a delegate confirmation if their accommodation and travel bookings.

You should assign a technical specialist who can build an interface to the email system, as well as people responsible for each notification.

Web Forms Specifications

This material was given to the net transaction coordinator.

Registration Form:

This is intended as a guide - you may need to add to the data being captured.

Personal details:

Name, Address, email, Dates attending, Payment method, Special dietary requirements, Keynote speaker? (you may need security on this)

Travel details:

travelling from on date Return required Date of return

Accommodation details:

Room required? Single/Double? Arrival date, Departure date

Paper Submission Form:

This is intended as a guide - you may need to add to the data being captured.

Name;

email;

paper title;

abstract;

keywords;

number of papers;

ftp of postscript file;

colour illustrations (Y/N)?

Paper Reviewing Form:

This is intended as a guide - you may need to add to the data being captured.

Reviewer name;

Title of paper;

Author name;

Recommendation (scale of 1 to 10);

Estimated popularity (scale of 1 to 10);

Recommended Stream (check boxes?);

Feedback to author.

Presentation Requirements:

This is intended as a guide - you may need to add to the data being captured.

Name;

Title;

Length of presentation (1/2 hour or hour);

Equipment needed (check boxes for OHP, Slides, Video, Microphone, etc);

Keynote speaker (may need security).

Interface Specifications

This material was given to the external interfaces coordinator. Each interface shown in a separate table below was printed in a large font on a separate page.

 

TravelAgencyTicketQuote

* Travelling from

* Destination

* Departure date

* {single, return}

* Return date

* Group discount code Airline *

Price *

Special conditions *

 

TravelAgencyTicketBooking

* Airline

* Passenger name

* Flight number OUT

* Date of travel OUT

* Flight number RETURN

* Date of travel RETURN

* Payment method

* Group discount code

* Reservation code Confirmed flight nums *

Price with discount *

Standard price *

 

TravelAgencyGroupDiscount

* Travelling from

* Destination

* Earliest travel date

* Latest return date

* Expected passengers Airline *

Price per ticket *

Minimum passenger number *

Group discount code *

 

TravelAgencyTimetableEnquiry

* Travelling from

* Destination

* Date of travel Airline *

Flight number *

Time *

Num seats available *

 

TravelAgencyGroupReservation

* Airline

* Flight number

* Contact name

* Number of passengers Reservation code *

 

ConferenceAvailableRoomsQuery

[RoomID1, ID2, ID3 ...] *

 

ConferenceRoomCapacityQuery

* Room ID Number of people *

 

ConferenceVideoProjectionQuery

* Room ID {video, no-video} *

 

ConferenceRoomBookingRequest

* Conference name

* Room ID

* Date

* {morning, afternoon}

* OHP

{required, not-required}

* Slide projector

{required, not-required}

* Microphone

{required, not-required} {available, not-available} *

 

ConferenceLockingUpRequest

* Conference name

* Date

* Unlocking time

(if before 9:00 am)

* Locking-up time

(if after 5:00 pm)

 

ConferenceCostEstimate

* Conference name

* Number of days Total cost *

 

HotelBooking

* Name of hotel

* Name of guest

* {double, single}

* Arrival

* Departure

* Number of nights

* Disabled access {accept, reject} *

Confirmed price *

 

HotelRoomsAvailable

* Name of hotel

* Date Number of single rooms *

Number of double rooms *

Number with disabled access *

 

HotelDistanceFromConferenceVenue

* Name of hotel

* Name of conference venue Distance in miles *

 

HotelTransportToAirport

* Name of hotel {available, unavailable} *

Name of shuttle company *

 

PublisherBookQuote

* Customer name

* Number of pages

* Number of colour pages

* Size of print run Total price *

 

PublisherBookletQuote

* Customer name

* Number of pages

* Size of print run

* Thickness of paper

* {stapled, loose} Total price *

 

PublisherProductionBooking

* Customer name

* {book, booklet}

* Number of copies

* Date required {booking-ok, not-ok} *

 

PublisherSendBookText

* Customer name

* Title page

* Table of contents

* [ftp-ch1, ftp-ch2, ...]

* Number of copies

* Date required {received-ok, not-booked, transmit-error} *

 

PublisherTransmitBookletText

* Customer name

* Text

* Number of copies

* Date required {received-ok, not-booked, transmit-error} *

 

TouristOfficeFindAvailableActivities

* Date [activity1, activity2, ...] *

 

TouristOfficeBookOuting

* Activity name

* Date

* Person making booking

* Seats required Price per seat *

Start time *

Estimated end time *

Num seats available *

{booking-confirmed,

not-confirmed} *

 

TouristOfficeCancelBooking

* Person making booking

* Activity name

* Date

* Num seats cancelled Total refund amount *

 

CatererMenuOptions

* {bfast, lunch, dinner}

* {seated, not-seated}

* {buffet, not-buffet} [option1, option2, ...] *

[price1, price2, ...] *

[maxN1, maxN2, ...] *

[{hot, cold}1, {h c}2, ...] *

 

CatererMealOrder

* Conference name

* Menu option

* Total number of people

* Number of vegetarians

* Other special needs

* Date

* Start time

* End time Total price *

 

CatererMealSchedule

* Conference name

* Conference location [meal1, meal2, meal3, ...] *

Total price *

 


Return to main body of paper