Barrier Slicing and Chopping
|
|
- Rudolf Fox
- 5 years ago
- Views:
Transcription
1 Barrier Slicing and Chopping Jens Krinke Universität Passau Passau, Germany Abstract 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. This work will present an approach that can be used to filter slices. This approach basically introduces barriers which are not allowed to be passed during slice computation. An earlier filtering approach is chopping which is also extended to obey such a barrier. The barrier variants of slicing and chopping provide filtering possibilities for smaller slices and better comprehensibility. 1. Introduction Program slicing answers the question Which statements may affect the computation at a different statement?. At first sight, an answer to that question should be a valuable help to programmers. After Weiser s first publication [20] on slicing in 1979, almost 2 years have passed and various approaches to compute slices have evolved. Usually, inventions in computer science are adopted widely after around 10 years. Why are slicing techniques not easily available yet? William Griswold gave a talk at PASTE 2001 [8] on that topic: Making Slicing Practical: The Final Mile. He pointed out why slicing is still not widely used today. One of the main problems is that slicing as-it-stands is inadequate to essential software-engineering needs. Usually, slices 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. Griswold stated the need for slice explainers that answer the question why a statement is included in the slice, as well as the need for filtering. This work will present such a filtering approach to slicing. This approach basically introduces barriers which are not allowed to be passed during slice computation. Especially for chopping, barriers can be used to focus a chop onto interesting program parts. The next two sections will present slicing and chopping in detail. Section four will introduce barrier slicing and chopping together with an example. This work is closed with a discussion of related work and conclusions. 2. Slicing A slice extracts those statements from a program that potentially have an influence onto a specific statement of interest which is the slicing criterion. Originally, slicing was defined by Weiser in 1979; he presented an approach to compute slices based on iterative data flow analysis [20, 21]. The other main approach to slicing uses reachability analysis in program dependence graphs (PDGs) [4]. Program dependence graphs mainly consist of nodes representing the statements of a program and control and data dependence edges: Control dependence between two statement nodes exists if one statement controls the execution of the other (e.g. through if- or while-statements). Data dependence between two statement nodes exists if a definition of a variable at one statement might reach the usage of the same variable at another statement. The extension of the PDG for interprocedural programs introduces more nodes and edges: For every procedure a procedure dependence graph is constructed, which is basically a PDG with formal-in and -out nodes for every formal parameter of the procedure. A procedure call is represented by a call node and actual-in and -out nodes for each actual parameter. The call node is connected to the entry node by a call edge, the actual-in nodes are connected to their matching formal-in nodes via parameter-in edges and the actualout nodes are connected to their matching formal-out nodes via parameter-out edges. Such a graph is called Interprocedural Program Dependence Graph (IPDG). The System Dependence Graph (SDG) is an IPDG, where summary edges between actual-in and actual-out have been added representing transitive dependence due to calls [9]. c 2003 IEEE. To be published in the Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation, 2003 in Amsterdam, Netherlands. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE.
2 To slice programs with procedures, it is not enough to perform a reachability analysis on IPDGs or SDGs. The resulting slices are not accurate as the calling context is not preserved: The algorithm may traverse a parameter-in edge coming from a call site into a procedure, may traverse some edges there and finally a parameter-out edge going to a different call site. The sequence of traversed edges (the path) is an unrealizable path: It is impossible for an execution that a called procedure does not return to its call site. We consider an interprocedural slice to be precise if all nodes included in the slice are reachable from the criterion by a realizable path. Definition 1 (Slice in an IPDG) The (backward) slice S(n) of an IPDG G = (N, E) at node n N consists of all nodes on which n (transitively) depends via an interprocedurally realizable path: S(n) = {m N m R n} Here, m R n denotes that there exists an interprocedurally realizable path from m to n. We can extend the slice criterion to allow a set of nodes C N instead one single node: S(C) = {m N m R n n C } These definitions cannot be used in an algorithm directly because it is impractical to check paths whether they are interprocedurally realizable. Accurate slices can be calculated with a modified algorithm on SDGs [9]: The benefit of SDGs is the presence of summary edges that represent transitive dependence due to calls. Summary edges can be used to identify actual-out nodes that are reachable from actualin nodes by an interprocedurally realizable path through the called procedure without analyzing it. The idea of the slicing algorithm using summary edges [9, 1] is first to slice from the criterion only ascending into calling procedures, and then to slice from all visited nodes only descending into called procedures. We refer the reader to [11] for a presentation of the algorithms. 3. Chopping Slicing identifies statements in a program which may influence a given statement (the slicing criterion), but it cannot answer the question why a specific statement is part of a slice. A more focused approach can help: Jackson and Rollins [10] introduced Chopping which reveals the statements involved in a transitive dependence from one specific statement (the source criterion) to another (the target criterion). A chop for a chopping criterion (s, t) is the set of nodes that are part of an influence of the (source) node s onto the (target) node t. This is basically the set of nodes which are lying on a path from s to t in the PDG. Definition 2 (Chop) The chop C(s, t) of an IPDG G = (N, E) from the source criterion s N to the target criterion t N consists of all nodes on which node t (transitively) depends via an interprocedurally realizable path from node s to node t: C(s, t) = {n N p s R t i : n = n i } Here, p s R t denotes that path p is an interprocedurally realizable path from s to t. Again, we can extend the chopping criteria to allow sets of nodes: The chop C(S, T ) of an IPDG from the source criterion nodes S to the target criterion nodes T consists of all nodes on which a node of T (transitively) depends via an interprocedurally realizable path from a node of S N to the node in T N: C(S, T ) = {n N p s R t s S t T i : n = n i } Jackson and Rollins restricted s and t to be in the same procedure and only traversed control dependence, data dependence and summary edges but not parameter or call edges. The resulting chop is called a truncated same-level chop C TS ; truncated because nodes of called procedures are not included. In [16] Reps and Rosay presented more variants of precise chopping. A non-truncated same-level chop C NS is like the truncated chop but includes the nodes of called procedures. They also present truncated and nontruncated non-same-level chops C TN and C NN (which they call interprocedural), where the nodes of the chopping criterion are allowed to be in different procedures. Again, the algorithms are explained in [11]. 4 Barrier Slicing and Chopping The presented slicing and chopping techniques compute very fixed results where the user has no influence. However, during slicing and chopping a user might want to give additional restrictions or additional knowledge to the computation: 1. A user might know that a certain data dependence cannot happen. Because the underlying data flow analysis is a conservative approximation and the pointer analysis is imprecise, it might be clear to the user that a dependence found by the analysis cannot happen in reality. For example, the analysis assumes a dependence between a definition a[i]=... and a usage...=a[j] of an array, but the user discovers that i 2
3 and j never have the same value. If such a dependence is removed from the dependence graph, the computed slice might be smaller. 2. A user might want to exclude specific parts of the program which are of no interest for his purposes. For example, he might know that certain statement blocks are not executed during runs of interest; or he might want to ignore error handling or recovery code, when he is only interested in normal execution. 3. During debugging, a slice might contain parts of the analyzed program that are known (or assumed) to be bug-free. These parts should be removed from the slice to make the slice more focused. These points have been tackled independently: For example, the removal of dependences from the dependence graph by the user has been applied in Steindl s slicer [18, 19]. The removal of parts from a slice has been presented by Lyle and Weiser [13] and is called dicing. The following approach integrates both into a new kind of slicing, called barrier slicing, where nodes (or edges) in the dependence graph are declared to be a barrier that transitive dependence is not allowed to pass. Definition 3 (Barrier Slice) The barrier slice S # (C, B) of an IPDG G = (N, E) for the slicing criterion C N with the barrier set of nodes B N consists of all nodes on which a node n C (transitively) depends via an interprocedurally realizable path that does not pass a node of B: S # (C, B) = {m N p m R n n C 1 < i l : n i / B} The barrier may also be defined by a set of edges; the previous definition is adapted accordingly. From barrier slicing it is only a small step to barrier chopping: Definition 4 (Barrier Chop) The barrier chop C # (S, T, B) of an IPDG G = (N, E) from the source criterion S N to the target criterion T N with the barrier set of nodes B consists of all nodes on which a node of T (transitively) depends via an interprocedurally realizable path from a node of S to the node in T that does not pass a node of B N: C # (S, T, B) = {n N p s R t s S t T i : n = n i 1 < j < l : n j / B} The barrier may also be defined by a set of edges; the previous definition is adapted accordingly. Algorithm 1 Computation of Blocked Summary Edges Input: G = (N, E) the given SDG B N the given barrier Output: A set S of blocked summary edges Initialization S =, W = Block all reachable summary edges foreach n B do Let P be the procedure containing n Let S P be the set of summary edges for calls to P S = S S P W = W {(m, m) m is a formal-out node of P } repeat S 0 = S foreach x y S do Let P be the procedure containing x Let S P be the set of summary edges for calls to P S = S S P W = W {(m, m) m is a formal-out node of P } until S 0 = S Unblock some summary edges M = W Invariants: 1. W M 2. (n, m) M n m via a b.f. intraprocedural path, m is a formal-out node. while W worklist is not empty do W = W/{(n, m)} remove one element from the worklist if n is a formal-in node then A b.f. path from formal-in n to formal-out m exists foreach n pi n which is a parameter-in edge do foreach m po m which is a parameter-out-edge do if n / B m / B n su m S then S = S/{n su m } unblock summary edge foreach (m, x) M (n, x) / M do M = M {(n, x)} W = W {(n, x)} else foreach n dd,cd n do if n / B (n, m) / M then M = M {(n, m)} W = W {(n, m)} foreach n su n do if n / B (n, m) / M n su n / S then M = M {(n, m)} W = W {(n, m)} return S the set of blocked summary edges 3
4 Again, the forward/backward, truncated/non-truncated, same-level/non-same-level variants can be defined, but are not presented here. The computation of barrier slices and chops cause a problem: The additional constraint of the barrier destroys the usability of summary edges as they do not obey the barrier. Even when summary edges would comply with the barrier, the advantage of summary edges is lost: They can no longer be computed once and used for different slices and chops because they have to be computed for each barrier slice and chop individually. The original algorithm from [1] can be adapted to compute summary edges which obey the barrier: The new version (algorithm 1) is based on blocking and unblocking summary edges. First, all summary edges stemming from calls that might call a procedure with a node from the barrier at some time are blocked. This set is a too conservative approximation and the second step unblocks summary edges where a barrier-free path exists between the formal-in and - out node corresponding to the summary edge s actual-in and -out node. The algorithm propagates pairs (n, m) which state that formal-out node m is intraprocedurally reachable from n via a barrier-free path. The pairs are propagated via worklist W and kept in set M. If a pair from a formal-in to a formal-out node is encountered, all corresponding summary edges in calling procedures must be unblocked. That step must also propagate earlier encountered pairs along the now unblocked summary edge. (The propagation may have stopped at the blocked summary edge earlier.) The first phase of the algorithm replaces the initialization phase of the original algorithm and the second phase does not generate new summary edges (like the original), but unblocks them. Only the version where the barrier consists of nodes is shown. This algorithm is cheaper than the complete recomputation of summary edges, because it only propagates node pairs to find barrier-free paths between actual-in/-out nodes if a summary edge and therefore a (not necessarily barrier-free path) exists. Example 1: Consider the example in figure 1: If a slice for u_kg in line 33 is computed, almost the complete program is in the slice: Just lines 11 and 12 are omitted. One might be interested why the variable p_cd is in the slice and has an influence on u_kg. Therefore a chop is computed: The source criterion are all statements containing variable p_cd (lines 9, 21, 23, 24 and 31) and the target criterion is u_kg in line 33. The computed chop is shown in figure 2. In that chop, line 19 looks suspicious, where the variable u_kg is defined, using variable kal_kg. Another chop from all statements containing variable kal_kg to the same target consists only of lines 14, 19, 26, 28 and 33 (figure 3). A closer look reveals that statements 26 and 28 transmit the influence from p_cd on u_kg. 1 #define TRUE if (e_puf[idx] == + ) 3 } Figure 1. An example To check that no other statement is responsible, a barrier chop is computed: The source are the statements with p_cd again, the target criterion is still u_kg in line 33, and the barrier is line 26 and 28. The computed chop is empty and reveals that lines 26 and 28 are the hot spots. The barrier slice with the criterion u_kg in line 33 and the same barrier reveals the intended computation, which consists of lines 8, 13, 14, and Core Chop A specialized version of a barrier chop is a core chop where the barrier consists of the source and target criterion nodes. Definition (Core Chop) A core chop C (S, T ) is defined as: C (S, T ) = C # (S, T, S T ) 4
5 1 #define TRUE if (e_puf[idx] == + ) 3 } 1 #define TRUE if (e_puf[idx] == + ) 3 } Figure 2. A chop for the example in figure 1 Figure 3. Another chop for the example It is well suited for chops with large source and target criterion sets: Only the statements connecting the source to the target are part of the chop. Here is important that a barrier chop allows barrier nodes to be included in the criteria. In that case, the criterion nodes are only start or end nodes of the path and are not allowed elsewhere. 4.2 Self Chop When slices or chops are computed for large criterion sets, it is sometimes important to know which parts of the criterion set influence themselves and which statements are part of such an influence. After identifying such statements, they can specially be handled during following analyses. They can be computed simply by a self chop, where a set is both source and target criterion: Definition 6 (Self Chop) A self chop C (S) is defined as: C (S) = C(S, S) It computes the strongly connected components of the SDG which contain nodes of the criterion. These components can be of special interest to the user, or they are used to make core chops even stronger: Definition 7 (Strong Core Chop) A strong core chop C (S, T ) is defined as: C (S, T ) = C # (S C (S), T C (T ), S T C (S) C (T )) It only contains statements that connect the source criterion to the target criterion, none of the resulting statements will have an influence on the source criterion, and the target criterion will have no impact on the resulting statements. Thus, the strong core chop only contains the most important nodes of the influence between the source and target criterion. This will be demonstrated with the earlier example:
6 1 #define TRUE if (e_puf[idx] == + ) 3 } Figure 4. A core chop for the example Example 2: Lets compute a core chop with criteria similar to example 1: The source criterion are all statements containing variable p_cd (lines 9, 21, 23, 24 and 31) and the target criterion consists of accesses of variable u_kg in line 19 and 33. The computed chop is shown in figure 4 and contains only statements that are involved in an influence between p_cd and u_kg. If a strong core chop is computed instead, line 22 will no longer be in the computed chop, revealing an even stronger result.. Related Work Chopping as presented here has been introduced by Jackson and Rollins [10], extended by Reps and Rosay [16] and implemented in CodeSurfer [1]. An evaluation of various slicing and chopping algorithms has been done in [11]. A decomposition slice [7, 6, ] is basically a slice for a variable at all statements writing that variable. The decomposition slice is used to form a graph using the partial ordering induced by proper subset inclusion of the decomposition slices for all variables. Beck and Eichmann [2] use slicing to isolate statements of a module that influence an exported behavior. Their work uses interface dependence graphs and interface slicing. Steindl [18, 19] has developed a slicer for Oberon where the user can choose certain dependences to be removed from the dependence graph. Set operations on slices produce various variants: Chopping uses intersection of a backward and a forward slice. The intersection of two forward or two backward slices is called a backbone slice. Dicing [13] is the subtraction of two slices. However, set operations on slices need special attention because the union of two slices may not produce a valid slice [3]. Orso et al [14] presents a slicing algorithm which augments edges with types and restricts reachability onto a set of types, creating slices restricted to these types. Their algorithm needs to compute the summary edges specific to each slice (similar to algorithm 1). However, it only works for programs without recursion. 6. Conclusions The presented variants of barrier slicing and chopping provide a filtering approach to reduce the size of slices and chops. The example showed the helpfulness of this approach. Now we are integrating these slicing and chopping algorithms into our VALSOFT slicing system [12]. We are confident that the usefulness of our approach will be shown in following experiments. The size reduction of chops is especially important for the generation of path conditions [17]. Path conditions give necessary conditions under which a transitive dependence between the source and target (criterion) node exists. These conditions give the answer to Why is this statement in the slice?. When barrier or core chops are used instead of traditional chops during path condition generation, only the important parts will be represented in the path condition, making it smaller and thus, more comprehensible. Acknowledgments. Thomas Zimmermann implemented earlier versions of the presented algorithms. Silvia Breu and Maximilian Störzer provided valuable comments. References [1] P. Anderson and T. Teitelbaum. Software inspection using codesurfer. In Workshop on Inspection in Software Engineering (CAV 2001),
7 [2] J. Beck and D. Eichmann. Program and interface slicing for reverse engineering. In IEEE/ACM 1 th Conference on Software Engineering (ICSE 93), pages 09 18, [3] A. De Lucia, M. Harman, R. Hierons, and J. Krinke. Unions of slices are not slices. In 7th European Conference on Software Maintenance and Reengineering, [4] J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Trans. Prog. Lang. Syst., 9(3): , July [] K. Gallagher and L. O Brien. Reducing visualization complexity using decomposition slices. In Software Visualization Workshop, pages , [6] K. B. Gallagher. Visual impact analysis. In Proceedings of the International Conference on Software Maintenance, pages 2 8, [7] K. B. Gallagher and J. R. Lyle. Using program slicing in software maintenance. IEEE Transactions on Software Engineering, 17(8):71 761, [8] W. G. Griswold. Making slicing practical: The final mile, Invited Talk, PASTE 01. [9] S. B. Horwitz, T. W. Reps, and D. Binkley. Interprocedural slicing using dependence graphs. ACM Trans. Prog. Lang. Syst., 12(1):26 60, Jan [10] D. Jackson and E. J. Rollins. A new model of program dependences for reverse engineering. In Proceedings of the second ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 2 10, [11] J. Krinke. Evaluating context-sensitive slicing and chopping. In International Conference on Software Maintenance, pages 22 31, [12] J. Krinke and G. Snelting. Validation of measurement software as an application of slicing and constraint solving. Information and Software Technology, 40(11-12):661 67, Dec [13] J. R. Lyle and M. Weiser. Automatic program bug location by program slicing. In 2 International Conference on Computers and Applications, pages , [14] A. Orso, S. Sinha, and M. J. Harrold. Incremental slicing based on data-dependences types. In International Conference on Software Maintenance, [1] T. Reps, S. Horwitz, M. Sagiv, and G. Rosay. Speeding up slicing. In Proceedings of the ACM SIGSOFT 94 Symposium on the Foundations of Software Engineering, pages 11 20, [16] T. Reps and G. Rosay. Precise interprocedural chopping. In Proceedings of the 3rd ACM Symposium on the Foundations of Software Engineering, pages 41 2, 199. [17] T. Robschink and G. Snelting. Efficient path conditions in dependence graphs. In Proceedings of the 24th International Conference of Software Engineering (ICSE), pages , [18] C. Steindl. Intermodular slicing of object-oriented programs. In International Conference on Compiler Construction, volume 1383 of LNCS, pages Springer, [19] C. Steindl. Benefits of a data flow-aware programming environment. In Workshop on Program Analysis for Software Tools and Engineering (PASTE 99), [20] M. Weiser. Program slices: formal, psychological, and practical investigations of an automatic program abstraction method. PhD thesis, University of Michigan, Ann Arbor, [21] M. Weiser. Program slicing. IEEE Trans. Softw. Eng., 10(4):32 37, July
Advanced Slicing of Sequential and Concurrent Programs
Advanced Slicing of Sequential and Concurrent Programs Jens Krinke FernUniversität in Hagen, Germany JensKrinke@FernUni-Hagende Abstract Program slicing is a technique to identify statements that may influence
More informationSlicing, Chopping, and Path Conditions with Barriers
Slicing, Chopping, and Path Conditions with Barriers Jens Krinke FernUniversität in Hagen, Germany Abstract. One of the critiques on program slicing is that slices presented to the user are hard to understand.
More informationAn Efficient Algorithm for Computing all Program Static Slices
An Efficient Algorithm for Computing all Program Static Slices JEHAD AL DALLAL Department of Information Sciences Kuwait University P.O. Box 5969, Safat 13060 KUWAIT Abstract: - Program slicing is the
More informationClass 6. Review; questions Assign (see Schedule for links) Slicing overview (cont d) Problem Set 3: due 9/8/09. Program Slicing
Class 6 Review; questions Assign (see Schedule for links) Slicing overview (cont d) Problem Set 3: due 9/8/09 1 Program Slicing 2 1 Program Slicing 1. Slicing overview 2. Types of slices, levels of slices
More informationAn Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques. JOSEP SILVA Technical University of Valencia
An Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques JOSEP SILVA Technical University of Valencia Advisor: Germán Vidal December, 2008 2 3 PART I Program Slicing Techniques
More informationCodeSurfer/x86 A Platform for Analyzing x86 Executables
CodeSurfer/x86 A Platform for Analyzing x86 Executables Gogul Balakrishnan 1, Radu Gruian 2, Thomas Reps 1,2, and Tim Teitelbaum 2 1 Comp. Sci. Dept., University of Wisconsin; {bgogul,reps}@cs.wisc.edu
More informationA Vocabulary of Program Slicing-Based Techniques
A Vocabulary of Program Slicing-Based Techniques JOSEP SILVA Universidad Politécnica de Valencia This article surveys previous work on program slicing-based techniques. For each technique we describe its
More informationProgram Slicing in the Presence of Pointers (Extended Abstract)
Program Slicing in the Presence of Pointers (Extended Abstract) James R. Lyle National Institute of Standards and Technology jimmy@swe.ncsl.nist.gov David Binkley Loyola College in Maryland National Institute
More informationAdvanced Chopping of Sequential and Concurrent Programs
Noname manuscript No. (will be inserted by the editor) Advanced Chopping of Sequential and Concurrent Programs Dennis Giffhorn Received: date / Accepted: date Abstract A chop for a source statement s and
More informationProgram Analysis. Readings
Program Analysis Class #2 Readings he Program Dependence Graph and Its Use in Optimization Program slicing A Survey of Program Slicing echniques Dragon book Program Analysis Data-low Analysis (wrap up)
More informationProgram Slicing for Codesign
Program Slicing for Codesign Jeffry Russell Department of Electrical and Computer Engineering University of exas at Austin jeff_russell@ieee.org ABSRAC Program slicing is a software analysis technique
More informationProgram Slicing in the Presence of Pointers
Program Slicing in the Presence of Pointers James R. Lyle David Binkley jimmy@sst.ncsl.nist.gov binkley@sst.ncsl.nist.gov U.S. Depar tment of Commerce Technology Administration National Institute of Standards
More informationStatic Slicing of Threaded Programs
Static Slicing of Threaded Programs Jens Krinke krinke@ips.cs.tu-bs.de TU Braunschweig Abteilung Softwaretechnologie Abstract Static program slicing is an established method for analyzing sequential programs,
More informationA classic tool: slicing. CSE503: Software Engineering. Slicing, dicing, chopping. Basic ideas. Weiser s approach. Example
A classic tool: slicing CSE503: Software Engineering David Notkin University of Washington Computer Science & Engineering Spring 2006 Of interest by itself And for the underlying representations Originally,
More informationEfficient Program Slicing Algorithms for Measuring Functional Cohesion and Parallelism
Efficient Program Slicing Algorithms for Measuring Functional Cohesion and Parallelism Jehad Al Dallal Abstract Program slicing is the task of finding all statements in a program that directly or indirectly
More informationInter-Procedural Static Slicing Using Advanced Caching Algorithm *
7 th International Conference on Applied Informatics Eger, Hungary, January 28-31 2007 Inter-Procedural Static Slicing Using Advanced Caching Algorithm * Mihály Biczó a, Krisztián Pócza a, Zoltán Porkoláb
More informationAn Evaluation of Slicing Algorithms for Concurrent Programs
An Evaluation of Slicing Algorithms for Concurrent Programs Dennis Giffhorn Universität Passau Passau, Germany giffhorn@uni-passau.de Christian Hammer Universität Passau Passau, Germany hammer@fmi.uni-passau.de
More informationInter-procedural static slicing using advanced caching algorithm
Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 2. pp. 207 218. Inter-procedural static slicing using advanced caching algorithm Mihály
More informationPredicting Runtime Data Dependences for Slice Inspection Prioritization
Predicting Runtime Data Dependences for Slice Inspection Prioritization Yiji Zhang and Raul Santelices University of Notre Dame Notre Dame, Indiana, USA E-mail: {yzhang20 rsanteli}@nd.edu Abstract Data
More informationImplementation Techniques for Efficient Data-Flow Analysis of Large Programs
Implementation Techniques for Efficient Data-Flow Analysis of Large Programs Darren C. Atkinson Dept. of Computer Engineering Santa Clara University Santa Clara, CA 95053-0566 USA atkinson@engr.scu.edu
More informationPrecise Executable Interprocedural Slices
Precise Executable Interprocedural Slices DAVID BINKLEY Loyola College in Maryland The notion of a program slice, originally introduced by Mark Weiser, is useful in program debugging, automatic parallelization,
More informationStatic Interprocedural Slicing of Shared Memory Parallel Programs *
Static Interprocedural Slicing of Shared Memory Parallel Programs * Dixie M. Hisley Matthew J. Bridges Lori L. Pollock U.S. Army Research Lab Computer & Information Sciences Computer & Information Sciences
More informationFirst Steps to Automated Driver Verification via Model Checking
WDS'06 Proceedings of Contributed Papers, Part I, 146 150, 2006. ISBN 80-86732-84-3 MATFYZPRESS First Steps to Automated Driver Verification via Model Checking T. Matoušek Charles University Prague, Faculty
More informationTowards Locating a Functional Concern Based on a Program Slicing Technique
Towards Locating a Functional Concern Based on a Program Slicing Technique Takashi Ishio 1,2, Ryusuke Niitani 2, Katsuro Inoue 2 1 Department of Computer Science University of British Columbia 2366 Main
More informationUnderstanding Data Dependences in the Presence of Pointers
Technical Report GIT-CERCS-03-10 Understanding Data Dependences in the Presence of Pointers Alessandro Orso, Saurabh Sinha, and Mary Jean Harrold College of Computing, Georgia Institute of Technology 801
More informationIntra-procedural Slicing Using Program Dependence Table
Intra-procedural Slicing Using Program Dependence Table Reza Mohammadian Department of computer Islamic Azad University Qom, Iran mohammadian reza@hotmail.com Saeed Doostali Department of computer University
More informationThe Relationship between Slices and Module Cohesion
The Relationship between Slices and Module Cohesion Linda M. Ott Jeffrey J. Thuss Department of Computer Science Michigan Technological University Houghton, MI 49931 Abstract High module cohesion is often
More informationslicing An example of slicing Consider the following example:
slicing The concept of slicing was introduced over two decades ago. With an initial program behavior (a variable associated with a particular statement), slicing reduces the program to a minimal form which
More informationDependence Graph Considerering Resource for Automatic Sample Program Generation
1 2 2 2 ( ) Google Android Dependence Graph Considerering Resource for Automatic Sample Program Generation Yoshimasa Fujiura, 1 Hirotaka Ohkubo, 1 Hideto Kasuya 1 and Shinichiro Yamamoto 1 This paper propose
More informationAn approach to recovering data flow oriented design of a software system
An approach to recovering data flow oriented design of a software system Arun Lakhotia The Center for Advanced Computer Studies University of Southwestern Louisiana Lafayette, LA 70504 (318) 231-6766,
More informationModel Checking x86 Executables
Model Checking x86 Executables with CodeSurfer/x86 and WPDS++ G. Balakrishnan, T. Reps, N. Kidd, A. Lal, J. Lim, D. Melski, R. Gruian, S. Yong, C.-H. Chen, and T. Teitelbaum Comp. Sci. Dept., University
More informationBisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version
Bisection Debugging Thomas Gross School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Institut für Computer Systeme ETH Zürich CH 8092 Zürich Preliminary version Abstract This paper
More informationAdvanced Compiler Construction
CS 526 Advanced Compiler Construction http://misailo.cs.illinois.edu/courses/cs526 INTERPROCEDURAL ANALYSIS The slides adapted from Vikram Adve So Far Control Flow Analysis Data Flow Analysis Dependence
More informationAnalysis of Pointers and Structures
RETROSPECTIVE: Analysis of Pointers and Structures David Chase, Mark Wegman, and Ken Zadeck chase@naturalbridge.com, zadeck@naturalbridge.com, wegman@us.ibm.com Historically our paper was important because
More informationSpeeding up context-, object- and field-sensitive SDG generation
Speeding up context-, object- and field-sensitive SDG generation Jürgen Graf Karlsruhe Institute of Technology (KIT) Karlsruhe, Germany graf@kit.edu Abstract System dependence graphs (SDGs) are an established
More informationInterprocedural Slicing Using Dependence Graphs
- 1 - Interprocedural Slicing Using Dependence Graphs SUSAN HORWITZ, THOMAS REPS, and DAVID BINKLEY University of Wisconsin-Madison The notion of a program slice, originally introduced by Mark Weiser,
More informationSupport for Automatic Refactoring of Business Logic
Support for Automatic Refactoring of Business Logic Tiago B. Fernandes 1, António Nestor Ribeiro 2, David V. Nunes 3, Hugo R. Lourenço 3, and Luiz C. Santos 3 1 Dep. Informática Universidade do Minho 2
More informationImproving Program Slicing with Dynamic Points-To Data
Improving Program Slicing with Dynamic Points-To Data Markus Mock Department of Computer Science & Engineering University of Washington Seattle, WA 98195-2350 mock@cs.washington.edu Darren C. Atkinson
More informationSlicing of Object-Oriented Software
Slicing of Object-Oriented Software Thesis submitted in partial fulfillment of the requirements for the degree Of Bachelor of Technology In Computer Science and Engineering By Biswaranjan Panda Roll No:
More informationUnion Slices for Program Maintenance
Union Slices for Program Maintenance Árpád Beszédes, Csaba Faragó, Zsolt Mihály Szabó, János Csirik and Tibor Gyimóthy University of Szeged, Research Group on Artificial Intelligence Aradi vértanuk tere
More informationData Reverse Engineering using System Dependency Graphs
Data Reverse Engineering using System Dependency Graphs Anthony Cleve Computer Science Institute University of Namur 21, rue Grandgagnage 5000 Namur, Belgium acl@info.fundp.ac.be Jean Henrard ReveR S.A.
More informationDerivation of Feature Component Maps by means of Concept Analysis
Derivation of Feature Component Maps by means of Concept Analysis Thomas Eisenbarth, Rainer Koschke, Daniel Simon University of Stuttgart, Breitwiesenstr. 20-22, 70565 Stuttgart, Germany {eisenbts, koschke,
More informationStatic Analysis of Binary Code to Isolate Malicious Behaviors Λ
Static Analysis of Binary Code to Isolate Malicious Behaviors Λ J. Bergeron & M. Debbabi & M. M. Erhioui & B. Ktari LSFM Research Group, Computer Science Department, Science and Engineering Faculty, Laval
More informationThe MEB and CEB Static Analysis for CSP Specifications
The MEB and CEB Static Analysis for CSP Specifications Michael Leuschel 1, Marisa Llorens 2, Javier Oliver 2, Josep Silva 2, and Salvador Tamarit 2 1 Institut für Informatik, Heinrich-Heine-Universität
More informationData-Flow Based Detection of Loop Bounds
Data-Flow Based Detection of Loop Bounds Christoph Cullmann and Florian Martin AbsInt Angewandte Informatik GmbH Science Park 1, D-66123 Saarbrücken, Germany cullmann,florian@absint.com, http://www.absint.com
More informationTHE traditional denotational semantics treats a program
The Formal Semantics of Program Slicing for Non-Terminating Computations Martin Ward and Hussein Zedan Abstract Since the original development of program slicing in 1979 [1] there have been many attempts
More informationSource Code Analysis and Slicing for Program Comprehension
University of Szeged Doctoral School in Mathematics and Computer Science Ph. D. Program in Informatics Source Code Analysis and Slicing for Program Comprehension Summary of the PhD Thesis by Árpád Beszédes
More informationProgram Slicing for Refactoring
Program Slicing for Refactoring Mathieu Verbaere Lady Margaret Hall Oxford University Computing Laboratory September 2003 Abstract A program slice singles out all statements that may have affected the
More informationProgram Integration for Languages with Procedure Calls
Program Integration for Languages with Procedure Calls DAVID BINKLEY, SUSAN HORWITZ, and THOMAS REPS University of Wisconsin Madison Given a program Base and two variants, A and B, each created by modifying
More informationA Very Efficient and Scalable Forward Static Slicing Approach
A Very Efficient and Scalable Forward Static Slicing Approach Hakam W. Alomari Department of Computer Science Kent State University Kent, Ohio, USA halomari@cs.kent.edu Michael L. Collard Department of
More informationConditioned Slicing. David Jong-hoon An. May 23, Abstract
Conditioned Slicing David Jong-hoon An May 23, 2007 Abstract Program debugging is often a tedious and difficult process that requires programmers to inspect complicated code to understand and analyze the
More informationConfiguration Management for Component-based Systems
Configuration Management for Component-based Systems Magnus Larsson Ivica Crnkovic Development and Research Department of Computer Science ABB Automation Products AB Mälardalen University 721 59 Västerås,
More informationClass Analysis for Testing of Polymorphism in Java Software
Class Analysis for Testing of Polymorphism in Java Software Atanas Rountev Ana Milanova Barbara G. Ryder Rutgers University, New Brunswick, NJ 08903, USA {rountev,milanova,ryder@cs.rutgers.edu Abstract
More informationLanguage-Independent
UCL 2013 wmjkucl 05/01/2013 Language-Independent low carb Program Slicing low fat 100% Academic, Jens Krinke no added RAs no added PhDs Joint work with Dave Binkley, Nicolas Gold, Mark Harman, Syed Islam,
More informationStudent Project: System Dependency Graphs in Earendil
University of Illinois at Chicago - Politecnico di Milano CS Master Program CS569 - High Performance Processors and Systems course Student Project: System Dependency Graphs in Earendil June 22, 2004 student:
More informationThe Role of Program Slicing in Ripple Effect Analysis
The Role of Program Slicing in Ripple Effect Analysis Yamin Wang, Wei-Tek Tsai, Xiaoping Chen, Sanjai Rayadurgam Department of Computer Science University of Minnesota Minneapolis, MN 55455 {wangy, tsai,
More informationThe Design of Whole-Program Analysis Tools
Copyright 1996 IEEE. Published in the Proceedings of the 18th International Conference on Software Engineering (ICSE-18), March 25-29, 1996, Berlin, Germany. Personal use of this material is permitted.
More informationLoop Bound Analysis based on a Combination of Program Slicing, Abstract Interpretation, and Invariant Analysis
Loop Bound Analysis based on a Combination of Program Slicing, Abstract Interpretation, and Invariant Analysis Andreas Ermedahl, Christer Sandberg, Jan Gustafsson, Stefan Bygde, and Björn Lisper Department
More informationStatic Slicing in the Presence of GOTO Statements. IBM T. J. Watson Research Center. P. O. Box 704. Yorktown Heights, NY
Static Slicing in the Presence of GOTO Statements Jong-Deok Choi Jeanne Ferrante* IBM T. J. Watson Research Center P. O. Box 704 Yorktown Heights, NY 10598 Abstract A static program slice is an extract
More informationControl-Flow-Graph-Based Aspect Mining
Control-Flow-Graph-Based Aspect Mining Jens Krinke FernUniversität in Hagen, Germany krinke@acm.org Silvia Breu NASA Ames Research Center, USA silvia.breu@gmail.com Abstract Aspect mining tries to identify
More informationAdvanced Topics Combining S. M. T
Advanced Topics Combining S. M. T 1 an empirical study of predicate dependence levels and trends Icse 2003 david binkley mark harman Or How to use slicing to measure testability 2 overview evolutionary
More informationImpact of Dependency Graph in Software Testing
Impact of Dependency Graph in Software Testing Pardeep Kaur 1, Er. Rupinder Singh 2 1 Computer Science Department, Chandigarh University, Gharuan, Punjab 2 Assistant Professor, Computer Science Department,
More informationRubicon: Scalable Bounded Verification of Web Applications
Joseph P. Near Research Statement My research focuses on developing domain-specific static analyses to improve software security and reliability. In contrast to existing approaches, my techniques leverage
More informationEvaluating Key Statements Analysis
Evaluating Key Statements Analysis David Binkley 1, Nicolas Gold, Mark Harman, Zheng Li and Kiarash Mahdavi King s College London CREST Centre Department of Computer Science Strand, London WC2R 2LS, England,
More informationPrinciples of Program Analysis. Lecture 1 Harry Xu Spring 2013
Principles of Program Analysis Lecture 1 Harry Xu Spring 2013 An Imperfect World Software has bugs The northeast blackout of 2003, affected 10 million people in Ontario and 45 million in eight U.S. states
More informationReview; questions Basic Analyses (2) Assign (see Schedule for links)
Class 2 Review; questions Basic Analyses (2) Assign (see Schedule for links) Representation and Analysis of Software (Sections -5) Additional reading: depth-first presentation, data-flow analysis, etc.
More informationCHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL
CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL 5.1 INTRODUCTION The survey presented in Chapter 1 has shown that Model based testing approach for automatic generation of test
More informationAchieving Goals through Architectural Design Decisions
Journal of Computer Science 6 (12): 1424-1429, 2010 ISSN 1549-3636 2010 Science Publications Achieving Goals through Architectural Design Decisions Lena Khaled Department of Software Engineering, Faculty
More informationOn the Accuracy of Forward Dynamic Slicing and its Effects on Software Maintenance
2014 14th IEEE International Working Conference on Source Code Analysis and Manipulation On the Accuracy of Forward Dynamic Slicing and its Effects on Software Maintenance Siyuan Jiang, Raul Santelices
More informationEindhoven University of Technology MASTER. Program slicing for Java 6 SE. de Jong, J.P. Award date: Link to publication
Eindhoven University of Technology MASTER Program slicing for Java 6 SE de Jong, J.P. Award date: 2011 Link to publication Disclaimer This document contains a student thesis (bachelor's or master's), as
More informationSpecialization Slicing
Specialization Slicing MIN AUNG, SUSAN HORWITZ, and RICH JOINER, University of Wisconsin THOMAS REPS, University of Wisconsin and GrammaTech, Inc. This paper defines a new variant of program slicing, called
More informationIntegration Testing. Conrad Hughes School of Informatics. Slides thanks to Stuart Anderson
Integration Testing Conrad Hughes School of Informatics Slides thanks to Stuart Anderson 19 February 2010 Software Testing: Lecture 10 1 Unit Test vs Integration Testing 1 The ideal in unit testing is
More informationBuilding Executable Union Slices using Conditioned Slicing
Building Executable Union Slices using Conditioned Slicing Sebastian Danicic Department of Computing Goldsmiths College, University of London, New Cross, London SE14 6NW, UK s.danicic@gold.ac.uk Andrea
More informationAbstract. 1. Introduction
Copyright 2000 IEEE. Published in the Proceedings of ICSM 2000, IEEE Computer Society Press, Los Alamitos, CA, ISBN 0-7695-0656-9, pp. 241-249. Personal use of this material is permitted. However, permission
More informationUnderstanding Object-Oriented Source Code from the Behavioural Perspective
Understanding Object-Oriented Source Code from the Behavioural Perspective Neil Walkinshaw, Marc Roper, Murray Wood Department of Computer and Information Sciences, The University of Strathclyde, Glasgow
More informationDEBUGGING: STATIC ANALYSIS
DEBUGGING: STATIC ANALYSIS WS 2017/2018 Martina Seidl Institute for Formal Models and Verification Deduction Techniques (1/2) basic idea: reasoning from abstract program to concrete program runs (program
More informationIncremental Redocumentation with Hypertext
Copyright 1997 IEEE. Published in the Proceedings of Euromicro'97, March 17-19, 1997 in Berlin, Germany, ISBN 0-8186-7892-5. Personal use of this material is permitted. However, permission to reprint/republish
More informationSoftware Architecture Recovery based on Dynamic Analysis
Software Architecture Recovery based on Dynamic Analysis Aline Vasconcelos 1,2, Cláudia Werner 1 1 COPPE/UFRJ System Engineering and Computer Science Program P.O. Box 68511 ZIP 21945-970 Rio de Janeiro
More informationSlicing. Rupesh Nasre. CS6843 Program Analysis IIT Madras Jan 2016
Slicing Rupesh Nasre. CS6843 Program Analysis IIT Madras Jan 2016 Outline Introduction and applications Application time static dynamic Direction forward backward 2 Definition A slice is a subset of program
More informationProgram Slicing. Keith Gallagher Computer Science Department University of Durham South Road Durham DH1 3LE, UK
Program Slicing Keith Gallagher Computer Science Department University of Durham South Road Durham DH1 3LE, UK k.b.gallagher@durham.ac.uk David Binkley King s College London CREST Centre Strand, London
More informationConstructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow
Constructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow Jang-Wu Jo 1 and Byeong-Mo Chang 2 1 Department of Computer Engineering Pusan University of Foreign Studies Pusan
More informationThe Use of Program Dependence Graphs in Software Engineering
- 1 - ABSTRACT The Use of Program Depence Graphs in Software Engineering This paper describes a language-indepent representation the depence graph and discusses how depence graphs, together with operations
More informationEffects of Pointers on Data Dependences
Effects of Pointers on Data Dependences Alessandro Orso, Saurabh Sinha, and Mary Jean Harrold College of Computing Georgia Institute of Technology 801 Atlantic Drive Atlanta, GA 30332 {orso,sinha,harrold@cc.gatech.edu
More informationHöllische Programmiersprachen Hauptseminar im Wintersemester 2014/2015 Determinism and reliability in the context of parallel programming
Höllische Programmiersprachen Hauptseminar im Wintersemester 2014/2015 Determinism and reliability in the context of parallel programming Raphael Arias Technische Universität München 19.1.2015 Abstract
More informationPointer Analysis in the Presence of Dynamic Class Loading. Hind Presented by Brian Russell
Pointer Analysis in the Presence of Dynamic Class Loading Martin Hirzel, Amer Diwan and Michael Hind Presented by Brian Russell Claim: First nontrivial pointer analysis dealing with all Java language features
More informationZjednodušení zdrojového kódu pomocí grafové struktury
Zjednodušení zdrojového kódu pomocí grafové struktury Ing. Tomáš Bublík 1. Introduction Nowadays, there is lot of programming languages. These languages differ in syntax, usage, and processing. Keep in
More informationProbabilistic Slicing for Predictive Impact Analysis
Probabilistic Slicing for Predictive Impact Analysis Raul Santelices and Mary Jean Harrold College of Computing, Georgia Institute of Technology E-mail: {raul harrold}@cc.gatech.edu ABSTRACT Program slicing
More informationSoftware Inspection Using CodeSurfer
1 Software Inspection Using CodeSurfer Paul Anderson, Tim Teitelbaum I. Introduction Software Inspection is a technique for detecting flaws in software before deployment. It was introduced by Fagan in
More informationA Slicing Method for Object-Oriented Programs Using Lightweight Dynamic Information
A Slicing Method for Object-Oriented Programs Using Lightweight Dynamic Information Fumiaki OHATA Ý, Kouya HIROSE Ý, Masato FUJII Ý and Katsuro INOUE Ý Ý Graduate School of Engineering Science, Osaka University
More informationSpeeding up Slicing. Thomas Reps, Susan Horwitz, Mooly Sagiv,, and Genevieve Rosay University of Wisconsin Madison
Speeding up Slicing Thomas Reps, Susan Horwitz, Mooly Sagiv,, and Genevieve Rosay University of Wisconsin Madison ABSTRACT rogram slicing is a fundamental operation for many software engineering tools.
More informationAn Eclipse Plug-in for Model Checking
An Eclipse Plug-in for Model Checking Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala Electrical Engineering and Computer Sciences University of California, Berkeley, USA Rupak Majumdar Computer Science
More informationInterprocedural Constant Propagation using Dependence Graphs and a Data-Flow Model
Interprocedural Constant Propagation using Dependence Graphs and a Data-Flow Model David Binkley Loyola College in Maryland 4501 North Charles Street, Baltimore Maryland 21210-2699, USA. binkley@cs.loyola.edu
More informationAn Empirical Study of Executable Concept Slice Size
An Empirical Study of Executable Concept Slice Size David Binkley Nicolas Gold, Mark Harman, Zheng Li and Kiarash Mahdavi Loyola College King s College London Baltimore MD Department of Computer Science
More informationCapturing Design Expertise in Customized Software Architecture Design Environments
Capturing Design Expertise in Customized Software Architecture Design Environments Robert T. Monroe School of Computer Science, Carnegie Mellon University, Pittsburgh, PA 15213 Abstract: Software architecture
More informationLightweight Control-Flow Instrumentation and Postmortem Analysis in Support of Debugging
Lightweight Control-Flow Instrumentation and Postmortem Analysis in Support of Debugging Peter Ohmann University of Wisconsin Madison ohmann@cs.wisc.edu Ben Liblit University of Wisconsin Madison liblit@cs.wisc.edu
More informationDependence-Cache Slicing: A Program Slicing Method Using Lightweight Dynamic Information
Dependence-Cache Slicing: A Program Slicing Method Using Lightweight Dynamic Information Tomonori Takada, Fumiaki Ohata, Katsuro Inoue Department of Informatics, Graduate School of Engineering Science,
More informationSlicing Aspect-Oriented Software
Slicing Aspect-Oriented Software Jianjun Zhao Department of Computer Science and Engineering Fukuoka Institute of Technology 3-30-1 Wajiro-Higashi, Higashi-ku, Fukuoka 811-0295, Japan zhao@cs.fit.ac.jp
More informationAdvanced Dependence Analysis for Software Testing, Debugging, and Evolution
Advanced Dependence Analysis for Software Testing, Debugging, and Evolution Raul Santelices, Haipeng Cai, Siyuan Jiang, and Yiji Zhang University of Notre Dame Notre Dame, Indiana, USA email: {rsanteli
More informationIntegration Testing. Unit Test vs Integration Testing 1. Unit Testing vs Integration Testing 2. Unit testing: isolation, stub/mock objects
Unit Test vs Testing 1 Testing Conrad Hughes School of Informatics Slides thanks to Stuart Anderson The ideal in unit testing is to isolate a single code unit and test it against its behavioural specification.
More informationThe Use of Program Dependence Graphs in Software Engineering
-1- The Use of Program Depence Graphs in Software Engineering Susan Horwitz and Thomas Reps University of Wisconsin ABSTRACT would arise at p when the is run on some initial state. This paper describes
More information