Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation

26-27 Sept. 2003

Filter Results

Displaying Results 1 - 23 of 23
  • Parse-tree annotations meet re-engineering concerns

    Publication Year: 2003, Page(s):161 - 170
    Cited by:  Papers (7)  |  Patents (3)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (355 KB) | HTML iconHTML

    We characterise a computational model for processing annotated parse trees. The model is basically rewriting-based with specific provisions for dealing with annotations along the ordinary rewrite steps. Most notably, there are progression methods, which define a default for annotating the results of rewriting. There are also access methods, which can be used in the rewrite rules in order to retrie... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Unique renaming of Java using source transformation

    Publication Year: 2003, Page(s):151 - 160
    Cited by:  Papers (3)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (305 KB) | HTML iconHTML

    We present a method for unique renaming declarations and references in Java programs using source transformation to XML markup. Each entity declaration and reference in the Java program is assigned a globally unique identifier (UID) based on its declaration scope and file. The UID serves as a key by which the entity's original declaration and all references can be found, and more importantly, by w... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Turning dynamic typing into static typing by program specialization in a compiler front-end for Octave

    Publication Year: 2003, Page(s):141 - 150
    Cited by:  Papers (6)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (286 KB) | HTML iconHTML

    Array processing languages such as APL, Matlab and Octave rely on dynamic typechecking by the interpreter rather than static typechecking and are designed for user convenience with a syntax close to mathematical notation. Functions and operators are highly overloaded. The price to be paid for this flexibility is computational performance, since the run-time system is responsible for type checking,... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Towards managing environment dependence during legacy systems renovation and maintenance

    Publication Year: 2003, Page(s):131 - 140
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (312 KB) | HTML iconHTML

    Old legacy applications are often too much dependent on enclosing environment so when they are faced with environment changes they require significant efforts for adaptive maintenance or, in some cases, even complete replatforming. We present a generative approach for managing environment dependent code based on XML and XSLT technologies. The main advantage of the approach is that it could be easi... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Applying Meyer's taxonomy to object-oriented software systems

    Publication Year: 2003, Page(s):35 - 44
    Cited by:  Papers (2)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (303 KB) | HTML iconHTML

    Inheritance is one of the core concepts in object-orientation. There has been much discussion and disagreement as to the correct uses of the inheritance mechanism in the literature. The classification of B. Meyer (1996) seems to be the most comprehensive for the identification of appropriate uses of inheritance. While it seems that this taxonomy has been validated by its author, in the design and ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Static slicing of reactive programs

    Publication Year: 2003, Page(s):98 - 107
    Cited by:  Papers (2)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (353 KB) | HTML iconHTML

    We extend the well-known technique of program slicing to synchronous reactive programs like Esterel. Reactive programs are event-oriented and maintain continuous interaction with the environment. The traditional definition of slicing that preserves the values of a program variable at a particular program point is not natural for reactive programs. We have given a new notion of slicing that preserv... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Online cycle detection and difference propagation for pointer analysis

    Publication Year: 2003, Page(s):3 - 12
    Cited by:  Papers (5)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (373 KB) | HTML iconHTML

    We present and evaluate a number of techniques to improve the execution time of interprocedural pointer analysis in the context of large C programs. The analysis is formulated as a graph of set constraints and solved using a worklist algorithm. Indirections lead to new constraints being added during this process. We present a new algorithm for online cycle detection, and a difference propagation t... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Interprocedural static slicing of binary executables

    Publication Year: 2003, Page(s):118 - 127
    Cited by:  Papers (14)  |  Patents (1)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (413 KB) | HTML iconHTML

    Although the slicing of programs written in a high-level language has been widely studied in the literature, very little work has been published on the slicing of binary executable programs. The lack of existing solutions is really hard to understand since the application domain for slicing binaries is similar to that for slicing high-level languages. We present a method for the interprocedural st... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • CPP denotational semantics

    Publication Year: 2003, Page(s):22 - 31
    Cited by:  Papers (3)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (405 KB) | HTML iconHTML

    We show that CPP, the preprocessor of the C language, can be seen as a programming language in which directives are statements, parametrized macros are functions, files are procedures, directories are modules, and command lines are programs. The semantics of CPP can therefore be described using traditional techniques. We describe the semantics of CPP in a denotational style. By contrast with previ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Slicing the SCAM mug: a case study in semantic slicing

    Publication Year: 2003, Page(s):88 - 97
    Cited by:  Papers (3)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (293 KB) | HTML iconHTML

    We describe an improved formalisation of slicing in WSL transformation theory and apply the result to a particularly challenging slicing problem: the SCAM mug (Anon, 2001). We present both syntactic and semantic slices of the mug program and give semantic slices for various generalisations of the program. Although there is no algorithm for constructing a minimal syntactic slice, we show that it is... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Checking program profiles

    Publication Year: 2003, Page(s):193 - 202
    Cited by:  Papers (1)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (302 KB) | HTML iconHTML

    Execution profiles have become increasingly important for guiding code optimization. However, little has been done to develop ways to check automatically that a profile does, in fact, reflect the actual execution behavior of a program. We describe a framework that uses program monitoring techniques in a way that allows the automatic checking of a wide variety of profile data. We also describe our ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Managing multibillion dollar IT budgets using source code analysis

    Publication Year: 2003, Page(s):77 - 78
    Cited by:  Papers (1)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (187 KB) | HTML iconHTML

    We present a quantitative approach for IT portfolio management. This is an approach that CMM level 1 organizations can use to obtain a corporate wide impression of the state of their total IT portfolio, how IT costs spent today project into the budgets of tomorrow, how to assess important risks residing in an IT portfolio, and to explore what-if scenarios for future IT investments. Our quantitativ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • XOgastan: XML-oriented gcc AST analysis and transformations

    Publication Year: 2003, Page(s):173 - 182
    Cited by:  Papers (6)  |  Patents (1)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (409 KB) | HTML iconHTML

    Software maintenance, program analysis and transformation tools almost always rely on static source code analysis as the first and fundamental step to gather information. In the past, two different strategies have been adopted to develop tool suites. There are tools encompassing or implementing the source parse step, where the parser is internal to the toolkit, developed and maintained with it. A ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Power law distributions in class relationships

    Publication Year: 2003, Page(s):45 - 54
    Cited by:  Papers (38)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (382 KB) | HTML iconHTML

    Power law distributions have been found in many natural and social phenomena, and more recently in the source code and run-time characteristics of Object-Oriented (OO) systems. A power law implies that small values are extremely common, whereas large values are extremely rare. We identify twelve new power laws relating to the static graph structures of Java programs. The graph structures analyzed ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Design and implementation of bytecode-based Java slicing system

    Publication Year: 2003, Page(s):108 - 117
    Cited by:  Papers (10)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (425 KB) | HTML iconHTML

    A program slice is a set of statements that affect the value of a variable v in a statement s. In order to calculate a program slice, we must know the dependence relations between statements in the program. Program slicing techniques are roughly divided into two categories, static slicing and dynamic slicing, and we have proposed DC slicing technique which uses both static and dynamic information.... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Improving the static analysis of loops by dynamic partitioning techniques

    Publication Year: 2003, Page(s):13 - 21
    Cited by:  Papers (3)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (469 KB) | HTML iconHTML

    Many static analyses aim at assigning to each control point of a program an invariant property that characterizes any state of a trace corresponding to this point. The choice of the set of control points determines the states of an execution trace for which a common property must be found. We focus on sufficient conditions to substitute one control flow graph for another during an analysis. Next, ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Results from a large-scale study of performance optimization techniques for source code analyses based on graph reachability algorithms

    Publication Year: 2003, Page(s):203 - 212
    Cited by:  Papers (9)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (398 KB) | HTML iconHTML

    Internally, many source code analysis tools make use of graphs. For example, one of the oldest and most widely used internal graphs is the control-flow graph developed for use within a compiler. Work on compilation has also led to the development of the call graph, the procedure dependence graph (PDG), and the static-single assignment (SSA) graph. Compilers are not the only source-code analysis to... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Barrier slicing and chopping

    Publication Year: 2003, Page(s):81 - 87
    Cited by:  Papers (11)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (319 KB) | HTML iconHTML

    One of the critiques on program slicing is that slices presented to the user are hard to understand. This is partly due to bad user interfaces, but mainly related to the problem that slicing 'dumps' the results onto the user without any explanation. We present an approach that can be used to 'filter' slices. This approach basically introduces 'barriers' which are not allowed to be passed during sl... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Detection of redundant code using R2D2

    Publication Year: 2003, Page(s):183 - 192
    Cited by:  Papers (3)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (322 KB) | HTML iconHTML

    We present the R2D2 redundancy detector. R2D2 identifies redundant code fragments on large software systems. For each pair of code fragments, R2D2 uses a combination of techniques ranging from syntax-based analysis to semantics-based analysis, that detect positive and negative evidences regarding the redundancy of the analyzed code ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • The Java system dependence graph

    Publication Year: 2003, Page(s):55 - 64
    Cited by:  Papers (13)  |  Patents (1)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (347 KB) | HTML iconHTML

    The program dependence graph was introduced by Ottenstein and Ottenstein in 1984. It was suggested to be a suitable internal program representation for monolithic programs, for the purpose of carrying out certain software engineering operations such as slicing and the computation of program metrics. Since then, Horwitz et al. have introduced the multiprocedural equivalent system dependence graph. ... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Design of the CodeBoost transformation system for domain-specific optimisation of C++ programs

    Publication Year: 2003, Page(s):65 - 74
    Cited by:  Papers (13)  |  Patents (1)
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (294 KB) | HTML iconHTML

    The use of a high-level, abstract coding style can greatly increase developer productivity. For numerical software, this can result in drastically reduced run-time performance. High-level, domain-specific optimisations can eliminate much of the overhead caused by an abstract coding style, but current compilers have poor support for domain-specific optimisation. We present CodeBoost, a source-to-so... View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation

    Publication Year: 2003
    Request permission for commercial reuse | Click to expandAbstract | PDF file iconPDF (259 KB)

    The following topics are dealt with: static analysis; online cycle detection; pointer analysis; dynamic partitioning techniques; object oriented code; power law distribution; dependence graph; CodeBoost transformation system; source code analysis; semantic slicing; program transformations; parse tree annotation; software tools; redundant code detection; and program profile checking. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Author index

    Publication Year: 2003, Page(s): 213
    Request permission for commercial reuse | PDF file iconPDF (154 KB)
    Freely Available from IEEE