14 research outputs found
Reverse Engineering from Assembler to Formal Specifications via Program Transformations
The FermaT transformation system, based on research carried out over the last
sixteen years at Durham University, De Montfort University and Software
Migrations Ltd., is an industrial-strength formal transformation engine with
many applications in program comprehension and language migration. This paper
is a case study which uses automated plus manually-directed transformations and
abstractions to convert an IBM 370 Assembler code program into a very
high-level abstract specification.Comment: 10 page
Assembler to C migration using the FermaT transformation system
The FermaT transformation system, based on research carried out over the last twelve years at Durham University and Software Migrations Ltd., is an industrial-strength formal transformation engine with many applications in program comprehension and language migration. This paper describes one application of the system: the migration of IBM 370 Assembler code to equivalent, maintainable C code. We present an example of using the tool to migrate a small, but complex, assembler module to C with no manual intervention required. We briefly discuss a mass migration exercise where 1,925 assembler modules were successfully migrated to C code
Formal methods for legacy systems.
Paper dated January 6, 1995A 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.Partly funded bu Alvey project SE-088, partly through a DTI/SERC and IBM UK Ltd. funded IEATP grant "From assembler to Z using formal transformations" and partly by SERC (Science and Engineering Research Council) project "A proof theory for program refinement and equivalence: extensions"
Formal methods to aid the evolution of software.
Paper dated January 6, 1995There 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 these so called legacy systems the option of throwing the system away and 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 and simplify the legacy systems and to extract higher-level representations. By using an appropriate sequence of transformation, 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 have developed a large catalogue of proven transformations, together with mechanically verifiable applicability conditions. These have been applied to many software development, reverse engineering and maintenance problems. In this paper, we focus on the results of using this approach in 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. We conclude that formal methods have an important practical role in software evolution.Partly funded bu Alvey project SE-088, partly through a DTI/SERC and IBM UK Ltd. funded IEATP grant "From assembler to Z using formal transformations" and partly by SERC (Science and Engineering Research Council) project "A proof theory for program refinement and equivalence: extensions"
Data re-engineering using formal transformations
This thesis presents and analyses a solution to the problem of formally re- engineering program data structures, allowing new representations of a program to be developed. The work is based around Ward's theory of program transformations which uses a Wide Spectrum Language, WSL, whose semantics were specially developed for use in proof of program transformations. The re-engineered code exhibits equivalent functionality to the original but differs in the degree of data abstraction and representation. Previous transformational re-engineering work has concentrated upon control flow restructuring, which has highlighted a lack of support for data restructuring in the maintainer's tool-set. Problems have been encountered during program transformation due to the lack of support for data re-engineering. A lack of strict data semantics and manipulation capabilities has left the maintainer unable to produce optimally re-engineered solutions. It has also hindered the migration of programs into other languages because it has not been possible to convert data structures into an appropriate form in the target language. The main contribution of the thesis is the Data Re-Engineering and Abstraction Mechanism (DREAM) which allows theories about type equivalence to be represented and used in a re-engineering environment. DREAM is based around the technique of "ghosting", a way of introducing different representations of data, which provides the theoretical underpinning of the changes applied to the program. A second major contribution is the introduction of data typing into the WSL language. This allows DREAM to be integrated into the existing transformation theories within WSL. These theoretical extensions of the original work have been shown to be practically viable by implementation within a prototype transformation tool, the Maintainer's Assistant. The extended tool has been used to re-engineer heavily modified, commercial legacy code. The results of this have shown that useful re-engineering work can be performed and that DREAM integrates well with existing control flow transformations
Provably Correct Derivation of Algorithms Using FermaT
The transformational programming method of algorithm derivation starts
with a formal specification of the result to be achieved, plus some
informal ideas as to what techniques will be used in the implementation.
The formal specification is then transformed into an implementation,
by means of correctness-preserving refinement and transformation steps,
guided by the informal ideas. The transformation process will
typically include the following stages: (1) Formal specification (2)
Elaboration of the specification, (3) Divide and conquer to handle
the general case (4) Recursion introduction, (5) Recursion removal,
if an iterative solution is desired, (6) Optimisation, if required.
At any stage in the process, sub-specifications can be extracted
and transformed separately. The main difference between this
approach and the invariant based programming approach (and similar
stepwise refinement methods) is that loops can be introduced and
manipulated while maintaining program correctness and with no need
to derive loop invariants. Another difference is that at every
stage in the process we are working with a correct program:
there is never any need for a separate "verification" step.
These factors help to ensure that the method is capable of scaling
up to the development of large and complex software systems.
The method is applied to the derivation of a complex linked list
algorithm and produces code which is over twice as fast as the code
written by Donald Knuth to solve the same problem
An agent-based service-oriented approach to evolving legacy software systems into a pervasive computing environment.
This thesis focuses on an Agent-Based Service-Oriented approach to evolving legacy system into a Pervasive Computing environment. The methodology consists of multiple phases: using reverse engineering techniques to comprehend and decompose legacy systems, employing XML and Web Services to transform and represent a legacy system as pervasive services, and integrating these pervasive services into pervasive computing environments with agent based integration technology.
A legacy intelligent building system is used as a case study for experiments with the approach, which demonstrates that the proposed approach has the ability to evolve legacy systems into pervasive service environments seamlessly. Conclusion is drawn based on analysis and further research directions are also discussed
Model driven software modernisation
Constant innovation of information technology and ever-changing market requirements
relegate more and more existing software to legacy status. Generating software through
reusing legacy systems has been a primary solution and software re-engineering has the
potential to improve software productivity and quality across the entire software life
cycle. The classical re-engineering technology starts at the level of program source code
which is the most or only reliable information on a legacy system. The program
specification derived from legacy source code will then facilitate the migration of
legacy systems in the subsequent forward engineering steps. A recent research trend in
re-engineering area carries this idea further and moves into model driven perspective
that the specification is presented with models.
The thesis focuses on engaging model technology to modernise legacy systems. A
unified approach, REMOST (Re-Engineering through MOdel conStruction and
Transformation), is proposed in the context of Model Driven Architecture (MDA). The
theoretical foundation is the construction of a WSL-based Modelling Language, known
as WML, which is an extension of WSL (Wide Spectrum Language). WML is defined
to provide a spectrum of models for the system re-engineering, including Common
Modelling Language (CML), Architecture Description Language (ADL) and Domain
Specific Modelling Language (DSML). 9rtetaWML is designed for model
transformation, providing query facilities, action primitives and metrics functions. A set
of transformation rules are defined in 9rtetaWML to conduct system abstraction and
refactoring. Model transformation for unifying WML and UML is also provided, which
can bridge the legacy systems to MDA. The architecture and working flow of the
REMOST approach are proposed and a prototype tool environment is developed for
testing the approach. A number of case studies are used for experiments with the
approach and the prototype tool, which show that the proposed approach is feasible and
promising in its domain. Conclusion is drawn based on analysis and further research
directions are also discussed
A program transformation step prediction based reengineering approach
EThOS - Electronic Theses Online ServiceGBUnited Kingdo
An approach to modelling and describing software evolution processes
EThOS - Electronic Theses Online ServiceGBUnited Kingdo