Evolution of Rule-Based Programs

Author
Ralf Lämmel

Abstract
The term rule-based program is meant to include definite clause programs, SOS specifications, attribute grammars, and conditional rewrite systems. These setups are widely used for the executable specification or implementation of language-based tools, e.g., interpreters, translators, type checkers, program analysers, and program transformations.

We provide a pragmatic, transformation-based approach for expressing and tracking changes in rule-based programs in the course of program evolution. To this end, we design an operator suite for the transformation of rule-based programs. The operators facilitate steps for clean-up, refactoring, and enhancement. We use SOS-based interpreter examples to illustrate evolution of rule-based programs. We use logic programming to execute the examples, while the relevant evolution operators are made available as logic meta-programs.

Keywords
Software Evolution, Program Transformation, Rule-Based Programming, Meta-programming, Natural Semantics, Structural Operational Semantics, Logic Programming, Attribute Grammars, Constructive Algebraic Specification, Refactoring, Extensibility, Reuse

Bibtex entry
@article{Laemmel04-JLAP,
 author  = "Ralf L{\"a}mmel",
 title   = "{Evolution of Rule-Based Programs}",
 journal = "Journal of Logic and Algebraic Programming",
 year    = 2004,
 note    = {Special Issue on Structural Operational Semantics; To appear}
}

Links