GAMS, the Guide to Available Mathematical Software, is a cross-index and virtual repository of mathematical and statistical software useful in science and engineering . The majority of software indexed by GAMS represents subprograms for mathematical problems which commonly occur in computational science and engineering, such as solution of systems of linear algebraic equations, computing matrix eigenvalues, solving nonlinear systems of differential equations, finding minima of nonlinear functions of several variables, evaluating the special functions of applied mathematics, and performing nonlinear regression. All cataloged problem-solving software modules, of which there are over 10,000, are assigned one or more problem classifications from the GAMS 736-node tree-structured taxonomy of mathematical and statistical problems. Users can browse through modules in any given problem class. To find an appropriate class, one can utilize the taxonomy as a decision tree, or enter keywords which are then mapped to problem classes. Search filters can be declared which allow users to specify preferences such as computing precision or programming language. In addition, users can browse through all modules in a given package, all modules with a given name, or all modules with user-supplied keywords in their abstracts.
Classification systems have long been used to give structure to large bodies of information. A well-formulated system can improve understanding of the information as well as ease access to it, thus making the information more useful. To be effective, a software classification system must have the following properties:
It must classify the problems which can be solved by computer software. Other orientations, such as classification by algorithm or classification by software package, are of less interest to end users.
A tree structure is the most natural for a classification system. Allowing arbitrary levels of refinement permits the system to adapt to both mature and young subject areas. In young subject areas little software is available, and hence little refinement is necessary. In mature areas where much software is available, increased refinement is necessary to distinguish among the choices.
The concept of filters helps users narrow down the number of desired software modules. Partitioning more than 10000 problem-solving software modules using a 736-node taxonomy necessarily leads to classes populated by a large number of modules. Differentiating among modules in a single class can then be quite tedious. Filters allow the user to specify additional preferences in a number of areas: language (e.g., Fortran, C), precision (e.g., single, double, multiple), access (e.g., free, proprietary), package, and repository. When presenting the user with modules in a given class, GAMS screen out those that do not satisfy the current set of filters.
Two interfaces to GAMS are available: an HTTP gateway and a Java-powered Web client. The native gams (command-line) and xgams (X11) client programs are still available for downloading from math.nist.gov but are obsolete and are being phased out. Although Web browsers provide a universal client interface, implementing sophisticated user actions is often awkward and sometimes impossible. For example, the xgams client requested information from the GAMS server about existing query filters and their possible values on startup. xgams could then present these to the user on demand, without any additional server interaction. By setting these filters, the user provided a profile that xgams used to qualify each subsequent query. Because implementing a persistent user profile in the context of HTTP would be at best awkward and inefficient, GAMS filters have not been implemented in the HTTP gateway.
The functionality that was lost in moving from the xgams client to a Web interface via the HTTP gateway has been regained through the use of Java, and additional functionality has been added. HotGAMS is a Java-powered GAMS client . Taking advantage of Java allows us to improve interactivity in conducting searches and exploring the problem hierarchy. Currently two version of HotGAMS are operational. They both require a Java enabled browser. They differ essentially in how they present the main interaction window, and in where the referenced URLs (e.g., for documentation, subroutine sources, etc.) are displayed in the browser. The HotGAMS version appears on its own Web page and displays referenced URLs on the ``next'' page. HotGAMS in a Frame is a compact HotGAMS that appears within a Netscape Frame, with referenced URLs displayed in a separate frame in the same window. The frame version allows the user to select a sequence of URLs while keeping the HotGAMS applet visible and operational. With either version of HotGAMS, you may specify preferences (i.e., filters) in advance about the software you're interested in, such as the source language or numerical precision. You may also refine your selections after the fact to reduce the set of apparently appropriate modules to the truly relevant ones.
The HotGAMS applet itself consists of a set of tab cards across the top which provide ways of selecting or manipulating a set of software modules which are listed in the lower half of the applet. Clicking the tab selects the associated card. The following describes the functioning of the various cards.
The next step for systems such as GAMS is to provide expert-level advice on software selection. We are particularly interested in the situation where many similar, but not identical, pieces of software appear to meet the user's criteria. We are focusing on extensions to the filtering mechanism that support both simple knowledge representations and effective user interactions . This issue of refining the search will be the subject of further research, with HotGAMS serving as the testbed.