This document defines requirements for an electronic Calendar Tool. The tool provides functions to manage calendars for individual users as well as for groups of users. Individuals use the Calendar Tool to schedule appointments and to view their calendar information in a variety of useful ways. Administrative users can schedule meetings for groups of users and perform other system administration functions.
In addition to providing useful functionality, the Calendar Tool serves as a
pedagogical example of software engineering concepts and principles. The
software development artifacts for the Calendar tool are considered part of the
overall Calendar Tool package.
1.1. Problem Statement
The general problems to be solved by the Calendar Tool are the following:
The personnel involved in the Calendar Tool project are organized into the following groups and subgroups:
End users are those who use the Calendar Tool for its intended purpose. Registered end users have calendars that are stored in a Calendar Tool multi-user database, which is used for group scheduling purposes. Group leaders are designated registered users who may perform group scheduling operations which affect other users' calendars. Master system administrators perform overall system administration functions, including user and group leader registration. Finally, anyone can use the Calendar Tool as an unregistered user for the management of a strictly individual calendar.
The primary system developer is Gene Fisher. His efforts are based on the work of a number of software engineering students who have used the Calendar Tool as a class project in software engineering courses. Students whose work has been particularly helpful are Larry Bolef, Brent Smolinski, Rick Myers, Brandon Wallace, and Oliver Wallace.
As noted above, the Calendar Tool is intended to serve as an example for use in software engineering courses. The students who use the Calendar Tool for this purpose focus on the artifacts of its development rather than its use as a functioning tool.
The Calendar Tool is available as public domain software for use by outside parties. The project directory is located at
There are two operational settings for the Calendar Tool: (1) normal use as a functioning software system; (2) use as an example in software engineering courses.
Since the Calendar Tool is designed as general public domain software, there is no specific operational setting in which it is intended to be installed. The setting for which it is appropriately suited is an office or organizational environment of some form, where users maintain their own calendars and need to schedule meetings with other users on a regular basis.
For use as a pedagogical example, the Calendar Tool has been designed to fit
the curriculum used by Gene Fisher in undergraduate and graduate software
engineering courses at Cal Poly University. These courses are two-quarter
sequences that cover standard aspects of software engineering, with emphasis on
the practical application of formal methods. For the most part, the concepts
covered in these courses, and hence the concepts embodied in the Calendar Tool,
are mainstream software engineering. Other instructors may therefore find the
Calendar Tool and its development artifacts useful as course examples.
The positive potential impacts of the Calendar Tool as a functioning system are increased convenience and efficiency in managing individual and group calendars. The positive impacts of the Calendar Tool as a course example are
Potential negative impacts include those common to any user-oriented software system. Viz., if the system is poorly designed and implemented, it can be inconvenient to use and decrease rather than increase user productivity. More specific negative impacts relate to issues of privacy, reliability, and data integrity. If the system implementation is flawed, it may reveal private information that users do not wish to be revealed. If an organization of users relies on a flawed implementation of the system to schedule critical events, and such events are improperly or incompletely scheduled, the organization may suffer significant disruption of its operations. Significant disruption may also occur if the system looses or corrupts important calendar data.
As a course example, the use of the Calendar Tool has no significant negative
impacts, unless its development methodology is considered weak or unrelated to
the concepts being taught in a particular course. Such negative impacts can be
easily avoided if instructors carefully examine the example before using it in
a particular software engineering curriculum.
1.5. Related Systems
Widely used commercial systems that provide functionality comparable to the Calendar Tool include
Each of these systems provides a wide variety of calendar and scheduling functionality. In terms of such functionality, the goal for the Calendar Tool is to provide the important core features found in these tools, not the full range of features found in all of them. The Calendar Tool does provide modest functional improvements in three areas, when compared to most commercially available tools. These improvements are:
The goals for the Calendar Tool relating to public domain source code and sound
pedagogical development are not met by any of the above commercial systems.