• DocumentCode
    1664192
  • Title

    Reverse program calculation supported by code slicing

  • Author

    Villavicencio, G. ; Oliveira, J.N.

  • Author_Institution
    Univ. Catolica de Santiago del Estero, Argentina
  • fYear
    2001
  • fDate
    6/23/1905 12:00:00 AM
  • Firstpage
    35
  • Lastpage
    45
  • 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;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Reverse Engineering, 2001. Proceedings. Eighth Working Conference on
  • Conference_Location
    Stuttgart
  • ISSN
    1095-1350
  • Print_ISBN
    0-7695-1303-4
  • Type

    conf

  • DOI
    10.1109/WCRE.2001.957808
  • Filename
    957808