Programming SignWriter 5.0
June & July, 1999

From the software development point of view, there are basically three major efforts that have been identified as currently essential to the development of the SignWriter program, as explained below.

1) Initial design and implementation of the Graphical User Interface, or GUI.
The "GUI" refers to what the program's user sees on the computer screen while the program is running, as well as the ways in which the program's user uses the visual, graphical elements that are displayed on the screen in order to interact with the program and control its operation.

The initial GUI design involved specifying the "look and feel", and placement, of hundreds of GUI objects and elements displayed across more than a dozen different user interface screens. Ultimately, many of the GUI elements would be populated with graphic images supplied by Valerie Sutton. This initial GUI design was accomplished and implemented by a series of design steps that included a) Several face to face meetings with Valerie Sutton to: plan and discuss design issues; demonstrate completed designs that could be run at the time; and to confer on design changes. b) Many back and forth email communications on design changes and issues. c) Writing, testing, debugging and rewriting code to implement the designs. All of these steps were performed as needed and in an iterative fashion (i.e., design - implement - review - redesign) and, now to a small degree, are ongoing.

...the first screen you see, as SignWriter 5.0 opens....

Although the code implementing of this initial GUI design is now pretty much static, the code that allows the user to use the GUI to interact with the program, and to control the running of the program (all essentially know as "GUI funtionality"), is still under development and has undergone much more recent and dramatic changes in design, as we, both Valerie and I, learn and become more aware of user needs in this multi-language, flexible GUI incarnation of the SignWriter program. While much of the GUI functionality is currently complete, much more needs to be designed and implemented, most notably when the program's typing functionality is addressed.

2) Program setup and configuration.
"Program configuration" refers to the internal programmatic methods in which the program's GUI may be populated and various functionalities may be set automatically at run-time, while "program setup" refers to the methods made available to the distributor (in this case Valerie Sutton), of the program to enable the various GUI configuration choices to be made.

This effort has required, and continues to require, iterative design and implementation stages similar in nature to those mentioned above for the GUI, with the exception that much less face to face meeting is necessary. And, although the efforts appear to manifest themselves on only a small number of specialized "setup" screens, each choice actually affects the look and feel of many of the GUI screens referred to above.

If we consider SignWriter, a sign language processor, to be functionally similar (as it is) to a commercial software word processor, say, Microsoft Word, then think of setting up Microsoft Word to run in up to ten (10) different languages (10 languages chosen out of a possible 50 that are made available programmatically) in any one running of the Word program. This is the degree of flexibility and usefulness being designed into SignWriter.

Much of the design of the setup and configuration functionality is complete and probably half the code necessary to fully implement this functionality is complete.

This functionality has undergone a couple of major design changes as we learn more about, and consider, what may be not only useful and flexible, but necessary and appropriate to the user population. The program design makes extensive use of Java's ResourceBundle and Locale classes so that Valerie Sutton can ship a software product that can configure itself based upon the user's choices and a set of setup files customized by Valerie Sutton, all without a dependence upon technical programming support.

3) Typing functionality.
This area did not undergo any development efforts during the summer, 99.