Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Theses
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
Program Slicing for Object-Oriented Programming Languages
Christoph Steindl
Johannes Kepler University Linz
Institute for Practical Computer Science
Altenbergerstraße 69, A-4040 Linz
steindl@ssw.uni-linz.ac.at
Abstract
Program slicing is a program analysis technique that reduces
programs to those statements that are relevant for a particular
computation. A slice provides the answer to the question "What
program statements potentially affect the value of variable
v at statement s?" Mark Weiser introduced
program slicing because he made the observation that programmers
have some abstractions about the program in mind during debugging.
When debugging a program one follows the dependences from the
erroneous statement s back to the influencing parts of
the program. These statements may influence s either
because they decide whether s is executed or because
they define a variable that is used by s. Program
slicing computes these dependences automatically and thus
assists the programmer in a lot of error prone tasks, such
as debugging, program integration, software maintenance, testing,
and software quality assurance.
Object-oriented programming languages have attracted
more and more attention during the last years since they allow
one to write programs that are more flexible, reusable and
maintainable. However, the concepts of inheritance, dynamic
binding and polymorphism represent new challenges for static
program analysis.
The result of this thesis is the Oberon Slicing Tool,
a fully operational program slicing tool for the programming
language Oberon-2. It integrates state-of-the-art algorithms
and applies them to a strongly-typed object-oriented programming
language. It extends them to support intermodular slicing of
object-oriented programs. Control and data flow analysis
considers inheritance, dynamic binding and polymorphism,
as well as side-effects of functions, short-circuit evaluation
of Boolean expressions and aliases due to reference parameters
and pointers. The algorithm for alias analysis is fast but
effective by taking into account information about the type of
variables and the place of their declaration. The result of
static program analysis is visualized with active text elements:
hypertext links connect the call sites with the possible call
destinations, parameter information elements indicate the
direction of data flow at calls. Since static program analysis
must make conservative assumptions about actual program executions,
the sets of possible aliases and call destinations due to dynamic
binding are more general then necessary. We visualize these sets
and allow the programmer to restrict them via user interaction.
These restrictions are then used to compute more precise control
and data flow information. In this way, the programmer can limit
the effects of aliases and dynamic binding and bring in his
knowledge about the program into the analysis.
Dissertation in Computer Science at the Johannes Kepler University Linz, Austria, April 1999.
Advisor of this dissertation: Prof. Mössenböck.
Graduation in Computer Science (Dr. techn.): July 1999.
You can view/download the thesis in PostScript and in pdf. If you want to print the thesis, use the PostScript version!
- Title page (2 pages, ps, pdf)
- Acknowledgements, Contents, and Abstract (5 pages, ps, pdf)
- Chapter 1: Introduction (3 pages, ps, pdf)
- Chapter 2: Background Information (26 pages, ps, pdf)
- Chapter 3: Current Slicing Algorithms (15 pages, ps, pdf)
- Chapter 4: Implementation (65 pages, ps, pdf)
- Chapter 5: User Interface (15 pages, ps, pdf)
- Chapter 6: Comparison (4 pages, ps, pdf)
- Chapter 7: Conclusions (3 pages, ps, pdf)
- Chapter 8: Future Work (2 pages, ps, pdf)
- Appendix: Additional Module Definitions (9 pages, ps, pdf)
- Bibliography (6 pages, ps, pdf)
- Curriculum Vitae (1 page, ps, pdf)
- Full thesis (169 pages, ps, pdf, gzip-compressed ps, ps, 2 pages on 1, ps.gz, 2 pages on 1, ps, 4 pages on 1, ps.gz, 4 pages on 1)
|