19,024 research outputs found

    Handling pointers and unstructured statements in the forward computed dynamic slice algorithm

    Get PDF
    Different program slicing methods are used for debugging, testing, reverse engineering and maintenance. Slicing algorithms can be classified as a static slicing or dynamic slicing type. In applications such as debugging the computation of dynamic slices is more preferable since it can produce more precise results. In a recent paper [5] a new so-called "forward computed dynamic slice" algorithm was introduced. It has the great advantage compared to other dynamic slice algorithms that the memory requirements of this algorithm are proportional to the number of different memory locations used by the program, which in most cases is much smaller than the size of the execution history. The execution time of the algorithm is linear in the size of the execution history. In this paper we introduce the handling of pointers and the jump statements (goto, break, continue) in the C language

    Dynamic forward slicing for object-oriented programs

    Get PDF
    Program slicing, a program reduction technique, identifies codes that are related to a given function or variable of interest in a given program. It fulfills the task of decomposing and filtering a large program to restrict the focus to some specific parts. Program slicing has applications in software maintenance, reverse engineering, testing, and debugging. Program slicing can be mainly classified into static slicing and dynamic slicing. In this thesis, we introduce a new forward slicing approach for computing dynamic slices for OO programs. Our algorithm computes dynamically slices for all program components executed at run-time, without requiring any major recording of the program execution trace. We also propose an optimized algorithm as a solution to compute slices in the presents of exception handling in OO programs. The presented algorithm addresses additional issues related to the elimination of the notion of TopSlices from the based algorithm. Instead, our algorithm applies a registration strategy for slice computation, so that reduces the run-time storage overhead

    Understanding object-oriented source code from the behavioural perspective

    Get PDF
    Comprehension is a key activity that underpins a variety of software maintenance and engineering tasks. The task of understanding object-oriented systems is hampered by the fact that the code segments that are related to a user-level function tend to be distributed across the system. We introduce a tool-supported code extraction technique that addresses this issue. Given a minimal amount of information about a behavioural element of the system that is of interest (such as a use-case), it extracts a trail of the methods (and method invocations) through the system that are needed in order to achieve an understanding of the implementation of the element of interest. We demonstrate the feasibility of our approach by implementing it as part of a code extraction tool, presenting a case study and evaluating the approach and tool against a set of established criteria for program comprehension tools

    VADA: A transformation-based system for variable dependence analysis

    Get PDF
    Variable dependence is an analysis problem in which the aim is to determine the set of input variables that can affect the values stored in a chosen set of intermediate program variables. This paper shows the relationship between the variable dependence analysis problem and slicing and describes VADA, a system that implements variable dependence analysis. In order to cover the full range of C constructs and features, a transformation to a core language is employed Thus, the full analysis is required only for the core language, which is relatively simple. This reduces the overall effort required for dependency analysis. The transformations used need preserve only the variable dependence relation, and therefore need not be meaning preserving in the traditional sense. The paper describes how this relaxed meaning further simplifies the transformation phase of the approach. Finally, the results of an empirical study into the performance of the system are presented
    • 

    corecore