HASSLE PROGRAM DEVELOPMENT
HASSLE Description
The Hierarchical Access System for Sequence Libraries in Europe is a network environment for remote asynchronous execution of jobs (e.g. sequence database searches). HASSLE is the first general, platform-independent implementation of a user-transparent access communication tool which is not targeted at a single application. HASSLE is successfully used by many EMBnet(European Molecular Biology network) nodes. HASSLE is written in ANSI C and runs on various operating systems. Reinhard Doelz wrote all the previous versions of HASSLE. The following prerequisites help to make HASSLE effective:
Remote jobs can be started after data transmission (i.e. batch processing)
Remote jobs like database retrieval and database search require no interaction after the query is formed
For a given job, multiple redundant servers exist
The numbers of servers is small compared to clients
Remote temporary files can be erased after job completion
The HASSLE code layers
For this project, the HASSLE package has been broken into segments:
the protocol layers, the API (Application Programmers Interface), the vertical utilities (which allow access to variables from each layer without the need for global variables) and a verification suite (which allows for complete error-testing by inducing artificial errors from within the code, and testing that the program responds accordingly- this is imperative for testing such areas as network-problems). Since the design follows the layers of the protocol, if a layer has to be changed, for instance, a transmission protocol other than TCP/IP, then only the relevant layer needs to be modified
The purpose of the design is:
allow for a structured API
generate areas for independent code development
allow for applications other than HASSLE to speak to the HASSLE protocol
allow layered software verification
allow easy lower protocol changes: if in the future, TCP/IP is no longer the norm, only the relevant modules in that layer require modification
The HASSLE Documentation
The redesign is top-down: before any computer-language coding has been done, the package has been thoroughly documented resulting in a complete reference of the functions. The documentation is then converted into Postscript and on-line versions, the latter (Mosaic) allows effective walking within the code. Each function contains a detailed description including the purpose, where the function was called from, arguments needed etc. Such a design was needed because of the increase in the amount of code and the complexity with each successive HASSLE version release.
The format of the hypertext documentation consists of three sections:
a list of all the functions
the HASSLE API calling hierarchy
the function descriptions
Using this system, a programmer can, for example, lookup the description of any function by clicking the mouse on the function name, or can lookup exactly where in the program the function is called and what the next function call will be.

This graphical representation describes the history of HASSLE. As the amount of C lines C modules and C functions is increasing at such a massive rate between each successive version of HASSLE, the present increase indicates that without a completely new design, the next version of HASSLE could contain a possible 400 or more C functions. Consequently the new design has had the dramatic impact of reducing the number of functions to less than 100.
The design phase of the redesign is already finished and documented.
Most of the coding for the client is finished, furthermore due to the built-in verification, the modules which have been completed have also been tested individually for errors. Another design feature was to avoid the overhead of duplicated code for the client and the server (e.g. the communication programming). Since the client and server need the functionality of the lower layers of the design, both access the same modules resulting in bonus of a portion of the server programming is already written and tested.