Predicting Runtime Data Dependences for Slice Inspection Prioritization
|
|
- Douglas Jones
- 5 years ago
- Views:
Transcription
1 Predicting Runtime Data Dependences for Slice Inspection Prioritization Yiji Zhang and Raul Santelices University of Notre Dame Notre Dame, Indiana, USA {yzhang20 Abstract Data dependences are building blocks for techniques such as program slicing and, thus, are useful for program comprehension and debugging. Unfortunately, static analysis identifies many data dependences that are infeasible or unlikely to occur at runtime. Dynamic analysis, in contrast, does not identify all data dependences that can occur in a program. To address this inaccuracy, we present a new static analysis that predicts the likelihood of occurrence of data dependences to help engineers prioritize their inspection of those dependences. Our preliminary results indicate that our analysis, while having room for improvement, has a promising predictive power.. Introduction Program slicing [] [2] [3] is a well-known technique for software-engineering tasks such as program comprehension and debugging. To obtain a program slice and to perform other software-engineering tasks, data dependences among program statements [4] [5] must be computed. However, identifying all data dependences in a program accurately can be a daunting task because of the complexity of determining the feasibility of program paths (i.e., whether inputs exist that execute those paths) and the imprecision of alias (points-to) analyses [6] [7]. On one hand, static (source-code) analyses [] [2] play safe by identifying all candidate data dependences that may occur at runtime for some execution, but many candidates cannot really occur and the results are imprecise [8] [9]. On the other hand, dynamic (execution) analyses [3] [0] identify data dependences that do occur at runtime for a set of executions but do not reveal which other dependences occur in other. Statement a is data dependent on statement b if a writes to a variable v and b can read v before any other statement rewrites v. executions. To increase precision and reduce the size of slices, efforts have been made to combine static and dynamic aspects of slices [] [2] and to prune slices to focus the attention of developers [3] [4]. However, these approaches do not exploit the fact that some dependences are more likely to occur than others. To address this problem, we present a new model and static analysis that predicts the execution likelihood of data dependences to help developers prioritize their inspection. Our motivation and insight is that not all data dependences are equally likely to occur, so developers should prioritize their inspection efforts typically, on likely dependences over less-likely ones. The model uses structural factors and incorporates points-to analysis information. The analysis is purely static because developers need to know what notyet-observed dependences can really occur. 2 Another advantage of using static analysis is that no test cases or executions are needed to make predictions. We also present a study of the predictive power of our technique. For two subjects, we computed two rankings of data dependences, one ordered by our technique s predictions and the other randomly ordered (to represent current practice 3 ). We compared these rankings with the actual frequencies of occurrence of data dependences for a large number of executions. Our technique predicted relative data-dependence frequencies with an error that is a fraction of the error of the random approach. Despite some simplifying assumptions in our model and not relying on dynamic analysis, these results are very encouraging and promising for tasks that rely on data dependences. 2. Model and Technique A data dependence has two components: a definition (write) of a variable and a use (read) of that variable. 2. Dynamic analysis can still be a useful complement in the future. 3. To the best of our knowledge, no technique distinguishes data dependences by occurrence probability for slicing and other tasks.
2 A data dependence occurs (i.e., is covered) at runtime if the definition is reached and a definition-clear path (i.e., a path without a re-definition of the variable) to its use is then executed. If the variable is accessed via a pointer or reference, however, the dependence occurs only if the memory location where the variable resides is the same at the definition and the use and this location is not overwritten in between. Formally, our model defines the coverage probability of a data dependence (d, u), where d is the definition and u is the use, as P (d,u) = P d P du () where P d is the probability of reaching d from the entry of the program and P du is the probability of reaching u from d through some path in which the variable defined at d is the same one read at u and is not re-defined in between. The latter probability is P du = P p paths(d,u) covered(p) alias(d, u) s: s p s / {d,u} alias( def(s), d) (2) where paths(d,u) is the set of all paths between d and u, covered(p) states that path p is covered, alias(a,b) tells whether the memory location accessed defined or used at a and b is the same, s p states that statement s is in path p, and def(s) is the definition (if any) occurring at s. 4 The last three terms for s in the equation establish that the path p is definition-clear. Equations and 2 represent all necessary conditions for a data dependence to be covered. However, a direct implementation is impractical because of the large or even infinite number of paths in paths(d,u). For that reason, we use the following equation instead: ( ) succeeds(s, d) P du = P s P (alias(d,u)) reaches(s, u) succ(d) (3) where succ(d) is the set of all possible successor statements of definition statement d, succeeds(s, d) states that s is, of all successors, the successor of d that executes right after d, reaches(s, u) states that u is reached along some definition-clear path from s, and alias(d,u) is the event that the variable defined at d is the same one used at u. Equation 3 reduces the problem of computing P du to finding the probability of reaching u through some successor s of the definition and to finding separately the probability that the defined and used variables are aliased (i.e., are the same). 4. Without loss of generality, we assume that each statement in a program writes to at most one variable. The events in the disjunction in Equation 3 are exclusive: exactly one statement succeeds another in an execution and the reaches(s, u) events are independent from each other. Therefore, we can compute the probability P n u of reaching u from d or any statement n other than u via a non-empty definition-clear path as P n u = P = where ( succ(n) s succ(n) i = s i succ(n) succeeds(s, n) reaches(s, u) ) i ( P (succeeds(s j,n)) j= P (succeeds(s i,n)) P (reaches(s i,u)) P (succeeds(m, n)) = succ(n) (4) (5) Equation 5 reflects that, in its current form, our model makes the simplifying assumption that all successors of a statement n (e.g., both branches for an if statement) are equally likely to succeed n. Because, more generally, statement n can be the same as use u, the probability P (reaches(n,u)), also called P n,u for short, is if n = u; P (reaches(n,u))=p n,u = 0 if u / ru(n) (6) P n u if u ru(n) where ru(s) is the set of reachable uses [4] from n. The other component of P du in Equation 3 is the probability of aliasing. Our technique models that probability by using the points-to sets (found by a flowinsensitive points-to analysis [6]) of the pointers at the definition and the use and computing the probability that an element from one set is in both sets: P (alias(a,b)) = P 2Set(a) P 2Set(b) P 2Set(a) P 2Set(b) (7) where a and b are pointers and P2Set(r) is the pointsto set of pointer r. The alias(d,u) event in Equation 3 translates directly into alias(a,b) if a and b are the pointers used at d and u, respectively. Finally, in Equation, the probability P d of reaching the definition from the entry of the program is computed identically to P du by replacing d with the program entry and u with d. There are, however, two exceptions: aliasing is ignored (P (alias(d,u) is ) and, for P n,d in Equation 6 (d replaces u), d ru(s) is always true. Thus, value 0 is not an option for P n,d. This system of equations forms a data-flow problem [4] in which P n,d and P n,u are initialized, for 2
3 : main(int a,int b) { 2: int *p; 3: if (...) 4: p = &a; 5: else p = &b; 6: if (...) 7: swap (p, &a); else 8: if (...) 9: a = b; 0: else swap (&b, &a); : print (a,b); } 2: swap (int* p, int* p2) { 3: int temp = *p2; 4: *p2 = *p; 5: *p = temp; } Figure. Example program to illustrate technique all data dependences (d,u) and all statements n, to if n is d or u, respectively, or 0 otherwise. The technique solves this system by traversing the controlflow graph of the entire program [4] iteratively in post-order. Because the data-flow facts are continuous values (probabilities) the number of iterations needed to converge can be too large. Hence, our technique uses a parameter I (default 4) for the maximum number of times each back-edge [4] is used. When a back-edge e reaches its limit, the target statement of e is removed from the successor set of the source statement of e. 3. Example Figure presents an example we use to briefly illustrate our technique. The program takes a and b as inputs, manipulates the values of these variables based on unspecified conditions (denoted by... and irrelevant for our discussion) and prints the final values of a and b. The helper function swap is also listed. The program uses C-style pointers p, p, and p2. A data dependence in this program is (,4) for variable a, defined at line (the entry) and used at line 4 if the condition at line 3 is true. The probability P d of reaching line from the entry is trivially.0, and the probability P du of reaching the use from the definition is 0.5 because only one of the two successors of line 3 leads to the use (Equations 4, 5, and 6) and the aliasing probability is trivially.0 (Equations 3 and 7). Therefore, the predicted probability for data dependence (,4) for a is 0.5 (Equation ). Consider now dependences (,3) for a and (,4) for b. For both, the reaching probability P n,u (Equation 6) is 0.67 because 4 out of 6 paths call swap. However, the points-to set for p2 at line 3 is {a} and for p at 4 is {a, b}, so the alias probabilities are.0 and 0.5, respectively (Equation 7). Thus, the respective total probabilities are 0.67 ad Table. Subjects, data dependences, and tests subject description LOC data dep. tests Schedule task scheduler NanoXML XML parser The results suggest that (,3) for a is more likely to occur than (,3) for a, which is more likely than (,4) for b. To assess the accuracy of this prediction, suppose that each of the six paths in the program occurs with the same frequency. If so, (,3) for a has frequency 0.66 because it occurs in 4 out of 6 paths, (,3) for a has frequency 0.5 because it occurs in 3 out of 6 paths, and (,4) for b also has frequency 0.5 because it occurs in 3 out of 6 paths. Thus, the prediction is correct for (,3) for a and partly correct for the other two (,3) for a is in second place, although it shares that position with (,4) for b which, nevertheless, is in the last position as predicted (albeit shared). 4. Evaluation The goal of our evaluation was to assess the ability of our technique to predict the occurrence of data dependences. To achieve this goal, we formulated the following research questions: RQ: How accurate is the predicted ranking of data dependences with respect to runtime observations? RQ2: How accurate are those parts of the predicted ranking most likely to be examined first by developers? 4.. Experimental Setup We implemented the equations and technique of Section 2, which we call PrioDUA, as an extension of DUA-FORENSICS [5], our dependence analysis and monitoring toolset which uses an Andersen-style points-to analysis [6]. PrioDUA takes as input a Java program and outputs the data dependences ranked by decreasing probability of occurrence. Table describes our subjects, including the size in lines of code (LOC), the number of data dependences found statically by PrioDUA, and the number of test cases available. Schedule is the Java version of a subject from the Siemens suite and NanoXML is an XML parser. 5 We regard the test cases for these subjects as good representatives of their runtime behavior Methodology To assess the accuracy of PrioDUA for each subject, we measured how closely the ranking computed by PrioDUA, sorted by decreasing probability, predicts 5. Subjects available at the SIR repository: 3
4 average error average error 50% 45% 40% 35% 30% 25% 20% 5% 0% 5% 0% PrioDUA Random 50% 45% 40% 35% 30% 25% 20% 5% 0% 5% 0% PrioDUA Random fraction of ranking fraction of ranking Figure 2. Ranking errors for Schedule the runtime ranking of data dependences, sorted by decreasing frequency. The rank of a dependence is its position in the ranking, from (the most likely or frequent) to D, the number of data dependences in the program. For tied dependences, their rank is the average of the positions of the tied dependences. To obtain the runtime frequencies, we instrumented the subjects using DUA-FORENSICS to collect datadependence coverage, we ran the test suites, and we computed, for each dependence, the percentage of executions in which it occurred. We call dynamic ranking the ranking of dependences by runtime frequency. The accuracy of the PrioDUA ranking is inversely proportional to the error of the ranking. The error for each dependence in the PrioDUA ranking is in [0,): the distance between its position i in that ranking and its position j in the dynamic ranking (i.e., i j ), divided by D. The error for the PrioDUA ranking is the average of the errors of all dependences in it. PrioDUA is useful only if the error of its ranking is less than the error of randomly picking the dependences the Random method. We obtained the expected error of Random analytically as the average expected error of its dependences i, for all i in [,D]. For each dependence i, there are three cases. If dependence i has a dynamic rank less than i, its expected error is the middle point (i )/2 of range [,i), divided by D. If the dynamic rank is i, the error is 0. If the dynamic rank is greater than i, the error is (D i)/2 (the middle of range (i,d]) divided by D. Thus, the expected error for dependence i is the result of multiplying each of these errors by the probability of the corresponding case ((i )/D, /D, and (D i)/d, respectively) and adding these values Results and Analysis Figures 2 and 3 present, for the two subjects, the errors of PrioDUA and Random as percentages (vertical axes) for each fraction of the respective ranking from the top (horizontal axis). Consider Schedule, Figure 3. Ranking errors for NanoXML for example. For the top 5% of the PrioDUA ranking (fraction 0.05) the average error is 4%, for the top half (fraction 0.5) it is 9%, and for the entire ranking (fraction.0) the error is 2% RQ: Accuracy of the PrioDUA ranking. The graphs show that the average error of the entire PrioDUA ranking (at fraction.0) for Schedule is 20.9% and for NanoXML is 5.9%. Both errors are lower than the expected Random errors, which are 33.3%. Thus, for these subjects and test cases, and especially for NanoXML, PrioDUA provides a useful, if not good, static prediction of the relative frequencies of data dependences at runtime RQ2: Accuracy per fraction of the ranking. For Schedule, the average error for the top 5% of the PrioDUA ranking the dependences that developers would inspect first as the most likely ones to occur is the lowest at 4.4%. At the same point, the expected error for Random is 47.5%. For NanoXML, the errors for the top 5% of the rankings are similar. Thus, PrioDUA can be especially beneficial for predicting dependences that occur most frequently in reality. As the fraction of the ranking increases, the average error of PrioDUA tends to grow in Schedule and reaches 20.7% at the end. At the same time, the average error of Random decreases until the fraction is 75% because the Random error is less for dependences near the middle of that ranking, where the expected distance to the dynamic rank decreases. After 75%, that error starts to grow again as dependences tend to be, on average, farther from their dynamic position. For NanoXML, the PrioDUA error also grows initially, but, unlike for Schedule, the error falls dramatically after 5%. The reason is that PrioDUA predicts non-zero probabilities for only,742 data dependences (5.75% of the total), while only,480 data dependences occur at runtime most of them having a non-zero PrioDUA probability. 6 The proximity of 6. For Schedule, almost all data dependences occur at runtime. 4
5 these two numbers means that the PrioDUA rank and the dynamic rank for non-occurring dependences (the majority) are very close, so their errors are small. Thus, as the fraction in the graph of Figure 3 increases, the average error decreases more and more. In all, the results suggest that PrioDUA is not only better than randomly prioritizing data dependences, but also that PrioDUA is particularly strong at predicting dependences located near the top of the ranking. 5. Related Work Static analysis identifies all possible data dependences in a program [4] [5] but, often, many of those dependences are infeasible. Static slicing [] [2], in particular, finds all possible affecting or affected statements but, partly because of data-dependence infeasibility, it leads to large slices [8] [9]. Dynamic analysis, in contrast, finds data dependences that do occur at runtime [3] [0] but normally misses many other data dependences. To increase the precision of data-dependence analysis for slicing, many efforts have been made. Researchers have tried combining static and dynamic aspects of slices [] [2] and pruning slices to focus the attention of developers [3] [4]. These approaches, however, can still miss data dependences and do not consider the differences in likelihood or importance among data dependences. Such differences can lead to a more efficient use of data dependences. Researchers have also sought to address the imprecision of statically-computed data dependences caused by aliasing [6]. Path-sensitive approaches to points-to (alias) analysis can improve the precision of data dependences [5], whereas context- and object-sensitive points-to analysis [7] can improve that precision too, but with a focus on a specialized form of data dependence. None of these approaches, again, and unlike our work in this paper, distinguish data dependences by their likelihood, which would benefit developers. 6. Conclusion and Future Work We presented a new technique for predicting which data dependences are most likely to occur at runtime. The technique helps developers prioritize their inspection of data dependences in a slice and other applications. The model is a system of equations that, while having room for improvement, can prioritize data dependences effectively, as our results suggest. Interestingly, the predictions are especially good at the top of the ranking, where developers would look first. This work can improve not only program comprehension and debugging, but also impact analysis, testing, speculative parallelization, and other tasks. These predictions can be used effectively to prioritize slices. For example, we are currently exploring how to estimate the strength of statements in slices [6]. In the future, we plan to optimize our implementation and improve the precision of the model. For instance, we expect to predict more accurately the successor statements (Equation 5) and experiment with dynamic analysis to improve our predictions without bias. Using an improved model, we will extend our studies to more subjects for greater representativity and to evaluate performance. We also intend to study developers using these predictions for concrete tasks. References [] M. Weiser, Program slicing, IEEE Trans. on Softw. Eng., 0(4): , Jul [2] S. Horwitz, T. Reps, and D. Binkley, Interprocedural slicing using dependence graphs, ACM Trans. on Prog. Lang. and Systems, 2():26-60, Jan [3] B. Korel and J. Laski, Dynamic program slicing, Inf. Process. Lett., vol. 29, no. 3, pp , 988. [4] A. V. Aho, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques and Tools. A.-W., 986. [5] R. Santelices and M. J. Harrold, Efficiently monitoring data-flow test coverage, in Proc. of Int l Conf. on Automated Softw. Eng., Nov. 2007, pp [6] L. O. Andersen, Program analysis and specialization for the C programming language, Ph.D. Thesis, DIKU, U. of Copenhagen, May 994. [7] A. Milanova, A. Rountev, and B. G. Ryder, Parameterized object sensitivity for points-to analysis for java, ACM TOSEM, vol. 4, no., pp. 4, [8] C. Chambers, M. Mock, D. C. Atkinson, and S. J. Eggers, Program slicing with dynamic points-to sets, IEEE TSE, vol. 3, no. 8, pp , [9] D. Binkley, N. Gold, and M. Harman, An empirical study of static program slice size, ACM TOSEM, vol. 6, no. 2, [0] D. Binkley, S. Danicic, T. Gyimóthy, M. Harman, A. Kiss, and B. Korel, Theoretical foundations of dynamic program slicing, Theoretical Computer Science, vol. 360, no. 3, pp. 23 4, [] G. Canfora, A. Cimitile, and A. D. Lucia, Conditioned program slicing, Information and Software Technology, vol. 40, no. -2, pp , Nov [2] J. Krinke, Effects of context on program slicing, J. Syst. Softw., vol. 79, no. 9, pp , [3] X. Zhang, N. Gupta, and R. Gupta, Pruning dynamic slices with confidence, in PLDI, 2006, pp [4] M. Sridharan, S. J. Fink, and R. Bodik, Thin slicing, in Proc. of PLDI, Jun. 2007, pp [5] H. Pande, W. Landi, and B. Ryder, Interprocedural def-use associations for C systems with single level pointers, IEEE TSE, vol. 20, no. 5, pp , 994. [6] R. Santelices and M. J. Harrold, Probabilistic slicing for predictive impact analysis, Tech. Rep. GIT-CERCS- 0-0, Georgia Inst. of Tech., pp. 0, Nov
Probabilistic 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 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 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 informationEfficiently Monitoring Data-Flow Test Coverage
Efficiently Monitoring Data-Flow Test Coverage Raul Santelices Georgia Institute of Technology College of Computing Atlanta, Georgia, USA 30332 raul@cc.gatech.edu Mary Jean Harrold Georgia Institute of
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 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 informationBarrier Slicing and Chopping
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
More informationAdvanced 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 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 informationA Method Dependence Relations Guided Genetic Algorithm
A Method Dependence Relations Guided Genetic Algorithm Ali Aburas and Alex Groce Oregon State University, Corvallis OR 97330, USA Abstract. Search based test generation approaches have already been shown
More informationOOPLs - call graph construction. Example executed calls
OOPLs - call graph construction Compile-time analysis of reference variables and fields Problem: how to resolve virtual function calls? Need to determine to which objects (or types of objects) a reference
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 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 METRIC BASED EVALUATION OF TEST CASE PRIORITATION TECHNIQUES- HILL CLIMBING, REACTIVE GRASP AND TABUSEARCH
A METRIC BASED EVALUATION OF TEST CASE PRIORITATION TECHNIQUES- HILL CLIMBING, REACTIVE GRASP AND TABUSEARCH 1 M.Manjunath, 2 N.Backiavathi 1 PG Scholar, Department of Information Technology,Jayam College
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 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 informationLecture Notes: Pointer Analysis
Lecture Notes: Pointer Analysis 15-819O: Program Analysis Jonathan Aldrich jonathan.aldrich@cs.cmu.edu Lecture 9 1 Motivation for Pointer Analysis In programs with pointers, program analysis can become
More informationAutomatically Locating software Errors using Interesting Value Mapping Pair (IVMP)
71 Automatically Locating software Errors using Interesting Value Mapping Pair (IVMP) Ajai Kumar 1, Anil Kumar 2, Deepti Tak 3, Sonam Pal 4, 1,2 Sr. Lecturer, Krishna Institute of Management & Technology,
More informationresidual residual program final result
C-Mix: Making Easily Maintainable C-Programs run FAST The C-Mix Group, DIKU, University of Copenhagen Abstract C-Mix is a tool based on state-of-the-art technology that solves the dilemma of whether to
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 informationImproving Evolutionary Test Data Generation with the Aid of Symbolic Execution
Improving Evolutionary Test Data Generation with the Aid of Symbolic Execution M. Papadakis 1 and N. Malevris 1 Abstract Recently, search based techniques have received great attention as a means of automating
More informationAnalysis of Object-oriented Programming Languages
Analysis of Object-oriented Programming Languages Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ OOAnalysis, Dagstuhl 2/03, BG Ryder 1 Outline Why
More informationControl Flow Analysis with SAT Solvers
Control Flow Analysis with SAT Solvers Steven Lyde, Matthew Might University of Utah, Salt Lake City, Utah, USA Abstract. Control flow analyses statically determine the control flow of programs. This is
More informationDynamic Points-To Sets: A Comparison with Static Analyses and Potential Applications in Program Understanding and Optimization
Dynamic Points-To Sets: A Comparison with Static Analyses and Potential Applications in Program Understanding and Optimization Markus Mock *, Manuvir Das +, Craig Chambers *, and Susan J. Eggers * * Department
More informationCompiler Design. Fall Control-Flow Analysis. Prof. Pedro C. Diniz
Compiler Design Fall 2015 Control-Flow Analysis Sample Exercises and Solutions Prof. Pedro C. Diniz USC / Information Sciences Institute 4676 Admiralty Way, Suite 1001 Marina del Rey, California 90292
More informationPrecise Dynamic Slicing Algorithms
Precise Dynamic Slicing Algorithms Xiangyu Zhang Rajiv Gupta The University of Arizona Dept. of Computer Science Tucson, Arizona 85721 Youtao Zhang The Univ. of Texas at Dallas Dept. of Computer Science
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 informationPattern Mining. Knowledge Discovery and Data Mining 1. Roman Kern KTI, TU Graz. Roman Kern (KTI, TU Graz) Pattern Mining / 42
Pattern Mining Knowledge Discovery and Data Mining 1 Roman Kern KTI, TU Graz 2016-01-14 Roman Kern (KTI, TU Graz) Pattern Mining 2016-01-14 1 / 42 Outline 1 Introduction 2 Apriori Algorithm 3 FP-Growth
More informationHierarchical Pointer Analysis for Distributed Programs
Hierarchical Pointer Analysis for Distributed Programs Amir Kamil Computer Science Division, University of California, Berkeley kamil@cs.berkeley.edu April 14, 2006 1 Introduction Many distributed, parallel
More informationAlias Analysis. Last time Interprocedural analysis. Today Intro to alias analysis (pointer analysis) CS553 Lecture Alias Analysis I 1
Alias Analysis Last time Interprocedural analysis Today Intro to alias analysis (pointer analysis) CS553 Lecture Alias Analysis I 1 Aliasing What is aliasing? When two expressions denote the same mutable
More informationOPTIMIZED TEST GENERATION IN SEARCH BASED STRUCTURAL TEST GENERATION BASED ON HIGHER SERENDIPITOUS COLLATERAL COVERAGE
Volume 115 No. 7 2017, 549-554 ISSN: 1311-8080 (printed version); ISSN: 1314-3395 (on-line version) url: http://www.ijpam.eu ijpam.eu OPTIMIZED TEST GENERATION IN SEARCH BASED STRUCTURAL TEST GENERATION
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 informationUsing Mutation to Automatically Suggest Fixes for Faulty Programs
2010 Third International Conference on Software Testing, Verification and Validation Using Mutation to Automatically Suggest Fixes for Faulty Programs Vidroha Debroy and W. Eric Wong Department of Computer
More informationStatic Program Analysis CS701
Static Program Analysis CS701 Thomas Reps [Based on notes taken by Aditya Venkataraman on Oct 6th, 2015] Abstract This lecture introduces the area of static program analysis. We introduce the topics to
More informationLecture Notes: Pointer Analysis
Lecture Notes: Pointer Analysis 17-355/17-665/17-819: Program Analysis (Spring 2019) Jonathan Aldrich aldrich@cs.cmu.edu 1 Motivation for Pointer Analysis In the spirit of extending our understanding of
More informationCalvin Lin The University of Texas at Austin
Interprocedural Analysis Last time Introduction to alias analysis Today Interprocedural analysis March 4, 2015 Interprocedural Analysis 1 Motivation Procedural abstraction Cornerstone of programming Introduces
More informationLecture Notes on Alias Analysis
Lecture Notes on Alias Analysis 15-411: Compiler Design André Platzer Lecture 26 1 Introduction So far we have seen how to implement and compile programs with pointers, but we have not seen how to optimize
More informationDimensions of Precision in Reference Analysis of Object-oriented Programming Languages. Outline
Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ Research supported,
More informationInterprocedural Analysis. Motivation. Interprocedural Analysis. Function Calls and Pointers
Interprocedural Analysis Motivation Last time Introduction to alias analysis Today Interprocedural analysis Procedural abstraction Cornerstone of programming Introduces barriers to analysis Example x =
More informationDynamic Ensemble Construction via Heuristic Optimization
Dynamic Ensemble Construction via Heuristic Optimization Şenay Yaşar Sağlam and W. Nick Street Department of Management Sciences The University of Iowa Abstract Classifier ensembles, in which multiple
More informationD-Optimal Designs. Chapter 888. Introduction. D-Optimal Design Overview
Chapter 888 Introduction This procedure generates D-optimal designs for multi-factor experiments with both quantitative and qualitative factors. The factors can have a mixed number of levels. For example,
More informationEmpirical Evaluation of the Tarantula Automatic Fault-Localization Technique
Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique James A. Jones and Mary Jean Harrold College of Computing, Georgia Institute of Technology Atlanta, Georgia, U.S.A. jjones@cc.gatech.edu,
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 informationHash Table and Hashing
Hash Table and Hashing The tree structures discussed so far assume that we can only work with the input keys by comparing them. No other operation is considered. In practice, it is often true that an input
More informationInteractive Fault Localization Using Test Information
Hao D, Zhang L, Xie T et al. Interactive fault localization using test information. JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY 24(5): 962 974 Sept. 2009 Interactive Fault Localization Using Test Information
More informationEvaluating the Evolution of a C Application
Evaluating the Evolution of a C Application Elizabeth Burd, Malcolm Munro Liz.Burd@dur.ac.uk The Centre for Software Maintenance University of Durham South Road Durham, DH1 3LE, UK Abstract This paper
More informationTaxonomy Dimensions of Complexity Metrics
96 Int'l Conf. Software Eng. Research and Practice SERP'15 Taxonomy Dimensions of Complexity Metrics Bouchaib Falah 1, Kenneth Magel 2 1 Al Akhawayn University, Ifrane, Morocco, 2 North Dakota State University,
More informationModule 4. Constraint satisfaction problems. Version 2 CSE IIT, Kharagpur
Module 4 Constraint satisfaction problems Lesson 10 Constraint satisfaction problems - II 4.5 Variable and Value Ordering A search algorithm for constraint satisfaction requires the order in which variables
More informationAnalytic Performance Models for Bounded Queueing Systems
Analytic Performance Models for Bounded Queueing Systems Praveen Krishnamurthy Roger D. Chamberlain Praveen Krishnamurthy and Roger D. Chamberlain, Analytic Performance Models for Bounded Queueing Systems,
More informationAn Empirical Evaluation of Test Adequacy Criteria for Event-Driven Programs
An Empirical Evaluation of Test Adequacy Criteria for Event-Driven Programs Jaymie Strecker Department of Computer Science University of Maryland College Park, MD 20742 November 30, 2006 Abstract In model-based
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 informationImage retrieval based on bag of images
University of Wollongong Research Online Faculty of Informatics - Papers (Archive) Faculty of Engineering and Information Sciences 2009 Image retrieval based on bag of images Jun Zhang University of Wollongong
More informationBINTEST Binary Search-based Test Case Generation
BINTEST Binary Search-based Test Case Generation Sami Beydeda, Volker Gruhn University of Leipzig Department of Computer Science Chair of Applied Telematics / e-business Klostergasse 3 04109 Leipzig, Germany
More informationScalable Isolation of Failure- Inducing Changes via Version Comparison
Scalable Isolation of Failure- Inducing Changes via Version Comparison Mohammadreza Ghanavati, Artur Andrzejak, Zhen Dong Heidelberg University artur@uni-hd.de http://pvs.ifi.uni-heidelberg.de/ 1 Debugging
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 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 informationHeuristic Algorithms for Multiconstrained Quality-of-Service Routing
244 IEEE/ACM TRANSACTIONS ON NETWORKING, VOL 10, NO 2, APRIL 2002 Heuristic Algorithms for Multiconstrained Quality-of-Service Routing Xin Yuan, Member, IEEE Abstract Multiconstrained quality-of-service
More informationStatic verification of program running time
Static verification of program running time CIS 673 course project report Caleb Stanford December 2016 Contents 1 Introduction 2 1.1 Total Correctness is Not Enough.................................. 2
More informationHARNESSING CERTAINTY TO SPEED TASK-ALLOCATION ALGORITHMS FOR MULTI-ROBOT SYSTEMS
HARNESSING CERTAINTY TO SPEED TASK-ALLOCATION ALGORITHMS FOR MULTI-ROBOT SYSTEMS An Undergraduate Research Scholars Thesis by DENISE IRVIN Submitted to the Undergraduate Research Scholars program at Texas
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 informationData Flow Analysis. CSCE Lecture 9-02/15/2018
Data Flow Analysis CSCE 747 - Lecture 9-02/15/2018 Data Flow Another view - program statements compute and transform data So, look at how that data is passed through the program. Reason about data dependence
More informationA Robust Wipe Detection Algorithm
A Robust Wipe Detection Algorithm C. W. Ngo, T. C. Pong & R. T. Chin Department of Computer Science The Hong Kong University of Science & Technology Clear Water Bay, Kowloon, Hong Kong Email: fcwngo, tcpong,
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 informationSearching for Configurations in Clone Evaluation A Replication Study
Searching for Configurations in Clone Evaluation A Replication Study Chaiyong Ragkhitwetsagul 1, Matheus Paixao 1, Manal Adham 1 Saheed Busari 1, Jens Krinke 1 and John H. Drake 2 1 University College
More informationControl-Flow Analysis
Control-Flow Analysis Dragon book [Ch. 8, Section 8.4; Ch. 9, Section 9.6] Compilers: Principles, Techniques, and Tools, 2 nd ed. by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jerey D. Ullman on reserve
More informationEfficient Multiway Radix Search Trees
Appeared in Information Processing Letters 60, 3 (Nov. 11, 1996), 115-120. Efficient Multiway Radix Search Trees Úlfar Erlingsson a, Mukkai Krishnamoorthy a, T. V. Raman b a Rensselaer Polytechnic Institute,
More informationMaking Fill-in-Blank Program Problems for Learning Algorithm
Proc. (Vo.1) of International Conference on Computers in Education 99 (ICCE '99), pp.776-783 (1999). Making Fill-in-Blank Program Problems for Learning Algorithm Akihiro Kashihara, Atsuhiro Terai, and
More informationSimulation of Petri Nets in Rule-Based Expert System Shell McESE
Abstract Simulation of Petri Nets in Rule-Based Expert System Shell McESE F. Franek and I. Bruha Dept of Computer Science and Systems, McMaster University Hamilton, Ont., Canada, L8S4K1 Email: {franya
More informationMidterm Wednesday Oct. 27, 7pm, room 142
Regression Testing Midterm Wednesday Oct. 27, 7pm, room 142 In class, closed book eam Includes all the material covered up (but not including) symbolic eecution Need to understand the concepts, know the
More informationProgram Partitioning - A Framework for Combining Static and Dynamic Analysis
Program Partitioning - A Framework for Combining Static and Dynamic Analysis Pankaj Jalote, Vipindeep V, Taranbir Singh, Prateek Jain Department of Computer Science and Engineering Indian Institute of
More informationCost Effective Dynamic Program Slicing
Cost Effective Dynamic Program Slicing Xiangyu Zhang Rajiv Gupta Department of Computer Science The University of Arizona Tucson, Arizona 87 {xyzhang,gupta}@cs.arizona.edu ABSTRACT Although dynamic program
More informationCMSC 132: OBJECT-ORIENTED PROGRAMMING II
CMSC 132: OBJECT-ORIENTED PROGRAMMING II Program Testing Department of Computer Science University of Maryland, College Park Debugging Is Harder Than Coding! Debugging is twice as hard as writing the code
More informationCOSC 311: ALGORITHMS HW1: SORTING
COSC 311: ALGORITHMS HW1: SORTIG Solutions 1) Theoretical predictions. Solution: On randomly ordered data, we expect the following ordering: Heapsort = Mergesort = Quicksort (deterministic or randomized)
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 informationFault Localization with Graphical Models in Software Engineering Applications
RESEARCH INVENTY: International Journal of Engineering and Science ISSN: 2278-4721, Vol. 1, Issue 3 (Sept 2012), PP 26-31 www.researchinventy.com Fault Localization with Graphical Models in Software Engineering
More informationSymbolic Evaluation/Execution
Symbolic Evaluation/Execution Reading Assignment *R.W. Floyd, "Assigning Meaning to Programs, Symposium on Applied Mathematics, 1967, pp. 19-32 (Appeared as volume 19 of Mathematical Aspects of Computer
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 informationSFWR ENG 3S03: Software Testing
(Slide 1 of 52) Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Acknowledgments: Material based on [?] Techniques (Slide 2 of 52) 1 2 3 4 Empirical
More informationUnified PMU Placement Algorithm for Power Systems
Unified PMU Placement Algorithm for Power Systems Kunal Amare, and Virgilio A. Centeno Bradley Department of Electrical and Computer Engineering, Virginia Tech Blacksburg, VA-24061, USA. Anamitra Pal Network
More informationCOVERAGE BASED TEST SUITE AUGMENTATION TECHNIQUES-A SURVEY
COVERAGE BASED TEST SUITE AUGMENTATION TECHNIQUES-A SURVEY ABSTRACT Bharti Suri 1, Prabhneet Nayyar 2 1 Assistant Professor, USIT Guru Gobind Singh Indraprastha University, Delhi, INDIA bhartisuri@gmail.com
More informationA Program Model Based Regression Test Selection Technique for Object-Oriented Programs
A Program Model Based Regression Test Selection Technique for Object-Oriented Programs Nitesh Chouhan Dr. Maitreyee Dutta Dr. Mayank Singh Assistant Professor Associate Professor Associate Professor Department
More informationCS125 : Introduction to Computer Science. Lecture Notes #38 and #39 Quicksort. c 2005, 2003, 2002, 2000 Jason Zych
CS125 : Introduction to Computer Science Lecture Notes #38 and #39 Quicksort c 2005, 2003, 2002, 2000 Jason Zych 1 Lectures 38 and 39 : Quicksort Quicksort is the best sorting algorithm known which is
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 informationA Propagation Engine for GCC
A Propagation Engine for GCC Diego Novillo Red Hat Canada dnovillo@redhat.com May 1, 2005 Abstract Several analyses and transformations work by propagating known values and attributes throughout the program.
More informationProject and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi
Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Lecture - 8 Consistency and Redundancy in Project networks In today s lecture
More informationChapter 2. Related Work
Chapter 2 Related Work There are three areas of research highly related to our exploration in this dissertation, namely sequential pattern mining, multiple alignment, and approximate frequent pattern mining.
More informationConditional Elimination through Code Duplication
Conditional Elimination through Code Duplication Joachim Breitner May 27, 2011 We propose an optimizing transformation which reduces program runtime at the expense of program size by eliminating conditional
More informationLecture Notes on Memory Layout
Lecture Notes on Memory Layout 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 11 1 Introduction In order to understand how programs work, we can consider the functions,
More informationTopics on Compilers Spring Semester Christine Wagner 2011/04/13
Topics on Compilers Spring Semester 2011 Christine Wagner 2011/04/13 Availability of multicore processors Parallelization of sequential programs for performance improvement Manual code parallelization:
More informationApplication Testability for Fault Detection Using Dependency Structure Algorithm
Application Testability for Fault Detection Using Dependency Structure Algorithm 1 Shah Ubaid Nisar, 2 T. S. Shiny. Angel 1 M.Tech Student, 2 Assistant Professor (O.G) Department of Software Engineering,
More informationType Checking and Type Equality
Type Checking and Type Equality Type systems are the biggest point of variation across programming languages. Even languages that look similar are often greatly different when it comes to their type systems.
More informationAn Efficient Method for Multiple Fault Diagnosis
An Efficient Method for Multiple Fault Diagnosis Khushboo Sheth Department of Electrical and Computer Engineering Auburn University, Auburn, AL Abstract: In this paper, failing circuits are analyzed and
More informationPredicting Source Code Changes by Mining Revision History
Predicting Source Code Changes by Mining Revision History Annie T.T. Ying*+, Gail C. Murphy*, Raymond Ng* Dep. of Computer Science, U. of British Columbia* {aying,murphy,rng}@cs.ubc.ca Mark C. Chu-Carroll+
More informationBouncer: Securing Software by Blocking Bad Input
Bouncer: Securing Software by Blocking Bad Input Sathish Kuppuswamy & Yufei Fu Department of computer Science University of Texas at Dallas March 21 st, 2012 Outline Bouncer Existing Techniques Bouncer
More informationGeorgia Institute of Technology College of Engineering School of Electrical and Computer Engineering
Georgia Institute of Technology College of Engineering School of Electrical and Computer Engineering ECE 8832 Summer 2002 Floorplanning by Simulated Annealing Adam Ringer Todd M c Kenzie Date Submitted:
More informationHW/SW Codesign. WCET Analysis
HW/SW Codesign WCET Analysis 29 November 2017 Andres Gomez gomeza@tik.ee.ethz.ch 1 Outline Today s exercise is one long question with several parts: Basic blocks of a program Static value analysis WCET
More informationProgramming Language Processor Theory
Programming Language Processor Theory Munehiro Takimoto Course Descriptions Method of Evaluation: made through your technical reports Purposes: understanding various theories and implementations of modern
More information2. Discovery of Association Rules
2. Discovery of Association Rules Part I Motivation: market basket data Basic notions: association rule, frequency and confidence Problem of association rule mining (Sub)problem of frequent set mining
More informationAn Enhanced Bloom Filter for Longest Prefix Matching
An Enhanced Bloom Filter for Longest Prefix Matching Gahyun Park SUNY-Geneseo Email: park@geneseo.edu Minseok Kwon Rochester Institute of Technology Email: jmk@cs.rit.edu Abstract A Bloom filter is a succinct
More informationLecture 16 Pointer Analysis
Pros and Cons of Pointers Lecture 16 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers
More information