Thanks to the specific design of Galicia's architecture, the tools
of the layer two achieve a high degree of integration. On the one hand, they rely on the same low-level services provided by the kernel which simplifies the communication and data exchange among tools. On the other hand, they are addressed via an integrated GUI which eases their joint utilization.
The modular architecture of Galicia facilitates modifications, both in the set of available algorithmic methods, i.e., in the tool layer, and in the specific data structures used in the kernel.
First, the high level of genericity within the platform results from the strict use of abstract data types for the various structures related to the FCA domain: concept intents, concepts, lattices, etc. For each of them, a collection of primitives is specified and assigned to a particular abstract class or interface (as in Java). This reduces the dependency of client tools on the particular implementation of the data structure. Moreover, alternative implementations may be used whenever particular feature of the resulting services have to be favored (e.g., efficiency, low memory consumption, etc.). For example, the concept lattice data type is represented as an abstract class whose services include concept retrieval, add/remove of concepts, etc.
|A similar approach has been applied to the design of the structure extracting services. Instead of representing alternative algorithms as software methods of the same class, these have been reified in the design model of the platform. Thus, each algorithm is represented by a class, classes being further factorized into super-classes with respect of the task that is to be achieved: construction, update, assembly, etc.
For example, the algorithm described in , is modeled by a class which inherits from the class of all incremental algorithms that is itself a subclass of the class of all lattice construction algorithms. In this context, a particular execution of an algorithm requested by a user creates an object in the class of the algorithm and stores in it any relevant data.
Such a design allows new algorithmic procedures to be integrated into the respective tool easily. Indeed, any new algorithm inherits the available related information from its most specific category while benefiting from the whole range of services offered by the lower layers of the platform.