Formal methods for legacy systems.
A method is described for obtaining useful information from legacy code. The approach uses formal proven program transformations, which preserve for refine the semantics of a construct while changing its form. The applicability of a transformation in a particular syntactic context is checked before application. By using an appropriate sequence of transformations, the extracted representation is guaranteed to be equivalent to the code. In this paper, we focus on the results of using this approach in the reverse engineering of medium scale, industrial software, written mostly in languages such as assembler and JOVIAL. Results from both benchmark algorithms and heavily modified, geriatric software are summarised. It is concluded that the approach is viable, for self-contained code, and that useful design information may be extracted from legacy systems at economic cost. We conclude that formal methods have an important practical role in the reverse engineering process.
Paper dated January 6, 1995
Citation : Ward, M. and Bennett, K.H. (1995) Formal methods for legacy systems. Journal of Software Maintenance: Research and Practice, 7 (3), pp.203-219.
Research Group : Software Technology Research Laboratory (STRL)