Attributed Graph-Based Representations for Software View Generation and Impact-of-Change Analysis, Ratib H. Al-Zoubi
@PhDThesis{ al-zoubi:attributed,
author = {Ratib H. Al-Zoubi},
title = {Attributed Graph-Based Representations for Software View
Generation and Impact-of-Change Analysis},
school = {The University of Michigan},
year = {1992},
abstract = {Great ref. on change analysis; mostly PITS. Good related
work info. Tool is called SCAN.},
class = {Alteration, Change_Impact,Software_Reverse_Engineering,
Reverse_Design, Fundamental_Methods_in_Reverse_Design,
Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
Program Understanding and Maintenance with the CANTO environment, G. Antoniol and R. Fiutem and G. Lutteri and P. Tonella and S. Zanfei
@Unpublished{ antoniol.fiutem.ea:program,
author = {G. Antoniol and R. Fiutem and G. Lutteri and P. Tonella
and S. Zanfei},
title = {Program Understanding and Maintenance with the CANTO
environment},
year = {1998},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs,
Fundamental_Methods_in_Reverse_Design, Static_Analysis,
Static_Data_Flow_Analysis,
Recovery_of_Software_Architecture}
}
TMM: Software Maintenance by Transformation, Guillermo Arango and Ira Baxter and Peter Freeman and Christopher Pidgeon
@Article{ arango.baxter.ea:tmm,
author = {Guillermo Arango and Ira Baxter and Peter Freeman and
Christopher Pidgeon},
title = {TMM: Software Maintenance by Transformation},
journal = {IEEE Software},
year = {1986},
pages = {27-38},
month = may,
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
Toward a Framework for Conceptual and Formal Outlines of Programs, F. Balmas
Available as
.
@InProceedings{ balmas:toward,
author = {F. Balmas},
title = {Toward a Framework for Conceptual and Formal Outlines of
Programs},
booktitle = {Fourth Working Conference on Reverse Engineering},
publisher = {IEEE Computer Society },
year = {1997},
pages = {226 - 235},
address = {Amsterdam, The Netherlands},
month = {October},
url = {http://www.ai.univ-paris8.fr/~fb/},
abstract = {In this paper, we propose to re-document programs with
outlines. The interest of outlines is that they allow to
contract, as in a zoom, the amount of information necessary
to understand programs, easing walking through them to
localize given computations or to identify the role of a
piece of code. As a first stage toward a framework of
program outlines, we have defined a model suited to the
representation of computations performed within loops. The
main feature of our outlines is that they are both formal
and conceptual: they are represented within frames which
are semantically equivalent to the outlined loops and help
understanding what is computed by revealing how this is
computed. In order to re-document loops, we implemented a
system, PRISME, able to automatically construct outlines of
a subset of Lisp looping functions. PRISME allowed us to
validate the implementation of our model. Currently, we use
it intensively to experiment the role of outlines for
debugging and reverse specification of programs. },
keywords = {re-documentation, program representation, outlines},
class = {Knowledge-Based_Concept_Assignment
Software_Reverse_Engineering Others Reverse_Design
Functional_Abstraction
Fundamental_Methods_in_Reverse_Design
Program_Plan_Assignment_by_Parsing
Intermediate_Representations_of_Source_Code }
}
Observed idiosyncracies of relational database designs, michael blaha and william premerlani
@InProceedings{ blaha.premerlani:observed,
author = {michael blaha and william premerlani},
title = {Observed idiosyncracies of relational database designs},
booktitle = {Second Working Conference on Reverse Engineering},
publisher = {IEEE},
year = {1995},
abstract = {Several processes have been advanced in the literature for
reverse engineering of relational databases. The inputs to
these processes are relational tables and available
contextual information. The output is a model of the
underlying logical intent, apart from the implementation
artifacts. Most of the existing processes for database
reverse engineering are inadequate; they assume too high a
quality of input information. The authros of these
processes are skilled database designers and they are
overly optimistic about the state-of-the-art, as practiced.
This paper catalogs odd aspects of relational database
designs that we have encountered over the past several
years. many of these database designs are from commercial
software products.},
keywords = {reverse engineering, database, model},
class = {Software_Reverse_Engineering Use_of_data_bases
Intermediate_Representations_of_Source_Code }
}
Core Technologies for System Renovation, Mark van den Brand and Paul Klint and Chris Verhoef
@Unpublished{ brand.klint.ea:core,
author = {Mark van den Brand and Paul Klint and Chris Verhoef},
title = {Core Technologies for System Renovation},
key = {system renovation, intermediate data representation,
coordination language, query algebra},
year = {1999},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
A Logic Based Approach to Reverse Engineering Tools Production, G. Canfora and Aniello Cimitile and De Carlini, Ugo
@InProceedings{ canfora.cimitile.ea:logic,
author = {G. Canfora and Aniello Cimitile and De Carlini, Ugo},
title = {A Logic Based Approach to Reverse Engineering Tools
Production},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1991},
year = {1991},
pages = {83-91},
organization = {IEEE},
publisher = {IEEE Computer Society Press},
abstract = {This paper analyzes some of the reasons for difficulties
arising in the use of design documents produced by Reverse
Engineering tools. With reference to intermodule data flow
analysis for Pascal software systems, an interactive tool
is proposed to more effectively help the maintainer. The
tool is based on: (i) the production of intermodule data
flow information by static analysis of the code; (ii) their
representation in a Prolog program dictionary; (iii) a
Prolog abstractor that allows specific queries of
maintainers to be answered. },
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
A Logic-Based Approach to Reverse Engineering Tools Production, G. Canfora and Aniello Cimitile and G. de Carlini
@Article{ canfora.cimitile.ea:logic-based,
key = {Canfora et al.},
author = {G. Canfora and Aniello Cimitile and G. de Carlini},
title = {A Logic-Based Approach to Reverse Engineering Tools
Production},
year = {1992},
journal = {IEEE Transactions on Software Engineering},
pages = {1053--1064},
volume = {18},
number = {12},
month = dec,
abstract = {This paper analyzes difficulties arising in the use of
documents produces by Reverse Engineering tools. With
reference to inter-modula data flow analysis for Pascal
software systems, an interactive and evolutionary is
proposed. The tool is based on: i) the production of
inter-modular data flow information by static analysis of
code; ii) its representaton in a Prolog program dictionary;
iii) a Prolog abstractor that allows the specific queries
to be answered.},
location = {CMU E \&{} S Library},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Software_Reverse_Engineering, Reverse_Design,
Fundamental_Methods_in_Reverse_Design, Static_Analysis,
Static_Data_Flow_Analysis}
}
Reverse Engineering: Algorithms for Program Graph Production, Aniello Cimitile and Ugo De Carlini
@Article{ cimitile.carlini:reverse,
author = {Aniello Cimitile and Ugo De Carlini},
title = {Reverse Engineering: Algorithms for Program Graph
Production},
journal = {Software---Practice and Experience, Wiley},
year = {1991},
volume = {21},
number = {5},
pages = {519-537},
abstract = {The paper proposes an algebraic representation of program
modules, called F(p), and illustrates the algorithms that
use F(p) to generate program graph models for measurement,
documentation and testing activities. The representation
refers to procedural languages, D-structured programs and
one-in/one-out modules but its definition can be extended
to programs structured in terms of an arbitrary set of
one-in/one-out legal control structures. Since it is
possible to produce F(p) directly from the program code
using reverse engineering techniques, the algorithms
proposed are of considerable interest for the setting up of
tools supporting the program comprehension phase, which is
a fundamental first step in any maintenance operation.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
Analysis of Object-Oriented Programs Using Graphs, Oliver Ciupke
@InProceedings{ ciupke:analysis,
author = {Oliver Ciupke},
title = {Analysis of Object-Oriented Programs Using Graphs},
booktitle = {Object-Oriented Technology -- Ecoop'97 Workshop Reader},
editor = {Jan Bosch and Stuart Mitchell},
publisher = {Springer-Verlag},
series = {Lecture Notes in Computer Science},
pages = {270--271},
volume = {1357},
month = mar,
year = {1997},
address = {Jyv{\"a}skyl{\"a}, Finnland},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
Documentation and Module Capture Method (Grouping), Oliver Ciupke
@TechReport{ ciupke:documentation,
author = {Oliver Ciupke},
title = {Documentation and Module Capture Method (Grouping)},
institution = {Forschungszentrum Informatik},
year = {1997},
type = {FAMOOS Achievement Report},
number = {A 2.3.1},
month = oct,
id = {docum-a231, ar231fzi},
path = {/fzi/prost/Projects/FAMOOS/doc/achievements/impctut-a271},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Abstraction}
}
Grouping, Oliver Ciupke
@InProceedings{ ciupke:grouping,
author = {Oliver Ciupke},
title = {Grouping},
booktitle = {ESEC/FSE'97 Workshop on Object-Oriented Reengineering},
year = {1997},
address = {Z{\"u}rich, Switzerland},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Abstraction}
}
Refined Grouping, Oliver Ciupke
@TechReport{ ciupke:refined,
author = {Oliver Ciupke},
title = {Refined Grouping},
institution = {Forschungszentrum Informatik},
year = {1999},
type = {FAMOOS Achievement Report},
number = {A 2.5.2},
month = may,
id = {ar252fzi},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Abstraction}
}
The Representation Problem in Reverse Engineering, Richard Clayton and Spencer Rugaber
@InProceedings{ clayton.rugaber:representation,
author = {Richard Clayton and Spencer Rugaber},
title = {The Representation Problem in Reverse Engineering},
booktitle = {Proceedings of the First Working Conference on Reverse
Engineering},
address = {Baltimore, Maryland},
year = {1993},
month = may,
abstract = {Building models to understand software systems is an
important part of reverse engineering. Formal and explicit
model building is important because it focuses attention on
modeling as an aid to understanding and results in
artifacts that may be useful to others. The representation
used to build models has great influence over the success
and value of the result. Choosing the proper representation
during reverse engineering is the representation problem.
This paper examines the representation problem by
presenting a taxonomy of solutions. It also illustrates the
issues involved in choosing a represenation through an
example reverse engineering task.},
ftp = {ftp.cc.gatech.edu//pub/groups/reverse/repository/repr.ps},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code}
}
The Application of Deductive Databases to Inter-Module Code Analysis, Suzanne W. Dietrich and Frank W. Calliss
@InProceedings{ dietrich.calliss:application,
author = {Suzanne W. Dietrich and Frank W. Calliss},
title = {The Application of Deductive Databases to Inter-Module
Code Analysis},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1991},
year = {1991},
pages = {120-128},
organization = {IEEE},
publisher = {IEEE Computer Society Press},
abstract = {Inter-module code analysis is a process by which a
programmer can alalyse a program consisting of a collection
of interconnected modules. A deductive database is
presented that records the information needed for
inter-module code analysis. The application of a deductive
database to this domain utilises the rule capability for
data structuring and facilitates the declarative
specification of recursive operations. This deductive
database was derived from a conceptual schema, which
describes the dependencies that exist in a program. A
method for mapping a conceptual schema to a deductive
database framework is outlined. An example query is used to
show how this database can be used for inter-module code
analysis. },
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
Application and Experimental Evaluation of State Space Reduction Methods for Deadlock Analysis in Ada, S. Duri and U. Buy and R. Devarapalli and S. M. Shatz
@Article{ duri.buy.ea:application,
key = {Duri et al., 1994},
author = {S. Duri and U. Buy and R. Devarapalli and S. M. Shatz},
title = {Application and Experimental Evaluation of State Space
Reduction Methods for Deadlock Analysis in Ada},
journal = { ACM Transactions on Software Engineering and
Methodology},
year = {1994},
volume = {3},
number = {4},
pages = {340-380},
month = oct,
abstract = {An emerging challenge for software engineering is the
development of methods and tools to aid design and analysis
of concurrent and distributed software. Over the past few
years, a number of analysis methods that focus on Ada
tasking have been developed. Many of these methods are
based on some form of reachability analysis, which has the
advantage of being conceptually simple, but the
disadvantage of being computationally expensive. We explore
the effectiveness of various Petri net-based techniques for
the automated deadlock analysis of Ada programs. Our
experiments consider a variety of state space reduction
methods both individually and in various combinations. The
experiments are applied to a number of classical concurrent
programs as well as a set of ''real-world''-programs. The
results indicate that Petri net reduction and reduced state
space generation are mutually beneficial techniques, and
that combined approaches based on Petri net models are
quite effective, compared to alternative analysis
approaches.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code}
}
Wartungsunterstützung in heterogenen Sprachumgebungen, Ein Überblick zum Projekt GUPRO, J. Ebert and R. Gimnich and A. Winter
Available as
compressed postscript.
@InCollection{ ebert.gimnich.ea:wartungsunterstützung,
author = {J. Ebert and R. Gimnich and A. Winter},
title = {Wartungsunterstützung in heterogenen Sprachumgebungen, Ein
Überblick zum Projekt GUPRO},
booktitle = {Softwarewartung und Reengineering - Erfahrungen und
Entwicklungen},
publisher = {Gabler},
year = {1996},
editor = {F. Lehner},
pages = {263-275},
address = {Wiesbaden},
url = {http://www.uni-koblenz.de/~ist/retrieve/GUPRO.Regensburg.ps.gz}
,
abstract = {Wirtschaftliche Wartung und Weiterentwicklung von
Anwendungssoftware setzt ein grundsätzliches Verstehen
vorhandener Quelltexte voraus. Diese sind oft wenig
strukturiert, schwach kommentiert und in unterschiedlichen
Umgebungen entstanden. Im Projekt GUPRO - Eine Generische
Umgebung zum Programmverstehen - wird ein
benutzerkonfigurierbarer Generator zur Erzeugung
sprachübergreifender Programmverstehenswerkzeuge
entwickelt, die das Nachvollziehen und Verstehen auch
heterogener Software beliebiger Sprachen
(Programmiersprachen, Anfragesprachen, Sprachen der "4.
Generation") unterstützen. Hierzu dienen Anfrage- und
Browsing-Werkzeuge, die über eine gemeinsame, graphbasierte
Datenstruktur integriert sind.},
keywords = {metacare, program understanding},
class = {Software_Reverse_Engineering Using_graphs
Source_Code_Queries Reverse_Design
Fundamental_Methods_in_Reverse_Design
Intermediate_Representations_of_Source_Code Static_Analysis
}
}
A Generic System to Support Multi-Level Understanding of Heterogeneous Software, J. Ebert and M. Kamp and A. Winter
Available as
postscript.
@TechReport{ ebert.kamp.ea:generic,
author = {J. Ebert and M. Kamp and A. Winter},
title = {A Generic System to Support Multi-Level Understanding of
Heterogeneous Software},
organization = {Universität Koblenz-Landau, Institut für Informatik},
year = {1997},
type = {Fachbericht Informatik},
number = {6/97},
address = {Koblenz},
url = {http://www.uni-koblenz.de/fb4/publikationen/gelbereihe/RR-6-97.ps}
,
abstract = {This paper presents the ideas and the implementation of a
generic support system for understanding heterogenous
software. GUPRO provides a seamless approach for modeling,
representing and analysing software. The focus of GUPRO is
its adaptability to (almost) arbitrary kinds of source
text. Software of different programming and description
languages can be represented uniformly by a homogeneous
internal representation any level of granularity. The
relevant concepts of the software are described by the
maintenance engineer with regard to his or her current
program understanding task in a concept model using
EER-like graphical language. Then parsers are generated to
transform source code into a TGraph representation which is
an instance of the model. A parser description language has
been developed which supports graph creation according to a
concept model. A source language independent query language
allows the computation of arbitrary reports on the software
graphs. The properties of graphs can be used for easily
querying even complex structural relationships between
instances of the modeled software concepts. The components
of the system are integrated in a framework architecture
under a common graphical user interface.},
keywords = {metacare, program understanding, GUPRO},
class = {Software_Reverse_Engineering Using_graphs
Source_Code_Queries Reverse_Design
Fundamental_Methods_in_Reverse_Design
Intermediate_Representations_of_Source_Code Static_Analysis
}
}
Using Automatic Program Decomposition Techniques in Software Maintenance Tools, Rajeev Gopal and Stephan R. Schach
@InProceedings{ gopal.schach:using,
author = {Rajeev Gopal and Stephan R. Schach},
title = {Using Automatic Program Decomposition Techniques in
Software Maintenance Tools},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1989},
year = {1989},
pages = {132-141},
organization = {IEEE},
publisher = {IEEE Computer Society Press},
abstract = {Program decomposition can assist maintenance programmers
in all three phses of maintenance, namely comprehension,
modification and debugging. Visibility flow graphs are
introduced to represent the information about the static
semantics of a program. Using static analysis of programs,
it is possible to approximate their dynamic behaviour. More
precise analysis is possible if the program is monitored
during its execution. For dynamic semantics, dependence
relations are used that reflect the dependency of
statements on the input value of variables and of the
output value of variables on the statements. These
relations are generated both at static analysis time, and
also during program execution. Some sample sessions with a
prototype program analyzer for a subset of Ada are also
included.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs,
Reverse_Design, Fundamental_Methods_in_Reverse_Design,
Static_Analysis, Static_Data_Flow_Analysis,
Dyanmic_Analysis, Dynamic_Data_Flow_Analysis}
}
A Unified Interprocedural Program Representation for a Maintenance Environment, Mary Jean Harrold and Brian A. Malloy
@InProceedings{ harrold.malloy:unified,
author = {Mary Jean Harrold and Brian A. Malloy},
title = {A Unified Interprocedural Program Representation for a
Maintenance Environment},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1991},
year = {1991},
pages = {138-147},
organization = {IEEE},
publisher = {IEEE Computer Society Press},
abstract = {Modifying and then validating a program with many
interacting modules, such as procedures, is an expensive
and complesx task. Thus, a maintenance environment
containing an efficient program representation and tools
that access that representation to assist the user in
understanding, modifying, analyzing, testing and debugging
a program is needed, This paper presents the authors'
unified interprocedural graph, UIG, that combines the
features of existing program representations to permit
access to information for maintenance tasks. The main
benefit of this approach is the reduction in storage space
for the individual representations since redundant
information is eliminated. Another important benefits is
the savings in access time to the various graphs since all
algorithms access the UIG. A single program representation
also assists in program understanding since relationships
among program elements are incorporated inte one graph.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
A Unified Interprocedural Program Representation for a Maintenance Environment, M. J. Harrold and Brian A. Malloy
@Article{ harrold.malloy:unified*1,
key = {Harrold \&{} Malloy},
author = {M. J. Harrold and Brian A. Malloy},
title = {A Unified Interprocedural Program Representation for a
Maintenance Environment},
journal = {IEEE Transactions on Software Engineering},
pages = {584--593},
volume = {19},
number = {6},
month = jun,
year = {1993},
location = {CMU E \&{} S Library},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
Managing Uncertainty and Inconsistency in Database Reengineering Processes, Jens-Holger Jahnke
Available as .
@PhDThesis{ jahnke:managing,
author = {Jens-Holger Jahnke},
title = {Managing Uncertainty and Inconsistency in Database
Reengineering Processes},
school = {University of Paderborn, Department of Mathematics and
Computer Science},
year = {1999},
address = {33095 Paderborn, Germany},
month = {August},
abstract = {This dissertation tackles one of the most urgent problems
in today's information technology, namely the renovation
and migration of legacy information systems to modern
platforms and net-centric architectures. In this context,
several methods, tools, and processes have been proposed to
support reengineering and modernizations of legacy database
applications. This can be a complex task because many
legacy databases have grown over several generations of
programmers and lack a sufficient documentation.
Computer-aided reengineering methods and processes have a
great potential to reduce the complexity and risks involved
in database design recovery and migration projects. Still,
current reengineering tools are hardly adopted for
practical problems in industry because they often make
idealistic assumptions about the structure of legacy
systems and the characteristics of reengineering processes.
The goal of this thesis is to provide concepts and
techniques to overcome these severe limitations. In
particular, our focus is on developing mechanisms to manage
uncertainty and inconsistency in computer-aided databases
reengineering processes. In practice, uncertain knowledge
plays an important role in activities aiming to recover
conceptual design documents for large idiosyncratic
implementation structures. This fact is neglected in
current database reengineering methods and tools. In this
dissertation, we identify and extend a theory that provides
a suitable basis to deal with uncertain reengineering
knowledge and allows to implement practical tools and
environments to support reengineering processes. The
requirement for consistency management considers the fact
that it is unrealistic to presume that database
reengineering processes can be executed in a number of
sequential phases or steps without iterations. In practice,
larger reengineering projects comprise many process
iterations due to various reasons like incomplete knowledge
about legacy implementation structures or necessary
"on-the-fly" modifications of the legacy system. Detecting
and removing inconsistencies caused by such iterations
significantly increase costs and durations of current
reengineering projects. In this thesis, we employ graph
transformation theory to develop mechanisms which allow to
detect and eliminate inconsistencies between legacy schema
implementations and their abstract representation,
automatically. Our results have been implemented in the
database reengineering environment Varlet and evaluated
with an industrial project. They are suitable to complement
many existing approaches in the domain of information
system reengineering and migration. As an example, we
describe the integration of Varlet with an existing
middleware product for data integration.},
class = {Using_graphs Database_Migration Re-Design
Data_Reverse_Engineering Alteration
Software_Reverse_Engineering
Intermediate_Representations_of_Source_Code },
url = {http://www.csr.uvic.ca/~jens/Docs/thesis.pdf}
}
An Object-Oriented Integrated Software Analysis and Maintenance, M. A. Ketabchi
@InProceedings{ ketabchi:object-oriented,
author = {M. A. Ketabchi},
title = {An Object-Oriented Integrated Software Analysis and
Maintenance},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1990},
year = {1990},
pages = {60-62},
organization = {IEEE},
publisher = {IEEE Computer Society Press},
abstract = {Software systems like most engineering artifacts are
assemblies which have multiple aspects such as structure
and funtionality. An integrated software analysis and
maintenance system should provide functionalities to
define, analyze, manipulate, and maintain descriptions of
different software aspects and components and relationships
among them.
The authors have developed a multiuser integrated software
analysis and maintenance system called SAMS on top of an
object-oriented DBMS. SAMS models the description of the
various aspects of software systems by persistent object
types and implements different software tools by operations
of objects. Software systems which are maintained using
SAMS are represented by objects instances.
SAMS tightly integrates various software analysis and
maintenance functions such as cross referencing,
annotating, and configuration management around an
automatically generated object-oriented software database
system. Its high-level user interface delivers various
analysis and maintenance functions to end-users, without
exposing its internals and implementation characteristitcs.
Its tool set allows existing software to be loaded into the
database automaticaly. SAMS' database schema contains
approximately 400 classes with thousands of attributes and
methods.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
Understanding C Programs Using the Combined C Graph Representation, David A. Kinloch and Malcolm Munro
@InProceedings{ kinloch.munro:understanding,
key = {Kinloch \& Munro, 1994},
author = {David A. Kinloch and Malcolm Munro},
title = {Understanding C Programs Using the Combined C Graph
Representation},
pages = {172-180},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1994},
year = {1994},
publisher = {IEEE Computer Society Press},
month = sep,
abstract = {The process of program comprehension is often aided by the
use of static analysis tools to provide a maintainer with
different views of the code. Each view however often
requires a different intermediate program representation,
leading to redundancies and repetition of information. A
solution is to develop a single intermediate representation
which contains sufficient information to construct each
program view.
This paper describes the Combined C Graph (CCG), a
fine-grained intermediate representation for programs
written in the C language from which program slices, call
graph, flow-sensitive data flow, definition-use and control
dependence views can be easily constructed. The CCG allows
the representation of embedded side effects and control
flows and value-returning functions with value parameters.
The effect of pointer parameters are also modelled.
Construction of the CCG makes use of the PERPLEX C analysis
tool which produces a generic Prolog fact base
representation of the source code. Existing data flow
analysis techniques are extended to allow the computation
of flow-sensitive data flow analysis information.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
Querying as an Enabling Technology in Software Reengineering, Bernt Kullbach and Andreas Winter
Available as
csmr99.pdf.
@InProceedings{ kullbach.winter:querying,
author = {Bernt Kullbach and Andreas Winter},
title = {Querying as an Enabling Technology in Software
Reengineering},
booktitle = {Proceedings of the 3rd Euromicro Conference on Software
Maintenance and Reengineering},
publisher = {IEEE Computer Society},
year = {1999},
editor = {C. Verhoef and P. Nesi},
pages = {42--50},
address = {Los Alamitos},
url = {http://www.gupro.de/papers/csmr99.pdf},
abstract = {In this paper it is argued that different kinds of
reengineering technologies can be based on querying.
Several reengineering technologies are presented as being
integrated into a technically oriented reengineering
taxonomy. The usefulness of querying is pointed out with
respect to these reengineering technologies.\par To impose
querying as a base technology in reengineering examples are
given with respect to the EER/GRAL approach to conceptual
modeling and implementation. This approach is presented
together with GReQL as its query part. The different
reengineering technologies are finally reviewed in the
context of the GReQL query facility.},
keywords = {software reengineering, query approach, graph-based
modeling, reengineering technologies},
class = {Software_Reverse_Engineering Using_graphs
Source_Code_Querie Reverse_Design
Fundamental_Methods_in_Reverse_Design
Intermediate_Representations_of_Source_Code Static_Analysis
}
}
A Concept-Oriented Belief Revision Approach to Domain Knowledge Recovery from Source Code, Yang Li and Hongji Yang and William Chu
@Article{ li.yang.ea:concept-oriented,
author = {Yang Li and Hongji Yang and William Chu},
title = {A Concept-Oriented Belief Revision Approach to Domain
Knowledge Recovery from Source Code},
journal = {Journal of Software Maintenance: Research and Practice},
year = {2000},
volume = {12},
number = {6},
abstract = {Domain knowledge is the soul of software systems. After
decades of software development, domain knowledge has
reached a certain degree of saturation. The recovery of
domain knowledge from source code is beneficial to many
software engineering activities, in particular, software
evolution. In the real world, the ambiguous appearance of
domain knowledge embedded in source code constitutes the
biggest barrier to recovering reliable domain knowledge. In
this paper, we introduce an innovative approach to
recovering domain knowledge with enhanced reliability from
source code. In particular, we divide domain knowledge into
inter-connected knowledge slices and match these knowledge
slices against the source code. Each knowledge slice has
its own authenticity evaluation function which takes the
belief of the evidences it needs as input and the
authenticity of the knowledge slice as output. Moreover,
the knowledge slices are arranged to exchange beliefs with
each other through inter-connections, i.e., concepts, so
that a better evaluation of the authenticity of these
knowledge slices can be obtained. The decision on
acknowledging recovered knowledge slices can therefore be
made more easily. Rooted in cognitive science and social
psychology, our approach is also widely applicable to other
knowledge recovery tasks. },
keywords = {domain knowledge recovery, uncertainty reasoning,
cooperative behaviour, semantic network},
note = {It is the first attempt of applying social psychology
theory to the field of knowledge recovery, in particular
design recovery.},
class = {Knowledge-Based_Concept_Assignment Using_graphs
Model_Generating Reverse_Specification
Cognitive_Processes_in_Human_Program_Understanding
Reverse_Design Domain_Analysis
Human_Oriented_Concept_Assignment_by_Informal_Reasonin
Intermediate_Representations_of_Source_Code
Software_Reverse_Engineering }
}
Generating Linkage between Source Code and Evolvable Domain Knowledge for the Ease of Software Evolution, Yang Li and Hongji Yang and William Chu
Available as .
@InProceedings{ li.yang.ea:generating,
author = {Yang Li and Hongji Yang and William Chu},
title = {Generating Linkage between Source Code and Evolvable
Domain Knowledge for the Ease of Software Evolution},
booktitle = {Proceedings of IEEE International Symposium on Principles
of Software Evolution (ISPSE2000)},
publisher = {IEEE Computer Society Press},
year = {2000},
editor = {},
chapter = {},
pages = {},
address = {Kanazawa, Japan},
month = {Nov},
url = {},
abstract = {Business software systems unexceptably need to be evolved
to cater for new/changed requirement coming from market or
adapt to new operating environment. One of the most
significant problems in current software evolution practice
is that software maintainers usually find it quite
difficult to locate the program sections in source code
which need to be modified and to identify the extent to
which the changes in these program sections could affect
the rest of the software system. In this paper, we propose
a knowledge engineering based approach to solving this
problem. In particular, we match a software program with a
pre-defined domain knowledge base in the representation of
simplified semantic network we proposed in order to link
the source program with its domain level interpretation.
The domain knowledge base contains only important domain
knowledge where potential evolutions could occur, which
reduces the size of the knowledge base. Moreover, a domain
oriented program partitioning method is also proposed to
cut a program into self-contained modules with manageable
size. In these ways, the computational complexity involved
in generating the linkage is significantly reduced which
makes this approach applicable. An example shows that
software evolution can be easily carried out as the domain
knowledge it links with evolves. },
keywords = {software evolution, knowledge engineering, program
partitioning, evolvable domain knowledge, semantic
network},
note = {This paper gives engineering-oriented considerations to
link generation between domain knowledge and source code
prior to successful software evolution.},
class = {Software_Evolution Knowledge-Based_Concept_Assignment
Using_graphs Change_Impac
Cognitive_Processes_in_Human_Program_Understanding Metrics
Reverse_Design Re-Design System_Modularization
Recovery_of_Software_Architecture
Metric-Based_Methods_in_Reverse_Design Alteration
Human_Oriented_Concept_Assignment_by_Informal_Reasoning
Intermediate_Representations_of_Source_Code
Software_Reverse_Engineering }
}
Fusing Ambiguous Domain Knowledge Slices in a Reverse Engineering Process, Yang Li and Hongji Yang
Available as .
@InProceedings{ li.yang:fusing,
author = {Yang Li and Hongji Yang},
title = {Fusing Ambiguous Domain Knowledge Slices in a Reverse
Engineering Process},
booktitle = {Proceedings of the 7th Asia-Pacific Software Engineering
Conference (APSEC2000)},
publisher = {IEEE Computer Society Press},
year = {2000},
editor = {},
chapter = {},
pages = {},
address = {Singapore},
month = {Dec},
url = {},
abstract = {Recovering domain knowledge from legacy code plays an
important role in the new information technology era, which
can be of help for program understanding, system evolution
and software reuse. Traditional methods for domain
knowledge recovery from source code did not sufficiently
address the issue of ambiguity handling, in particular, the
propagation of ambiguity among multiple domain knowledge
slices recovered from source code in software reverse
engineering process. In this paper, we present a novel
approach to recovering unambiguous domain knowledge from
legacy code, where isolated ambiguous domain knowledge
slices are ``fused'' together in an iterative ambiguity
propagation process and hence the disambiguity of these
recovered knowledge slices is increased. },
keywords = {reverse engineering, domain knowledge recovery,
co-operative behaviour, belief revision},
note = {This is the first of this kind of work which deals with
the ambiguity involved in recovering large-scale domain
knowledge from source code.},
class = {Automated_Reverse_Design
Knowledge-Based_Concept_Assignment Using_graphs
Model_Generating Reverse_Specification
Cognitive_Processes_in_Human_Program_Understanding
Reverse_Design Domain_Analysis
Recovery_of_Software_Architectur
Metric-Based_Methods_in_Reverse_Design
Human_Oriented_Concept_Assignment_by_Informal_Reasoning
Intermediate_Representations_of_Source_Code
Software_Reverse_Engineering }
}
Program Dependence Analysis, Panos E. Livadas and Prabal K. Roy
@InProceedings{ livadas.roy:program,
author = {Panos E. Livadas and Prabal K. Roy},
title = {Program Dependence Analysis},
pages = {356-365},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1992},
year = {1992},
publisher = {IEEE Computer Society Press},
month = nov,
abstract = {It is generally recognized that one of the reasons that
software maintenance is so costly is that each modification
to a program must take into account the numerous complex
interrelationships in the existing software; an
understanding of program dependences is fundamental to
efficient software change. Such dependences can be of the
following types, data flow, calling, and functional
dependences. Furthermore, as the software community
gradually begins to move toward a more object-oriented
perspective on software development, it will become
increasingly important to be able to 'objectify' existing
software systems. Successful maintenance requires precise
knowledge of the data items in a system, the ways these
items are created and modified, and their relationships
between one another.
In this paper the authors address these two issues. First,
they will discuss three methods of identifying objects the
first two of which were suggested by Liu and Wilde; the
third method is one that is proposed in this paper and is
based on the determination of the receiver of a procedure.
We believe that the latter method is one that is more
natural and precise than the former two. Second, algorithms
that perform precise interprocedural flow-sensitive
dependency analysis, as well as algorithms that identify
'objects', are introduced. Furthermore, the internal
program representation that we emply, the parse-tree-based
system dependence graph (SDG), is briefly discussed.
Finally, a unique tool that we have developed is presented
that accepts a subset of ANSI C (or Pascal) as input and
which implements all algorithms discussed in this paper.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs,
Static_Analysis, Static_Data_Flow_Analysis,
Software_Reverse_Engineering, Re-Use}
}
E-CARES research project: Understanding complex legacy telecommunication systems, André Marburger and Dominikus Herzberg
@InProceedings{ marburger.herzberg:e-cares,
author = {André Marburger and Dominikus Herzberg},
title = {E-CARES research project: Understanding complex legacy
telecommunication systems},
booktitle = {Proceedings of the 5th European Conference on Software
Maintenance},
publisher = {IEEE Computer Society Press},
year = {2001},
editor = {Pedro Sousa and J{\"u}rgen Ebert},
pages = {139-147},
month = {March},
abstract = {There are many reasons for reverse engineering or
re-engineering legacy systems. To date, many approaches
concerning re-engineering of legacy systems have been made.
The majority of these approaches are dealing with systems
in the field of business applications. This paper describes
the work performed for the E-CARES project so far. This
project is concerned with understanding and re-structuring
complex legacy telecommunication systems. In contrast to
business applications embedded systems, e.g.
telecommunication systems, have additional requirements
regarding fault tolerance, reliability, availability, and
response time. We found that these requirements have a
significant impact on the software part of an embedded
system. It has different characteristics concerning
structuring, inter-program communication, etc. Therefore,
an approach is presented that includes usage of "dynamic"
information, multi-level abstraction\slash visualization,
and user interaction to improve the understanding of
telecommunication systems. },
keywords = {reverse engineering, re-engineering, telecommunication
systems},
class = {Using_graph Intermediate_Representations_of_Source_Code
Software_Reverse_Engineering }
}
Storing and retrieving software components: A refinement-based system, A. Mili and R. Mili and R. Mittermeir
@InProceedings{ mili.mili.ea:storing,
author = {A. Mili and R. Mili and R. Mittermeir},
title = {Storing and retrieving software components: {A}
refinement-based system},
pages = {91--102},
booktitle = {Proceedings of the 16th International Conference on
Software Engineering },
year = {1994},
publisher = {IEEE Computer Society Press},
month = may,
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
Representation Issues for Reengineering Interactive Systems, Melody Moore
Available as
Melody.Moore.
@Article{ moore:representation,
author = {Melody Moore},
title = {Representation Issues for Reengineering Interactive
Systems},
journal = {ACM Computing Surveys},
year = {1996},
volume = {28},
number = {4es},
month = {December},
url = {http://www.cc.gatech.edu/fac/Melody.Moore},
keywords = {representation user interface reengineering modeling},
class = {Reengineering_in_General User_Interface_Migration
Software_Reverse_Engineering Model_Generating
Reverse_Specification Re-Design Alteration
Intermediate_Representations_of_Source_Code }
}
Using a relational database for software maintenance: a case study, V\'eronique Narat
@InProceedings{ narat:using,
author = {V\'eronique Narat},
title = {Using a relational database for software maintenance: a
case study},
pages = {244-251},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1993},
year = {1993},
publisher = {IEEE Computer Society Press},
month = sep,
abstract = {This paper describes an approach to storing source code
using a relational database. The goal of this approach was
to assist in the maintenance of source code, especially in
producing cross references documentation.
This paper explains why this approach was chosen and how
the system's architecture was set up. The emphasis in this
paper, however, is places upon the results obtained by
using this system particularly, in terms of volume and
response time.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
Querying Source Code using an Algebraic Query Language, Santanu Paul and Atul Prakash
@InProceedings{ paul.prakash:querying,
author = {Santanu Paul and Atul Prakash},
title = {Querying Source Code using an Algebraic Query Language},
pages = {127-136},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1994},
year = {1994},
publisher = {IEEE Computer Society Press},
month = sep,
abstract = {Querying and analyzing source code interactively is a
critical task in reverse engineering and program
understanding. Current source code query systems lack
sufficient formalism and offer limited query capabilties.
In this paper, the authors introduce the formal framework
of Source Code Algebra (SCA), and outline a source code
query system based on it.
SCA provides a formal data model for source code, an
algebraic expression-based query language, and
opportunities for query optimization. An algebraic model of
source code addresses the issues of conceptual integrity,
expressiv power, and performance of a source code query
system within a unified framework.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code,
Use_of_data_bases}
}
Automatic Graph Drawing and Readability of Diagrams, R. Tamassia and G. Di Battista and C. Batini
@Article{ tamassia.battista.ea:automatic,
author = {R. Tamassia and G. Di Battista and C. Batini},
title = {Automatic Graph Drawing and Readability of Diagrams},
journal = {IEEE Transactions on Systems, Man, and Cybernetics},
year = {1988},
volume = {18},
number = {1},
month = {January/February},
pages = {61-79},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs}
}
Dependence Analysis Tools: Reusable Components for Software Maintenance, Norman Wilde and Ross Huitt and Scott Huitt
@InProceedings{ wilde.huitt.ea:dependence,
author = {Norman Wilde and Ross Huitt and Scott Huitt},
title = {Dependence Analysis Tools: Reusable Components for
Software Maintenance},
booktitle = {Proceedings of the International Conference on Software
Maintenance ~1989},
year = {1989},
pages = {126-131},
organization = {IEEE},
publisher = {IEEE Computer Society Press},
abstract = {Software Maintenance is costly because of the many complex
interrelationships in a large software system; an
understanding of these program dependencies is fundamentral
to efficient software change. This paper describes a
general purpose toolset that is now being developed to
capture and analyze software dependencies. The tools are
designed to serve as reusable components. They may be used
not only to aid programmers directly in understanding
programs but also as a basis from which other specialized
tools can be constructed.
The tools use the concept of a dependency graph as a basic
abstraction to simplify the understanding of software
relationships. Definitional, calling, functional and
data-flow dependencies are analyzed. An external dependency
graph for each function is developed to encapsulate the
effects of function calls.},
class = {Software_Reverse_Engineering,
Intermediate_Representations_of_Source_Code, Using_graphs,
Reverse_Design, Fundamental_Methods_in_Reverse_Design,
Static_Analysis, Static_Data_Flow_Analysis}
}
The Reverse Engineering Notebook, Kenny Wong
@PhDThesis{ wong:reverse,
author = {Kenny Wong},
title = {The Reverse Engineering Notebook},
school = {University of Victoria},
year = {1999},
abstract = {Software must evolve over time or it becomes useless. Much
of software production today is involved not in creating
wholly new code from scratch but in maintaining and
building upon existing code. Much of this code resides in
old legacy software systems.
Unfortunately, these systems are often poorly documented.
Typically, they become more complex and difficult to
understand over time. Thus, there is a need to better
understand existing software systems. An approach toward
this problem would be a first step toward easing changes
and extending the continuous evolution of these systems.
This dissertation addresses the problem by enabling
continuous software understanding. There should be a base
of reverse engineering abstractions that are carried
forward during evolution.
The proposed approach seeks to redocument existing software
structure, capture the analysis decisions made, and support
personal, customizable, and live perspectives of the
software in an online journal called the Reverse
Engineering Notebook.
The premise that software reverse engineering be applied
continuously throughout the lifetime of the software has
major tool design implications. Thus, tool integration,
process, and adoption are key issues for the Notebook. In
particular, data integration requirements, control
integration via pervasive scripting, presentation
integration through the management of views, user roles,
methodology, end user needs, and goal-directed framework
for the Notebook are described.
A major theme of the dissertation is learning from the
successes and failures of studies involving tool
integration and reverse engineering technologies. Case
studies and user experiments helped to evaluate various
aspects of the Notebook approach and provide feedback into
software understanding tool requirements.
},
keywords = {reverse engineering, program understanding, tool
requirements},
class = {Interoperability Reengineering_in_General Using_graphs
Reverse_Engineering_Tools Rig Process_Models
Software_Reverse_Engineering
Intermediate_Representations_of_Source_Code Experiences }
}