A Control-flow normalization algorithm and its complexity, Z. Ammarguellat
@Article{ ammarguellat:control-flow,
title = {A Control-flow normalization algorithm and its
complexity},
author = {Z. Ammarguellat},
journal = {{IEEE} Transactions on Software Engineering},
volume = {18},
number = {3},
pages = {237--251},
year = {1992},
note = { A simple method is presented for normalizing the
control-flow of programs to facilitate program
transformations, program analysis, and automatic
parallelization. This method does not make use of code
replication. The normalization results in a restructuring
of the code that obviates the need for control dependency
relations},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
Maintenance and Porting of Software by Design Recovery, Guillermo Arango and Ira Baxter and Peter Freeman
@InProceedings{ arango.baxter.ea:maintenance,
author = {Guillermo Arango and Ira Baxter and Peter Freeman},
title = {Maintenance and Porting of Software by Design Recovery},
booktitle = {CSM'85: Proceedings of the 1985 Conference on Software
Maintenance, {\rm (Washington, DC; November 11-13, 1985)}},
year = {November 1985},
pages = {42-49},
abstract = {DRACO paper on porting through transformation from source
code to abstraction back to new code. Captures
domain-specific knowledge.},
class = {Reengineering_in_General, Experiences, Alteration,
Re-Code, Program_Transformations,
Software_Reverse_Engineering, Reverse_Design,
Knowledge-Based_Concept_Assignment,
Human_Oriented_Concept_Assignment_by_Informal_Reasoning },
keywords = {domain modeling, domain analysis, DRACO}
}
TMM: Software Maintenance by Transformation, Guillermo Arango and Ira Baxter and Peter Freeman and Christopher Pidgeon
@Article{ arango.baxter.ea:tmm*1,
author = {Guillermo Arango and Ira Baxter and Peter Freeman and
Christopher Pidgeon},
title = {{TMM}: Software Maintenance by Transformation},
journal = {IEEE Software},
month = {May},
year = {1986},
volume = {3},
number = {3},
pages = {27-39},
abstract = { . Another DRACO-based paper. . Uses least common
abstractions. },
keywords = {domain modeling, domain analysis, DRACO},
class = {Reengineering_in_General, Experiences, Alteration,
Re-Code, Program_Transformations,
Software_Reverse_Engineering, Reverse_Design,
Knowledge-Based_Concept_Assignment,
Human_Oriented_Concept_Assignment_by_Informal_Reasoning}
}
The translation of GOTO programs into WHILE programs, E. Ashcroft and Z. Manna
@InProceedings{ ashcroft.manna:translation,
title = {The translation of GOTO programs into WHILE programs},
author = {E. Ashcroft and Z. Manna},
booktitle = {Proceedings of {IFIP} Congress 71},
editor = {C.V. Freiman and J.E. Griffith and J.L. Rosenfeld},
volume = {1},
pages = {250--255},
publisher = {North-Holland},
year = {1972},
note = { It is shown that every flowchart program can be written
without go to statements by using while statements. The
transformation does not give rise to less efficient
programs and, moreover, the structure of the original
flowchart program is preserved},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
Design Maintenance Systems, Ira D. Baxter
@Article{ baxter:design,
author = {Ira D. Baxter},
title = {Design Maintenance Systems},
journal = {Communications of the ACM},
month = {April},
year = {1992},
volume = {35},
number = {4},
pages = {73-89},
abstract = { . DMS . Advocates a transformational approach to SM at
the design level. . Maintain the design, generate the
implementation. . Uses TCL (!): Transformation Control
Language. . "Maintenance deltas": maintenance = applying
deltas to design. },
class = {Alteration, Re-Code, Program_Transformations }
}
A transformation system for maintenance: turning theory into practice, K. Bennet and T. Bull and H. Yang
@InProceedings{ bennet.bull.ea:transformation,
title = {A transformation system for maintenance: turning theory
into practice},
author = {K. Bennet and T. Bull and H. Yang},
pages = {146--155},
booktitle = {\cite{SM92}},
year = {1992},
note = { Describes the architecture of the Maintainer's Assistant,
a reverse engineering tool based on program
transformations. Discusses the role of metrics in selecting
appropriate transformations. Also see~\cite{WB93}},
class = {Alteration, Re-Code, Program_Transformations}
}
A catalog of object model transformations, michael blaha and william premerlani
@InProceedings{ blaha.premerlani:catalog,
author = {michael blaha and william premerlani},
title = {A catalog of object model transformations},
booktitle = {Third Working Conference on Reverse Engineering},
publisher = {IEEE},
year = {1996},
abstract = {The process of software development is gradually achieving
more rigor. Proficient develoeprs now construct software
indirectly through the abstraction of models. Models allow
a developer to focus on the essential aspects of an
application and defer details. Transformations extend the
power of models, as the developer can substitute refinement
and optimization of models for tedious manipulation of
code. This paper catalogs object modeling transformations
that we have encountered in our application work.},
keywords = {model, reverse engineering, transformation},
class = {Re-Code Program_Transformations Alteration }
}
Flow Diagrams, Turing Machines and Languages with only Two Formation Rules, C. Boehm and G. Jacopini
@Article{ boehm.jacopini:flow,
author = {C. Boehm and G. Jacopini},
title = {Flow Diagrams, Turing Machines and Languages with only Two
Formation Rules},
journal = {Communications of the ACM},
year = {1966},
pages = {366-371},
month = may,
abstract = {This paper contains a proof that every program with gotos
can be transformed into a semantically equivalent program
without goto. A transformation algorithm is given. },
contents = {Wolfgang Gellerich: Die Autoren beweisen(!), dass man ohne
GOTO auskommt und geben, wenn ich mich richtig erinnere,
auch einen allgemeinen Umstrukturierungsalgorithmus an, der
aber fuer die Praxis nicht taugt.},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
On project-specific languages and their application in reengineering, Dmitry Boulychev and Dmitry Koznov and Andrey A.Terekhov
Available as
postscript.
@InProceedings{ boulychev.koznov.ea:on,
author = {Dmitry Boulychev and Dmitry Koznov and Andrey A.Terekhov},
title = {On project-specific languages and their application in
reengineering},
booktitle = {Proceedings of the 6th Conference on Software Maintenance
and Reengineering},
publisher = {IEEE Computer Society Press},
year = {2002},
pages = {177-185},
month = {March},
url = {http://users.tepkom.ru/ddt/Articles/ProjectSpecificLanguages.ps}
,
abstract = {We propose an approach for tuning reengineering tools to
particular projects. This approach is based on the informal
knowledge of the system, consisting of specific usages of
the programming language. We illustrate this process with
examples from an industrial project on PL/I to Java
conversion.},
keywords = {project-specific languages, language conversion, informal
knowledge, PL/I},
class = {Encapsulation_and_Finding_Objects_in_Legacy_Code Re-Code
Knowledge-Based_Concept_Assignment
Source-to-Source-Translatio Reverse_Design
Program_Transformations Alteration
Human_Oriented_Concept_Assignment_by_Informal_Reasoning
Software_Reverse_Engineering }
}
The Automatic Restructuring of COBOL, Eric Bush
@InProceedings{ bush:automatic,
author = {Eric Bush},
title = {The Automatic Restructuring of COBOL},
booktitle = {CSM'85: Proceedings of the 1985 Conference on Software
Maintenance, {\rm (Washington, DC; November 11-13, 1985)}},
year = {November 1985},
pages = {35-41},
abstract = {Reduction of flow graphs in COBOL programs into so-called
normal form. PITS},
class = {Alteration, Re-Code, Control_Flow_Normalization }
}
A Re-engingeering Approach to Program Translation, William C. Chu
@InProceedings{ chu:re-engingeering,
author = {William C. Chu},
title = {A Re-engingeering Approach to Program Translation},
pages = {42--50},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1993},
year = {1993},
publisher = {IEEE Computer Society Press},
month = sep,
abstract = {Traditional program translation takes a program written in
some source language and creates a semantically equivalent
program in some target language. A translation via
transliteration and refinement is the major approach, in
which the source program is first transliterated into the
target language on a line-by-line basis and various
refinements are then applied to improve the produced target
program. In many cases, it serves the purpose of
correctness but it is quite liminted to satisfy the other
goals, such as the improvement of readability,
maintainability, and reusability. Another approach,
translation via abstraction and reimplementation, was
proposed to satisfy these goals. However, this approach is
currently not able to apply to the programs of commercial
size and complexity. This paper presents a re-engineering
approach to program translation.},
class = {Alteration, Re-Code, Source-to-Source-Translation}
}
Graphbasierte Werkzeuge zum Reverse Engineering und Reengineering, Katja Cremer
@PhDThesis{ cremer:graphbasierte,
author = {Katja Cremer},
title = {Graphbasierte Werkzeuge zum Reverse Engineering und
Reengineering},
school = {RWTH Aachen},
year = {2000},
address = {ISBN 3-8244-0497-4, Deutscher Universitätsverlag},
class = {Re-Code Program_Transformation Alteration }
}
Reengineering Cobol Systems to Ada, R. Gray and T. Bickmore and S. Williams
@TechReport{ gray.bickmore.ea:reengineering,
author = {R. Gray and T. Bickmore and S. Williams},
institution = {InVision Software Reengineering, Software Technology
Center, Lockheed Palo Alto Laboratories},
title = {Reengineering Cobol Systems to Ada},
year = {1995},
note = { This paper describes the reengineering of 50,000 lines of
Cobol code and the translation to Ada. The goal was to do
it as automatically as possible. An inferential method was
used to obtain all needed information from the Cobol code
itself, no external information from users or programmers
was needed. The authors claim that inferential methods will
be the basis of the reengineering technology of the 21th
century},
class = {Alteration, Re-Code, Program_Transformations,
Source-to-Source-Translation}
}
Automated Assistance for Program Restructuring, Wiliam Grisworld and David Notkin
@Article{ grisworld.notkin:automated,
key = {Grisworld \& Notkin, 1993},
author = {Wiliam Grisworld and David Notkin},
title = {Automated Assistance for Program Restructuring},
journal = { ACM Transactions on Software Engineering and
Methodology},
year = {1993},
volume = {2},
number = {3},
pages = {228-269},
month = jul,
abstract = {Maintenance tends to degrade the structure of software,
ultimately making maintenance more costly. At times, then,
it is worthwhile to manipulate the structure of a system to
make changes easier. However, manual restructuring is an
error-prone and expensive activity. By separating
structural manipulation from other maintenance activities,
the semantics of a system can be held constant by a tool,
assuring that no errors are introduced by restructuring. To
allow the maintenance team to focus on the aspects of
restructuring and maintenance requiring human judgment, a
transformation-based can be provided - based on a model
that exploits preserving data flow dependence and control
flow dependence - to automate the repetitive, error-prone,
and computationally demanding aspects of restructuring. A
set of automatable transformations is introduced; their
impact on structure is desribed, and their usefulness is
demonstrated in examples. A model to aid building
meaning-preserving restructuring transformations is
described, and its realization in a functioning prototype
tool for restructuring Scheme programs is discussed.},
class = {Alteration, Re-Code, Source-to-Source-Translation}
}
Program Concept Recognition and Transformation, Wojtek Kozaczynski and Jim Q. Ning and Andre Engberts
@Article{ kozaczynski.ning.ea:program,
key = {Kozaczynski et al.},
author = {Wojtek Kozaczynski and Jim Q. Ning and Andre Engberts},
title = {Program Concept Recognition and Transformation},
journal = {IEEE Transactions on Software Engineering},
pages = {1065--1075},
volume = {18},
number = {12},
month = dec,
year = {1992},
note = { An approach to automated concept recognition and its
application to maintenance-related program transformations
is described. An interesting point here is that
transformation of code can be expressed as transformation
of abstract concepts},
abstract = {Syntactically, a computer program is a sequence of
characters. Semantically, however, it contains abstract
high-level conceptual information or concepts. The
automated recognition of these concepts can greatly aid the
understanding of programs and therefore support many
software maintenance and reengineering activities. This
paper describes an approach to automated concept
recognition and its application to maintenance-related
program transformations. A unique characteristic of this
approach is that transformations of code can be expressed
as transformations of abstract concepts. This significantly
elevates the level of transformation specifications.},
location = {CMU E \&{} S Library},
class = {Alteration, Re-Code, Source-to-Source-Translation}
}
Implications of automatic restructuring COBOL, J. Miller and B. Straus III
@Article{ miller.straus:implications,
title = {Implications of automatic restructuring COBOL},
author = {J. Miller and B. Straus III},
journal = {{ACM} Sigplan Notices},
volume = {22},
number = {6},
pages = {76--82},
year = {1987},
note = { The question whether or not mechanical transformations of
unstructured program code to a structured equivalent can
provide an improvement in the understanding of that program
is addressed. As an example the language COBOL is examined.
The paper also discusses a tool (called Structured
Retrofit) that performs such transformations for COBOL
mechanically},
class = {Alteration, Re-Code, Control_Flow_Normalization,
Program_Transformations }
}
Unraveling unstructured programs, G. Oulsnam
@Article{ oulsnam:unraveling,
title = {Unraveling unstructured programs},
author = {G. Oulsnam},
journal = {The Computer Journal},
volume = {25},
number = {3},
pages = {379--387},
year = {1982},
note = { A method for transforming unstructured program flowcharts
into structured ones is presented. The form of the derived
structured programs is such that the original unstructured
programs can be easily recovered, thus revealing what
overheads in space and time are inherent in the structured
forms},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
Program Transformation Systems, A. Partsch and R. Steinbruggen
@Article{ partsch.steinbruggen:program,
author = {A. Partsch and R. Steinbruggen},
title = {Program Transformation Systems},
journal = {Computing Surveys},
year = {1983},
volume = {15},
number = {10},
month = sep,
pages = {199-236},
class = {Alteration, Re-Code, Source-to-Source-Translation}
}
Eliminating non-traversable paths from structured programs, M. Pleszkoch and R. Linger and A. Hevner
@InProceedings{ pleszkoch.linger.ea:eliminating,
title = {Eliminating non-traversable paths from structured
programs},
author = {M. Pleszkoch and R. Linger and A. Hevner},
pages = {156--164},
booktitle = {\cite{SM92}},
year = {1992},
note = { Considers the problem of control variables (i.e., ranging
over the Booleans or some small enumeration type) that
obscure the structure of otherwise structured programs.
Control flow is represented by regular expressions which
are further processed (subset construction) to find a
version of the program without redundant control paths},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
Eliminating goto's while preserving program structure, L. Ramshaw
@Article{ ramshaw:eliminating,
title = {Eliminating goto's while preserving program structure},
author = {L. Ramshaw},
journal = {Journal of the {ACM}},
volume = {35},
number = {4},
pages = {893-920},
year = {1988},
note = { A method is described to eliminate GO-TO statements from
a program while the program's original structure is being
preserved},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
The Realities of Language Conversions, Andrey A.Terekhov and Chris Verhoef
Available as
s6.pdf.
@Article{ terekhov.verhoef:realities,
author = {Andrey A.Terekhov and Chris Verhoef},
title = {The Realities of Language Conversions},
journal = {IEEE Software},
year = {2000},
volume = {17},
number = {6},
pages = {111-124},
month = {November/December},
url = {http://www.cs.vu.nl/~x/cnv/s6.pdf},
abstract = {Billions of lines of code that have been written in Cobol,
PL/I, and other old programming languages are still in
active use. Many commercial efforts to convert these to
more modern languages have begun, but few have succeeded.
These authors discuss the nuts and bolts of conversion
between several pairs of languages and some of the
possibilities and limitations of automating language
conversion. },
keywords = {source-to-source translation, language conversion, COBOL},
class = {Re-Code Source-to-Source-Translatio
Program_Transformations Alteration }
}
Automating Language Conversion: a Case Study, Andrey A.Terekhov
Available as
AutomatingLanguageConversion.pdf.
@InProceedings{ terekhov:automating,
author = {Andrey A.Terekhov},
title = {Automating Language Conversion: a Case Study},
booktitle = {IEEE International Conference on Software Maintenance},
publisher = {IEEE Computer Society Press},
year = {2001},
pages = {654-658},
month = {November},
url = {http://users.tepkom.ru/ddt/Articles/AutomatingLanguageConversion.pdf}
,
abstract = {Language conversion is a laborious process. Achieving the
maximum efficiency of conversion without compromising the
quality of converted system is the programmers' dream. This
paper illustrates the quest for this trade-off by a case
study. We consider an industrial reengineering project,
which included translation of a client/server system
written in a proprietary language into two different
programming languages. We also discuss various factors that
affect the automation level of language conversions. },
keywords = {language conversion, automation },
note = {There's also an extended version of this paper; it is
available on the Web at
http://users.tepkom.ru/ddt/alc.pdf},
class = {Reengineering_in_General Re-Code
Source-to-Source-Translatio
The_Pros_and_Cons_and_Risks_of_Reengineering
Program_Transformations Alteration Experiences }
}
The automatic restructuring of programs, G. Urschler
@Article{ urschler:automatic,
title = {The automatic restructuring of programs},
author = {G. Urschler},
journal = {{IBM} Journal of Research and Development},
volume = {19},
pages = {181--194},
year = {1975},
note = { A method is described that allows the translation of an
unstructured program into a set of top-down structured,
semantically founded, go-to-free modules. This method leads
to a certain amount of code replication},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
A practical program transformation system for reverse engineering, M. Ward and K. Bennett
@InProceedings{ ward.bennett:practical,
author = {M. Ward and K. Bennett},
title = {A practical program transformation system for reverse
engineering},
booktitle = {Proceedings of the 1st Working Conference on Reverse
Engineering },
pages = {212--221},
year = {1993},
note = { Uses program transformation techniques as a basis for
reverse engineering. Source files are first translated into
WSL (wide-spectrum language). By means of a large
collection of WSL transformation and user guidance, the WSL
program is simplified. Next it can be translated back into
the original source language or into the specification
language Z. The process is supported by the ReForm tool
which contains parsers for IBM assembly language and for a
Basic subset. Also see~\cite{BBY92}},
class = {Alteration, Re-Code, Source_Code_Transformations}
}
Program Translation via Abstraction and Reimplementation, R. C. Waters
@Article{ waters:program,
key = {Waters},
author = {R. C. Waters},
title = {Program Translation via Abstraction and Reimplementation},
journal = {IEEE Transactions on Software Engineering},
pages = {1207--1228},
volume = {14},
number = {8},
month = aug,
year = {1988},
abstract = {Essentially all program tranlators (both source-to-source
translators and compilers) operate via transliteration and
refinement. The source program is first tranliterated into
the target language on a statement-by-statement basis.
Various refinements are then applied in order to improve
the quality of the output. Although acceptable in many
situations, this approach is fundamentally limited in the
quality of the output it can produce. In particular, it
tends to be insufficiently sensitive to global features of
the source program and too sensitive to irrelavant local
details.
This paper presents an alternate translation paradigm -
abstraction and reimplementation. Using this paradigm, the
source program is first analyzed in order to obtain a
programming-language-independent understanding of the
computation performed by the program as a whole. The
program is then reimplemented in the target language based
on this understanding. The key to this approach is the
abstract understanding obtained. It allows the translator
to see the forest for the trees, benefiting from an
appreciation of the global features of the source program
without being distracted by irrelevant details.
Translation via abstraction and reimplemenation is one of
the goals of the Programmer's Aprprentice project. A
translator which translates Cobol programs into Hibol (a
very-high-level business data processing language) has been
constructed. A compiler which generates extremly efficient
PDP-11 object code for Pascal programs has been designed.
Currently, work is proceeding toward the implementation of
a general-purpose, knowledge-based translator.},
location = {CMU E\&{}S Library},
class = {Alteration, Re-Code, Source-to-Source-Translation,
Software_Reverse_Engineering, Reverse_Design,
Knowledge-Based_Concept_Assignment,
Program_Plan_Assignment_by_Parsing},
note = { The translation paradigm of abstraction and
reimplementation, which is one of the goals of the
Programmer's Apprentice project \cite{RiWa90} is presented.
A translator has been constructed which translates Cobol
programs into Hibol (a very high level, business data
processing language)}
}
Conversion of unstructured flow diagrams into structured form, M. Williams and H. Ossher
@Article{ williams.ossher:conversion,
title = {Conversion of unstructured flow diagrams into structured
form},
author = {M. Williams and H. Ossher},
journal = {The Computer Journal},
volume = {21},
number = {2},
pages = {161--167},
year = {1978},
note = { Various already proposed methods to convert unstructured
flow diagrams into equivalent structured ones are
discussed. Moreover a general method for performing such
conversions is discussed},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}
Supercompilers for Parallel and vector Computers, H. Zima and B. Chapman
@Book{ zima.chapman:supercompilers,
author = {H. Zima and B. Chapman},
title = {Supercompilers for Parallel and vector Computers},
publisher = {Addison-Wesley},
year = {1991},
series = {ACM Frontier Series},
abstract = {This book contains (beside other topics) a description how
to discover loops in programs with gotos and how to
tranform those structures into while or repeat loops.},
contents = {Wolfgang Gellerich: Gute Darstellung wie man in
GOTO-Programmen Schleifen findet und sie gegen WHILE- oder
REPEAT-Schleifen ersetzt.},
class = {Alteration, Re-Code, Control_Flow_Normalization}
}