4. Developer Overview
As shown in the UI Overview, the Scheduler Tool is comprised of two separate application programs.
There is an online application which can be ran from any computer with a web browser and is the only accessible portion of
the Scheduler Tool for instructor and student users. For instructors, it provides functionality to view and modify preferences,
as well as view generated schedules by administrators. For student users, it allows them to enter their future schedules.
The other application program is a desktop application for use only by the scheduling administrators to maintain the databases,
edit preferences of users, generate schedules, and other administrative features.
In the scheduling administrator desktop application, the major object is the Schedule. It's implementation will need to provide
efficient access for a wide range of operations, including conflict resolution, editing classes, and filtering support.
Although the major object is the Schedule, there are three databases for Instructors, Classes, and Rooms that will also
require an efficient implementation. The size of these databases is probably not big enough to require implementation using
a database management system. Rather, some form of efficiently searchable collection should do, such as the Java Collection
object. The reason this is the case is that there are requirements for sophisticated querying against the databases, and
query support is typically the most important reason to employ database management technology.
In the student and instructor web application, the objects should have reasonably straightforward implementations. Instructors
and students will be viewing schedules in various ways, which will produce dynamic objects that do not need persistent storage. Rather,
the views are computed from the underlying Schedule data, displayed on user demand, and then discarded. The Schedule data
structure will provide access functions to support the different views. Students will need to have the ability to add
and remove different courses to future schedules, and a course's implementation is straightforward.
The Scheduler Tool environment will require specific development expertise. In particular,
the developers need knowledge of client/server design and implementation. Functionality to support client/server architectures
is available in many modern libraries. It will make sense for the developers to choose an implementation language in which
client/server support is available, dependable, and well documented.