Next: Software Objects, Previous: Introduction, Up: Top [Contents][Index]
The Software Evolution library is implemented in Common Lisp and is intended for use in Common Lisp programs. Figure 2.1 provides an overview of the Software Evolution system, the specifics of which are given in remainder of this section.
| • Software Objects: | Representation of software | |
| • Software Methods: | Manipulation of software | |
| • Global Variables: | Interface to search processes | |
| • Search Functions: | High level functions to perform search |
population functions
global variables --------------------
---------------- +------------------+ incorporate
*population* | *population* | evict
*max-population-size* |------------------| tournament
*tournament-size* | list of | mutate
*fitness-predicate* | software objects | new-individual
*cross-chance* +------------------+ evolve
*fitness-evals* | mcmc
*running* +-+-+
| | | software functions
+------------------+ --------------
evolve arguments | software object | genome
---------------- |------------------| phenome
max-evals | edits, | copy
max-time | fitness | pick-good
target | ... | pick-bad
period +------------------+ mutate
period-func | crossover
filter |
+---------------+---+------------+----------------+
| | | |
+---------------+ +-------------+ +-------------+ +------------+
| AST | | ELF | | lisp | | asm |
|---------------| |-------------| |-------------| |------------|
| Abstract | | Executable | | lisp source | | assembly |
| Syntax Tree | | Linkable | +-------------+ | code |
+---------------+ | Format | +------------+
| +-------------+ |
+--------------+-------------------+ +------------------+
| | | | asm-range |
+-------+ +----------------+ +----------+ |------------------|
| Clang | | CIL | | LLVM | | memory efficient |
|-------| |----------------| |----------| +------------------+
| C AST | | C Intermediate | | LLVM IR |
+-------+ | Language | +----------+
+----------------+
Figure 2.1: Software Evolution API. Exported functions and variables are shown along with the software object class hierarchy.