Project: Glossary


Objectives

  1. Familiarity with designing and coding a realistic component-based application program without being provided a skeleton solution.

Note that in your solution you can only use components from the components package and components from the standard Java libraries that have been used before in lectures/labs/projects (e.g., String). You should not use other components from any other libraries that have not been used in CSE 2221.

The Problem

Your customer, Cy Burnett, heads a major publisher of textbooks who is migrating toward on-line access. Cy wants a relatively easy-to-maintain glossary facility. (A glossary is a list of difficult or specialized words, or terms, with their definitions, that is usually near the end of a book.) His initial requirements are as follows:

These are the stated requirements for your program. If you have questions of clarification or need additional details, Cy is willing to answer them if you ask your instructor to contact him.

Setup

  1. You're on your own! There are no other setup instructions; this is the "blank sheet of paper" project that you've all been waiting for!

Method

When you are satisfied that your program works, select your Eclipse project (not just some of the files, but the whole project), create a zip archive of it, and submit the zip archive to the Carmen dropbox for this project, as described in Submitting a Project.

Your grade will depend not merely on whether the final program meets the customer's initial requirements, of course, but also on the general software quality factors we've been discussing for the past three months: understandability, precision, appropriate use of existing software components, maintainability, adherence to coding standards, and so forth.

A sample input file is available at:

     terms.txt

A sample of the corresponding program output is available at:

     index.html

You should not assume that your glossary must look like this one, which is merely a sample of what the output might be. This sample is just something your requirements analyst and the customer cobbled together by hand for a small glossary, to serve as a possible prototype for the final program output. You should feel free to improve on it.

Extra Credit (up to 20%)

Develop a JUnit test fixture for the methods you designed in your program and include it in your project submission. Extra credit will be awarded only for a systematically designed, well thought out test plan.

Additional Activities

Here are some questions about possible additional activities related to this project. Any extra work is strictly optional, for your own benefit, and will not directly affect your grade.

  1. What happens if a definition provided in the input includes HTML tags?
  2. What happens if a term occurs, within a definition, in its plural form?  Fix the program so it handles such a case "correctly", i.e., so it introduces a link from that term.
  3. Modify the program to handle multiple-word terms.
  4. Modify the input format and the program so there can be multiple indexes. In particular, allow each term to have not only a definition but a set of other indexes in which it should appear, in addition to the alphabetical master index.
  5. Write a more professional instruction manual (e.g., as an HTML document or using a word processor).