Assignment 2: Requirements

This assignment is due on Friday 16 February 2007 at 11:00 PM. An assignment that is turned in late will lose 1 point out of 10 points every day (24 hours or fraction thereof) that it is late.

The central four assignments will all be team assignments, and they all deal with the following project.

Vision Statement

[v1] One of the features of modern GUIs is support for a spelling checker and/or a word completion feature. [v2] Word completion can be regarded as a kind of eager spelling checker that is proactively checking your spelling based on the part of the word typed so far. However, word completion is controversial, and research has shown that they actually reduce productivity rather than increase it in general. In one case, an airplane crash was caused by a word completion. [v3] Spelling checkers are less controversial, but they also have their problems.

[v6] This project is concerned with spelling and grammar checking, but using a standard controlled vocabulary. [v7] This differs from typical spelling checkers in several respects:

  1. [v8] The vocabulary and grammar can be very large. Large vocabularies can require 10 TB or more of storage.
  2. [v9] There is no controversy about the need for using the standard vocabulary.

[v10] Your project is to develop a spelling and grammar checker suitable for use in very lightweight environments, such as PDAs. [v11] Such machines have relatively little memory and limited bandwidth for communication. [v12] For example, local storage of even a small part of the vocabulary is not possible, and queries to the vocabulary server must be relatively infrequent and use very little bandwidth. [v13] The client program must also be relatively small because it must compete for the limited available memory with many other programs.

[v14] Unlike a vocabulary client, a vocabulary server can be a large cluster of high-performance machines with a large amount of memory. [v15] For example, one can assume that the entire vocabulary database is in main memory.

[v16] The vocabulary client must be designed so it can be easily added to other programs such as email clients. [v17] The design must also allow for internationalization.

[v18] All software will be available as open source, and the project will eventually be an open source project, although it does not have to be an open source project during the initial period. [v19] It is expected that customization for particular languages, countries and regions will be performed by volunteers in that locale.

[v20] There are many sectors where this product would be important. [v21] The financial services sector has to deal with a large number of companies, products and services, and standard names are essential for unambiguous communication.

[v22] While spelling checking and word completion are the most important uses of the vocabulary project, there are many other uses. [v23] Whenever a word or phrase is corrected, the correction should be noted so that it may be used in future interactions. [v24] One must also deal with continual updates to the vocabulary such as when a new company is founded, a company changes its name, merges with another company or ceases to exist. [v25] What complicates the updates is that references to outdated names will continue to be used after the updates. For example, an email message might refer to a bankrupt company by name.

Deliverables for the First Assignment

The first assignment is concerned with the inception phase of the project. It is therefore mainly concerned with requirements. The following are the deliverables:

  1. An initial use case diagram. This can be drawn using any tool, such as UMLet (from www.umlet.com) that is an Eclipse plugin, but there are many others such as eUML2.
  2. A project glossary. List all of the technical terms of the project that are used in the vision statement. Give a brief explanation of what each term means. A formal definition is not necessary. This deliverable is a single text document. Please use an ordinary ASCII text document, not a Word or PDF document.
  3. A project plan. This consists of a Gantt chart with tasks and dependencies. The plan is for the first assignment which lasts 2 weeks. There are many Gantt chart programs such as GanttPV which is a standalone program. However, a spreadsheet is probably the best approach for this.
  4. A wiki home page for the project, and individual pages for each component of the product. There should be at least 5 individual pages. Each page should have a description of the component as well as a discussion of progress toward completing the deliverables.
  5. At least one ticket in the issue-tracking system for each task in the project plan.
  6. Give an estimate for the number of function points required for this project. Explain the inputs to the computation. As with the project plan, a spreadsheet is probably the best approach for computing function points.

Tools

There are numerous tools for UML support on the Eclipse IDE. It is very likely that other IDEs also have such support. See Eclipse plugins for UML. Some of them only support a few diagrams, and others support a large number of diagrams but are only available for Windows.

Tracing back to requirements

It is very important to trace back to the original requirements (i.e., the vision statement above). Tags have been inserted in the vision statement to facilitate tracing back to the original requirements. This is especially important for the use cases, and function point estimate, but all artifacts should be traceable. Note that it is not necessary to link directly back to the vision statement. In most cases, one will be linking back to ones own artifacts. For example, the function point estimates will mostly link back to use cases rather than the vision statement.