Next: , Previous: , Up: Implementation   [Contents][Index]


2.1 Software Objects

The Software Evolution Library represents software as software objects which all inherit from the base sel:software class. Currently many subclasses of software are defined. These classes may inherit from other software sub-classes, e.g. most tree-structured source code software objects inherit from the sel/sw/ts:tree-sitter class. The inheritance tree of software objects is shown graphically in Figure 2.1.

Table Table 2.1 lists the existing software object classes with an indicate of their relative maturity.

Software typeSEL ClassMaturity
Source Code using Tree-Sittersel/sw/ts:tree-sittermature
C and C++ source using Clangsel/sw/clang:clangmature
Common Lispsel/sw/lisp:lispmature
compiled assembler (ASM)sel/sw/asm:asmmature
linked ELF binaries
sel/sw/elf-cisc:elf-cisc
mature (not recommended)
LLVM IRsel/sw/llvm:llvmexperimental
CILsel/sw/cil:cilexperimental
Forthsel/sw/forth:forthexperimental
Coq sourcesel/sw/coq:coqexperimental

Table 2.1: Supported software objects listed with relative maturity.

These classes may also inherit from mixin classes which provide additional functionality which may be re-used across multiple software object classes. Detailed descriptions of important software object classes and mixins (which may be added to a software objects inheritance tree to provide additional functionality) are described in the following subsections.


Next: , Previous: , Up: Implementation   [Contents][Index]