The objectives I used in planning and implementing this project were as follows (in this order):
- Reliability
- Usability
- Efficiency
- Robustness
- Development time
- Adaptability

It was of great concern to me that the software prevent the entry of erroneous values into the database, and also allow smooth data entry for a large amount of information in a streamlined manner, with minimum delay and reduced operator manipulation of interface objects. Database operations are performed and the results checked before continuing with screen updates, to keep the display from getting out of sync with the actual data being stored. Input values are checked for common typing errors such as double spaces and blanks at the beginning or end of a term; internal database consistency rules are used where possible to prevent things like duplications in fields that need to be unique.

On the other hand, a tightly coupled network environment was assumed, and I'm not sure what would happen if the database host was very distant from the client machine. While the underlying DB-Library calls should work in theory, some interface features could become unusable if long delays were incurred.

The application is written in Objective-C with heavy reliance on the NeXTStep interface platform; porting the program is not really an option. In order to run it in a different environment (under X windows, say, or on a Mac) most of the functionality will have to be reworked. We can foresee doing hierarchical displays on these other platforms, and the techniques used in this program should be very useful in those implementations, but probably very little code will be re-used. The intent of this project was to meet the needs of a specific contract and explore one possible solution to the terminology display-and-management problem.

Development time was a factor; while I pushed for clarity in the internals in order to create a maintainable code base, I also wanted to get something working and in the hands of the users who were already doing data entry for the contract, without an unnecessarily long development cycle.