Results 1 -
6 of
6
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.
Formal Methods to Aid the Evolution of Software
- International Journal of Software Engineering and Knowledge Engineering
, 1995
"... There is a vast collection of operational software systems which are vitally important to their users, yet are becoming increasingly difficult to maintain, enhance and keep up to date with rapidly changing requirements. For many of these so called legacy systems the option of throwing the system awa ..."
Abstract
-
Cited by 16 (5 self)
- Add to MetaCart
There is a vast collection of operational software systems which are vitally important to their users, yet are becoming increasingly difficult to maintain, enhance and keep up to date with rapidly changing requirements. For many of these so called legacy systems the option of throwing the system away an re-writing it from scratch is not economically viable. Methods are therefore urgently required which enable these systems to evolve in a controlled manner. The approach described in this paper uses formal proven program transformations, which preserve or refine the semantics of a program while changing its form. These transformations are applied to restructure ans simplify the legacy systems and to extract higher-level representations. By using an appropriate sequence of transformations, the extracted representation is guaranteed to be equivalent to the code. The method is based on a formal wide spectrum language, called WSL, with accompanying formal method. Over the last ten years we h...
Recursion Removal/Introduction by Formal Transformation: An Aid to Program Development and Program Comprehension
- Comput. J
, 1999
"... ..."
Bylands: reverse engineering safety-critical systems
- In IEEE International Conference on Software Maintenance
, 1995
"... In this paper we address two problems concerned with the maintenance of safety-critical software. Firstly, we analyse the new issues required for the re-verse engineering of real-time existing code to extract high level designs. Secondly, we present a possible de-sign, abstraction mechanism that can ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
In this paper we address two problems concerned with the maintenance of safety-critical software. Firstly, we analyse the new issues required for the re-verse engineering of real-time existing code to extract high level designs. Secondly, we present a possible de-sign, abstraction mechanism that can be used for safety-critical software. We use formal transformations both in the reuerse engineering of systems involving tem-representation. We present a design framework and the results of initial experiments. The contributions are: (I) the requirements analysis for reverse engi-neering safety-critical systems, (2) the use of very-high-level domain languages, and (3) formal transfor-mations QS the unifying technology.
Slicing as a Program Transformation
- ACM Transactions On Programming Languages and Systems
, 2007
"... The aim of this paper is to provide a unified mathematical framework for program slicing which places all slicing work, for sequential programs, on a sound theoretical foundation. The main advantage to a mathematical approach is that it is not tied to a particular representation. In fact the mathema ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
The aim of this paper is to provide a unified mathematical framework for program slicing which places all slicing work, for sequential programs, on a sound theoretical foundation. The main advantage to a mathematical approach is that it is not tied to a particular representation. In fact the mathematics provides a sound basis for any particular representation. We use the WSL (Wide Spectrum Language) program transformation theory as our framework. Within this framework we define a new semantic relation, semi-refinement which lies between semantic equivalence and semantic refinement. Combining this semantic relation, a syntactic relation (called reduction) and WSL’s remove statement, we can give mathematical definitions for backwards slicing, conditioned slicing, static and dynamic slicing and semantic slicing as program transformations in the WSL transformation theory. A novel technique of “encoding ” operational semantics within a denotational semantics allows the framework to handle “operational slicing”. The theory also enables the concept of slicing to be applied to nondeterministic programs. These transformations are implemented in the industry-strength FermaT transformation system.
Specifications from Source Code - Alchemists' Dream or Practical Reality?
, 1994
"... We describe a method for extracting high-level specifications from unstructured source code. The method is based on a theory of program re nement and transformation, which is used as the bases for the development of a catalogue of powerful semantics-preserving transformations. Each transformation is ..."
Abstract
-
Cited by 5 (2 self)
- Add to MetaCart
We describe a method for extracting high-level specifications from unstructured source code. The method is based on a theory of program re nement and transformation, which is used as the bases for the development of a catalogue of powerful semantics-preserving transformations. Each transformation is an operation on a program which has a mechanically-checkable correctness condition, and which has been rigorously proved to produce a semantically equivalent result. The transformations are carried out in a wide spectrum programming language (called WSL). This language includes high-level specifications as well as low-level programming constructs. As a result, the formal reverse engineering process (from source code to equivalent specifications) and the redevelopment process (refinement of specifications into source code) can both be carried out within a single language and transformation theory. We also discuss a tool (FermaT) which has been developed to support this approach to reengineerin...

