The design of DynSys3D mainly consists of a set of structural specifications and principal decisions. There is no specific functional core of the system, which has to be available when implementing further software based on this workbench. The main advantage of working within DynSys3D is the ability to reuse already existing software components and, simultaneously, to extend the system by new features.
All representatives of a principal component must conform to an interface given by DynSys3D. The interface specification is represented as a header file within the system. This file lists the maximum capabilities of a principal component. Representatives of a component, which do not implement the whole list of functions are also possible, but may not, due to their limitations, be able to work with certain other component instances. The check whether some instances work together or not is done automatically during the link step.
AVS modules mainly consist of one main C procedure each. It is invoked by AVS, whenever new data has been propagated to the module through the data-flow network or a module parameter was changed by the user. During each call the current input data and parameter values are handed over to this main function via parameters. Generally this main function performs the visualization technique represented by the module and finally returns the resulting output data to AVS.
Within DynSys3D the main function of a module represents a separation layer between the AVS interface and the implementation of the visualization technique. Parameters, input, and output are managed within this layer and another function is called to perform the required visualization technique. It is this second function which can be reused by other modules without major changes or adaptations.
The design of the system allows to reduce these problems. Only the directory hierarchy of DynSys3D is replicated for all the developers. They build their implementations locally until it is finished. Whenever a developer needs an already existing system component, a link to the DynSys3D directory tree is installed instead of the replicated local directory. Developers are encouraged to make already working parts of their work early available to the others by placing them as compiled code within the DynSys3D file space. These submitted object files stay available to the others even if the local copy of the developer may not work momentarily. When a new component is finished, it is moved from the developers local hierarchy to the DynSys3D area and installed as standard component.
In the case of this thesis the actual visualization techniques are also often far from being interactive. Anyhow we thought that at least an interactive inspection of the results of the visualization should be possible for the techniques investigated. Therefore the visualization modules include a parameter, which controls the complexity of the geometric representation of the result, e.g., the number of triangles.
This geometric representation parameter does not influence the numerical accuracy, which is used for the calculation of the results. It just forces the module to use a courser representation of the results than reported from the calculation.
The separation of
principal components and the specification of the interfaces is
a key design element, which leads to more symmetry. Additionally
some principal decisions, e.g., the requirement of a parameter
controlling the complexity of the geometric representation, were
thought to lead to more symmetry throughout the system.
The achievement of a high degree of symmetry is formulated as
a design guideline which must be adhered to by the different developers.