PrevPrev UpUp NextNext


The unknown system

The unknown system that we shall analyze is concepts, a tool that implements concept analysis. Concept analysis is a mathematical technique to analyze binary relations.

Concepts is a medium-sized system written in C. The author is Christian Lindig who developed it during his Ph.D. research at the University of Braunschweig. The tool is being used world-wide in the reengineering community. It is fairly well designed and implemented and may not show the symptoms of typical legacy systems. In particular, its consequent naming convention helps you to understand the system even if you are neither familiar with the system itself nor with its application domain.

We are using this system because it is still of manageable size for this kind of tutorial but not at all trivial. It allows us to show all facets of the Bauhaus toolkit. Bauhaus itself has been successfully applied to large industrial system up to 1.5 MLOC; but systems of this size require much more time than what is available for a tutorial.

Here is an excerpt from the man page of concepts, the only available user documentation:

 concepts [ -o file ] [ -f format ] -c | -g | -G | -a | -s [file]
  calculates a lattice of concepts from a binary relation and
  outputs the result in a user specified format. Concept lattices are also
  known as Galois lattices. The relation associates objects with
  attributes. The input is read either from stdin or from
  file; output is written to stdout or to a file specified
  by the -o option. The format of the output is controlled by a
  format string supplied by the -f option.  Beside all concepts,
  concepts can compute the arrow relation over the input, the number of
  concepts, and can create output suitable as graphplace input to print
  the structure of the concept lattice.

The source files of this system are contained in two directories:
directory # file type lines of code
lib 4 header files (.h) 256
4 C files (.c) 1.494
src 11 header files (.h) 447
10 C files (.c) 5.758
29 files 7.955

Last modified: Tue Aug 26 14:32:43 MET DST 2003