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.
[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:
[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.
The first assignment is concerned with the inception phase of the project. It is therefore mainly concerned with requirements. The following are the deliverables:
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.
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.