Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!ox-prg!client40.comlab!ptb From: ptb@prg.ox.ac.uk (Peter Breuer) Newsgroups: comp.software-eng Subject: Re: Summary: Restructuring and Reverse Engineering. Summary: Successful Reverse Engineering tools exist. The `summary' is off-mark. Keywords: Reverse Engineering Message-ID: <1789@culhua.prg.ox.ac.uk> Date: 27 May 91 12:18:15 GMT References: <1991May25.095806.3732@weyrich.UUCP> Sender: news@prg.ox.ac.uk Followup-To: comp.software-eng Organization: Oxford University Computer Laboratory (Programming Research Group), England, & Cambridge University Engineering Department, England Lines: 46 In article <1991May25.095806.3732@weyrich.UUCP> orville%weyrich@uunet.uu.net writes: > MY CONCLUSIONS:$(I found no comments on successful reverse engineering > products beyond%(simple cross-reference generators and flow-chart > generators.'(Restructur ing is widely done; [...] The bit of Kevin's response that Orville posted >>We are interested in applying machine-learning techniques to determine >>useful restructuring strategies, but not much work has yet been done by >>us on this. Tools that transform code to the functional language, and >>support the user in re-writing this code, have been developed in Prolog. doesn't seem to say so, but our (mine and Kevin's) research work within the REDO project (Esprit project 2487) is aimed at producing **abstractions**. Our research has always been successful and ERGO we have successful reverse engineering tools which produce abstractions from the code. That is somewhat different from `simple cross-reference generators and flow-chart generators' (fume! fume! gnash! gnash!). I suppose the claim will be that by 'product' was meant `commercially available product'. Still, send me money and I'll see what I can do. Since I have to spell it out .... 1) We produce exact (but readable, because they have been `optimized' automatically for readability) translations in a first-order functional programming language *first*. I suppose a call-diagram view of this could be called a `flow-graph' (snort!). 2) Human beings then interact with the reverse engineering tool and progressively organise the mathematical descriptions of the functions into boxes which end up as objects in an object-oriented description, whilst the application code becomes progressively impoverished of all but calls to object methods. The *final* abstraction is in the language called Z++. This is an o-o extension of the specification language Z. For references, mail me (or read the references quoted in the original posting). Moreover, the following either has appeared or will appear SOON: Breuer~P.T., Lano~K.C. Creating Specifications from Code. Journal of Software Maintenance, to appear 1991. -------------------------------------------------------------------------- Peter T. Breuer | OUCL: ptb@uk.ac.ox.prg | CUED: ptb@uk.ac.cam.eng