Title :
Reverse program calculation supported by code slicing
Author :
Villavicencio, G. ; Oliveira, J.N.
Author_Institution :
Univ. Catolica de Santiago del Estero, Argentina
fDate :
6/23/1905 12:00:00 AM
Abstract :
This paper sketches a discipline for reverse engineering which combines formal and semi-formal methods. Among the former is the "algebra of programming", which we apply in "reverse order" so as to reconstruct formal specifications of legacy code. The latter includes code slicing, used as a means of trimming down the complexity of handling the formal semantics of all program variables at the same time. A strong point of the approach is its constructive style. Reverse calculations go as far as imploding auxiliary variables, introducing mutual recursion (if applicable) and transforming semantic functions into standard generic programming schemata such as cata/paramorphisms. We illustrate the approach by reversing a piece of code (from C to Haskell) already studied in the code-slicing literature: the word-count (wc) program
Keywords :
algebraic specification; calculation; program slicing; reverse engineering; C code; Haskell; auxiliary variables imploding; catamorphisms; code slicing; constructive style; formal methods; formal semantics; generic programming schemata; legacy code formal specifications reconstruction; mutual recursion; paramorphisms; program variables; programming algebra; reverse program calculation; semantic functions; semi-formal methods; word-count program; Algebra; Application software; Calculus; Documentation; Formal specifications; Functional programming; Hardware; Reverse engineering; Software design; Software engineering;
Conference_Titel :
Reverse Engineering, 2001. Proceedings. Eighth Working Conference on
Conference_Location :
Stuttgart
Print_ISBN :
0-7695-1303-4
DOI :
10.1109/WCRE.2001.957808