Application Design

As a NeXTStep application, the software is designed around four basic windows: a HIERARCHY view, a CONCEPT inspector, a TERM inspector, and an Operations panel.

Most of the Hierarchy window is taken up by a single large scrollable NXBrowser, along with a hierarchy title and some related control buttons. There is only one bay, the contents of which are closely controlled by the application code in a variety of ways -- most notably, different levels of a particular hierarchy are all visible AT ONCE in the same list, instead of using multiple shifting browser bays to display each level as a separate list. This is because the basic design of an NXBrowser does not allow viewing of many parts of a hierarchy simultaneously, and that's a primary design goal for this application.

The Concept Inspector displays the preferred name of the "currently selected" concept, and any synonyms are placed in a small scrolling NXBrowser below it. Selecting a concept is done by clicking one of the entries in the hierarchy, or executing a find operation and clicking a result row in the find panel.

The Term Inspector window shows all the database fields for a particular term in editable forms. Making a change is as simple as clicking in a field and typing new characters, or selecting from among possible values in a popup menu, and clicking the "Save Changes" button.

Since it is not yet well understood what operations we wish to be able to perform on the data, I've consolidated most of the tree-manipulation commands together into a single panel as buttons with long, descriptive names. An example is the button titled "Insert Pasteboard as a child of the selected node". We intend to track the usage by recording a log of everything the user does, so that we can see which commands are useful and which are not.

Database Issues

It should be noted that the application makes heavy use of Sybase stored procedures for data retrieval and manipulation, so that little actual SQL language is embedded in the application code. This provides a level of abstraction away from the details of the underlying database operations, while still yielding good performance.

Software quality issues