Results 1 
6 of
6
Abstracting a Specification from Code
, 1993
"... Much of the work on developing program transformation systems has concentrated on systems to assist in program development. However, the four separate surveys carried out between 1977 and 1990 [18,20,22,24], summarised in [17], show that between 40% and 60% of all commercial software effort is devot ..."
Abstract

Cited by 43 (18 self)
 Add to MetaCart
Much of the work on developing program transformation systems has concentrated on systems to assist in program development. However, the four separate surveys carried out between 1977 and 1990 [18,20,22,24], summarised in [17], show that between 40% and 60% of all commercial software effort is devoted to software maintenance rather than the development of new systems. In this paper we describe a joint project between the University of Durham and CSM Ltd to develop a method and tool for reverse engineering and software maintenance based on program transformation theory. We present an example which illustrates how such a tool can extract a highlevel abstract specification from the lowlevel source code of a program by a process of formal program transformation based on a theory of program equivalence [27]. All the codelevel reverse engineering of the example progr...
Foundations for a Practical Theory of Program Refinement and Transformation
, 1994
"... A wide spectrum language is presented, which is designed to facilitate the proof of the correctness of refinements and transformations. Two different proof methods are introduced and used to prove some fundamental transformations, including a general induction rule (Lemma 3.9) which enables transfor ..."
Abstract

Cited by 21 (14 self)
 Add to MetaCart
A wide spectrum language is presented, which is designed to facilitate the proof of the correctness of refinements and transformations. Two different proof methods are introduced and used to prove some fundamental transformations, including a general induction rule (Lemma 3.9) which enables transformations of recursive and iterative programs to be proved by induction on their finite truncations. A theorem for proving the correctness of recursive implementations is presented (Theorem 3.21), which provides a method for introducing a loop, without requiring the user to provide a loop invariant. A powerful, general purpose, transformation for removing or introducing recursion is described and used in a case study (Section 5) in which we take a small, but highly complex, program and apply formal transformations in order to uncover an abstract specification of the behaviour of the program. The transformation theory supports a transformation system, called FermaT, in which the applicability conditions of each transformation (and hence the correctness of the result) are mechanically verified. These results together considerably simplify the construction of viable program transformation tools; practical consequences are briefly discussed.
Language Oriented Programming
 Software—Concepts and Tools
, 1995
"... This paper describes the concept of language oriented programming which is a novel way of organising the development of a large software system, leading to a different structure for the finished product. The approach starts by developing a formally specified, domainoriented, very highlevel languag ..."
Abstract

Cited by 11 (3 self)
 Add to MetaCart
This paper describes the concept of language oriented programming which is a novel way of organising the development of a large software system, leading to a different structure for the finished product. The approach starts by developing a formally specified, domainoriented, very highlevel language which is designed to be wellsuited to developing "this kind of program". The development process then splits into two independent stages: (1) Implement the system using this "middle level" language, and (2) Implement a compiler or translator or interpreter for the language, using existing technology. The approach is claimed to have advantages for domain analysis, rapid prototyping, maintenance, portability, userenhanceable systems, reuse of development work, while also providing high development productivity. We give an example where the method has been used very successfully (in conjunction with rapid prototyping) in the development of a large software system: the FermaT reverse enginee...
A Recursion Removal Theorem  Proof and Applications
, 1999
"... In this paper we briey introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. This theorem includes as special cases the two techniques discussed by Knuth [12] and Bird [7]. We describe some applications of t ..."
Abstract

Cited by 11 (8 self)
 Add to MetaCart
In this paper we briey introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. This theorem includes as special cases the two techniques discussed by Knuth [12] and Bird [7]. We describe some applications of the theorem to cascade recursion, binary cascade recursion, Gray codes, the Towers of Hanoi problem, and an inverse engineering problem. 1 Introduction In this paper we briey introduce some of the ideas behind the transformation theory we have developed over the last eight years at Oxford and Durham Universities and describe a recent result: a general recursion removal theorem. We use a Wide Spectrum Language (called WSL), developed in [19,20,21] which includes lowlevel programming constructs and highlevel abstract specications within a single language. Working within a single language means that the proof that a program correctly implements a specication, or that a specication correct...
Inverse Engineering a simple Real Time program
, 1999
"... Reverse engineering of interruptdriven realtime programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the nonfunctional timing requirements, are implicit and can be very difficult to discover. However, in this paper we pre ..."
Abstract

Cited by 10 (4 self)
 Add to MetaCart
Reverse engineering of interruptdriven realtime programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the nonfunctional timing requirements, are implicit and can be very difficult to discover. However, in this paper we present a significant advance in this area, which is achieved by modelling realtime programs with interrupts in the wide spectrum language WSL. A small example program is modelled in this way, and formal program transformations are used to derive various timing constraints and to inverse engineer a formal specification of the program. (We use the term inverse engineering to mean reverse engineering achieved by formal program transformations).
METAWSL and MetaTransformations in the FermaT Transformation System
 IN COMPSAC
, 2005
"... A program transformation is an operation which can be applied to any program (satisfying the transformations applicability conditions) and returns a semantically equivalent program. In the FermaT transformation system program transformations are carried out in a wide spectrum language, called WSL, a ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
A program transformation is an operation which can be applied to any program (satisfying the transformations applicability conditions) and returns a semantically equivalent program. In the FermaT transformation system program transformations are carried out in a wide spectrum language, called WSL, and the transformations themselves are written in an extension of WSL called METAWSL which was specifically designed to be a domainspecific language for writing program transformations. As a result, FermaT is capable of transforming its own source code via metatransformations. This paper introduces METAWSL and describes some applications of metatransformations in the FermaT system.