The First Step Backwards Peter T. Breuer 2487-TN-PRG-1031
Version 1.0
Oxford University Computing Laboratory Programming Research Group 11 Keble Road Oxford OX1 3QD England
c 2013 Copyright
P.T. Breuer
Classification and Approval Classification:
Internal to ESPRIT REDO project no. 2487
This document is for use only with Project P2487 and may not be used for any other purpose unless specifically authorised in writing by the Project Manager, having obtained the agreement of the Project Management Committee. Approved for issue as per above classification: Author(s): Approved:
Peter T. Breuer TO BE SPECIFIED
Date: Doc. Id.:
2487-TN-PRG-1031
Doc. type:
Technical Note
Status:
Distributed
Work Package:
11
Task:
561
Distribution:
REDO, OUCL
Confidentiality:
Free distribution
Version 1.0
Document History Distributed at Madrid meeting.
Document Purpose To formally describe reverse engineering.
Acknowledgement This report reflects work which is funded or partially funded by the Commission of the European Communities (CEC) under the ESPRIT II programme project no. 2487: “REDO: REengineering, validation and DOcumentation of systems”
2487-TN-PRG-1031
Version 1.0
The First Step Backwards Peter T. Breuer∗
Abstract We set out an automatic method of transforming source code into a functional specification. The key steps are the production of an initial specification and its subsequent reduction to a normal form.
Introduction There are two approaches to inverse-engineering code being pursued at Oxford: In the first approach, code is logically tested against theories formulated about it, and, in the process of validation (or refutation) a satisfactory and accurate specification for the code is gradually arrived at by the validation expert. This method has been reported on in [3], where it is observed that the validation principles laid down in [5], when conjoined with logic-programming techniques, result in an inverse-engineering system which can itself automatically arrive at a description of the code, albeit in terms of the properties that must be satisfied in order that the attempted validation methods succeed – it is up to the expert to guess an explicit, functional description which satisfies the requirements. ‘The least relation R such that xR2 y ∧ x