next up previous contents
Next: 2.3 Structures of the Up: 2. The Algorithm Library Previous: 2.1 Object-Oriented Programming


2.2 Design of the Algorithm Library

The core concept of the Algorithm Library is to abstract algorithms and their associated data by appropriate MDL classes. Generally speaking an MDL class is a C++ class derived from the central Algorithm Library class Model which provides all functionality needed for the management of the MDL class by the Algorithm Library. Whenever a program needs to evaluate a certain algorithm, it requests a reference to an instance of a matching MDL class from the Algorithm Library and executes its virtual methods. Data values are exchanged between the MDL class and the program by using parameters which are abstractions of these values generated by inheriting and specializing the Parameter C++ template class. Sets of parameters are summarized by using Interface classes.

The Algorithm Library is designed to support the complete cycle of design, implementation, and modification of applications. This results in a set of distinct interfaces for each of the applications:

application design: An important step within the design of a new application is the decision which algorithms should be implemented by utilizing the Algorithm Library. The Algorithm Library contains a C++ interface to introduce new parent Model classes describing the concepts common to a specific type of algorithms or at least classifying these algorithms for later runtime type checks.
implementation: For the actual implementation of the application new Model classes are sub-classed from the above mentioned basic Model classes to implement the required algorithms. For the management of Model and Parameter class instances, and all other functionality of the Algorithm Library a corresponding C++ interface is provided. Basic features of the Algorithm Library like parsing MDL files, requesting and evaluating MDL classes can be addressed by an additional C interface which can also be used by applications written in FORTRAN, LISP or other languages for which a C binding exists.
modification: For users intending to modify or extend the behavior of certain algorithms the Algorithm Library supplies an interpreter for the object-oriented interpreter language MDL, which allows for the implementation of new MDL classes without having to change or recompile the source code of the application. While the MDL interpreter is intended mainly for the development and testing of new MDL classes, the Algorithm Library contains an additional compiler for MDL, which generates in conjunction with the VMAKE [62] CASE tool dynamically loadable modules containing native code for the used CPU.


next up previous contents
Next: 2.3 Structures of the Up: 2. The Algorithm Library Previous: 2.1 Object-Oriented Programming
Robert Mlekus
1999-11-14