Predicting Runtime Data Dependences for Slice Inspection Prioritization

Size: px
Start display at page:

Download "Predicting Runtime Data Dependences for Slice Inspection Prioritization"

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 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 information

On the Accuracy of Forward Dynamic Slicing and its Effects on Software Maintenance

On 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 information

Class 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. 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 information

Efficiently Monitoring Data-Flow Test Coverage

Efficiently 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 information

Advanced Dependence Analysis for Software Testing, Debugging, and Evolution

Advanced 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 information

Understanding Data Dependences in the Presence of Pointers

Understanding 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 information

Barrier Slicing and Chopping

Barrier 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 information

Advanced Slicing of Sequential and Concurrent Programs

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 information

Effects of Pointers on Data Dependences

Effects 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 information

A Method Dependence Relations Guided Genetic Algorithm

A 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 information

OOPLs - call graph construction. Example executed calls

OOPLs - 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 information

An Efficient Algorithm for Computing all Program Static Slices

An 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 information

CodeSurfer/x86 A Platform for Analyzing x86 Executables

CodeSurfer/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 information

A 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 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 information

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version

Bisection 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 information

Dependence-Cache Slicing: A Program Slicing Method Using Lightweight Dynamic Information

Dependence-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 information

Lecture Notes: Pointer Analysis

Lecture 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 information

Automatically Locating software Errors using Interesting Value Mapping Pair (IVMP)

Automatically 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 information

residual residual program final result

residual 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 information

Improving Program Slicing with Dynamic Points-To Data

Improving 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 information

Improving Evolutionary Test Data Generation with the Aid of Symbolic Execution

Improving 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 information

Analysis of Object-oriented Programming Languages

Analysis 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 information

Control Flow Analysis with SAT Solvers

Control 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 information

Dynamic 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 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 information

Compiler Design. Fall Control-Flow Analysis. Prof. Pedro C. Diniz

Compiler 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 information

Precise Dynamic Slicing Algorithms

Precise 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 information

An 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 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 information

Pattern 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. 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 information

Hierarchical Pointer Analysis for Distributed Programs

Hierarchical 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 information

Alias 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 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 information

OPTIMIZED TEST GENERATION IN SEARCH BASED STRUCTURAL TEST GENERATION BASED ON HIGHER SERENDIPITOUS COLLATERAL COVERAGE

OPTIMIZED 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 information

A Vocabulary of Program Slicing-Based Techniques

A 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 information

Using Mutation to Automatically Suggest Fixes for Faulty Programs

Using 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 information

Static Program Analysis CS701

Static 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 information

Lecture Notes: Pointer Analysis

Lecture 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 information

Calvin Lin The University of Texas at Austin

Calvin 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 information

Lecture Notes on Alias Analysis

Lecture 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 information

Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages. Outline

Dimensions 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 information

Interprocedural Analysis. Motivation. Interprocedural Analysis. Function Calls and Pointers

Interprocedural 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 information

Dynamic Ensemble Construction via Heuristic Optimization

Dynamic 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 information

D-Optimal Designs. Chapter 888. Introduction. D-Optimal Design Overview

D-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 information

Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique

Empirical 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 information

Program Slicing in the Presence of Pointers

Program 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 information

Hash Table and Hashing

Hash 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 information

Interactive Fault Localization Using Test Information

Interactive 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 information

Evaluating the Evolution of a C Application

Evaluating 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 information

Taxonomy Dimensions of Complexity Metrics

Taxonomy 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 information

Module 4. Constraint satisfaction problems. Version 2 CSE IIT, Kharagpur

Module 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 information

Analytic Performance Models for Bounded Queueing Systems

Analytic 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 information

An Empirical Evaluation of Test Adequacy Criteria for Event-Driven Programs

An 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 information

Union Slices for Program Maintenance

Union 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 information

Image retrieval based on bag of images

Image 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 information

BINTEST Binary Search-based Test Case Generation

BINTEST 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 information

Scalable Isolation of Failure- Inducing Changes via Version Comparison

Scalable 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 information

A classic tool: slicing. CSE503: Software Engineering. Slicing, dicing, chopping. Basic ideas. Weiser s approach. Example

A 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 information

Data-Flow Based Detection of Loop Bounds

Data-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 information

Heuristic Algorithms for Multiconstrained Quality-of-Service Routing

Heuristic 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 information

Static verification of program running time

Static 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 information

HARNESSING CERTAINTY TO SPEED TASK-ALLOCATION ALGORITHMS FOR MULTI-ROBOT SYSTEMS

HARNESSING 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 information

Static Slicing of Threaded Programs

Static 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 information

Data Flow Analysis. CSCE Lecture 9-02/15/2018

Data 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 information

A Robust Wipe Detection Algorithm

A 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 information

Class Analysis for Testing of Polymorphism in Java Software

Class 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 information

Searching for Configurations in Clone Evaluation A Replication Study

Searching 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 information

Control-Flow Analysis

Control-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 information

Efficient Multiway Radix Search Trees

Efficient 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 information

Making Fill-in-Blank Program Problems for Learning Algorithm

Making 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 information

Simulation of Petri Nets in Rule-Based Expert System Shell McESE

Simulation 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 information

Midterm Wednesday Oct. 27, 7pm, room 142

Midterm 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 information

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Program 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 information

Cost Effective Dynamic Program Slicing

Cost 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 information

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

CMSC 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 information

COSC 311: ALGORITHMS HW1: SORTING

COSC 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 information

Program Slicing in the Presence of Pointers (Extended Abstract)

Program 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 information

Fault Localization with Graphical Models in Software Engineering Applications

Fault 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 information

Symbolic Evaluation/Execution

Symbolic 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 information

Efficient Program Slicing Algorithms for Measuring Functional Cohesion and Parallelism

Efficient 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 information

SFWR ENG 3S03: Software Testing

SFWR 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 information

Unified PMU Placement Algorithm for Power Systems

Unified 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 information

COVERAGE BASED TEST SUITE AUGMENTATION TECHNIQUES-A SURVEY

COVERAGE 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 information

A Program Model Based Regression Test Selection Technique for Object-Oriented Programs

A 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 information

CS125 : 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 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 information

Support for Automatic Refactoring of Business Logic

Support 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 information

A Propagation Engine for GCC

A 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 information

Project 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 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 information

Chapter 2. Related Work

Chapter 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 information

Conditional Elimination through Code Duplication

Conditional 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 information

Lecture Notes on Memory Layout

Lecture 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 information

Topics on Compilers Spring Semester Christine Wagner 2011/04/13

Topics 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 information

Application Testability for Fault Detection Using Dependency Structure Algorithm

Application 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 information

Type Checking and Type Equality

Type 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 information

An Efficient Method for Multiple Fault Diagnosis

An 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 information

Predicting Source Code Changes by Mining Revision History

Predicting 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 information

Bouncer: Securing Software by Blocking Bad Input

Bouncer: 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 information

Georgia 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 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 information

HW/SW Codesign. WCET Analysis

HW/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 information

Programming Language Processor Theory

Programming 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 information

2. Discovery of Association Rules

2. 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 information

An Enhanced Bloom Filter for Longest Prefix Matching

An 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 information

Lecture 16 Pointer Analysis

Lecture 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