Font Size: a A A

Static and dynamic analysis of progams that contain arbitrary interprocedural control flow

Posted on:2003-05-16Degree:Ph.DType:Dissertation
University:Georgia Institute of TechnologyCandidate:Sinha, SaurabhFull Text:PDF
GTID:1468390011985634Subject:Computer Science
Abstract/Summary:
Program-analysis techniques, such as control-flow analysis, control-dependence analysis, and program slicing, are useful for automating a variety of software-engineering tasks, including test-coverage analysis, test-data generation, execution profiling, debugging, and program comprehension. Traditional techniques for performing these analyses compute inaccurate results in the presence of a class of control structures that cause arbitrary interprocedural control flow. Examples of such control structures include exception-handling constructs and halt statements; they occur in widely used languages, such as C, Java, C++, and Ada. To be applicable to programs that contain such constructs, analysis techniques must account for the effects of arbitrary interprocedural control flow. Failure to do so can cause analysis results to be inaccurate, which further affects the software-engineering tasks that are based on those analyses. For example, failure to incorporate the effects of exception-handling constructs can cause a slicing algorithm to exclude necessary statements from the slice; this in turn affects tasks, such as debugging, that use slicing.; Our studies indicate that control structures such as halts and exception-handling constructs can occur frequently in practice. This research investigates the effects of occurrences of halt statements and exception-handling constructs on static and dynamic program-analysis techniques. These constructs create call sites where control may not return from the called procedures; in doing so, the constructs affect analysis techniques in similar ways. The research shows how existing algorithms—designed to analyze programs in which control necessarily returns to call sites—compute inaccurate results in the presence of halts and exceptions. This inaccuracy of the results limits the applicability of the techniques to a large class of programs.; In this research, we develop new representations and algorithms to perform control-flow analysis, control-dependence analysis, static program slicing, and structural testing. We evaluate the algorithms and representations empirically for effectiveness and efficiency.; We develop intraprocedural and interprocedural control-flow representations to accommodate exception-handling constructs. The representations model the control flow caused by flow of exceptions within and across procedures.; We develop definitions, algorithms, and representations for computing interprocedural control dependences in the presence of halts and exception-handling constructs. Using C and Java subjects, we present empirical data to illustrate the efficiency and effectiveness of our algorithms—over an existing algorithm—in computing interprocedural control dependences.; We extend an existing slicing technique to compute interprocedural slices in the presence of halt statements and exception-handling constructs. Using a set of C subjects, we present empirical data to illustrate the effectiveness of our approach in computing interprocedural slices in the presence of halt statements.; Finally, we develop a hierarchy of test-selection and test-adequacy criteria that can be used to test and understand exception-handling constructs. We also identify conditions under which the relationships among the criteria collapse, and present empirical results to show the occurrences of these conditions in practice.
Keywords/Search Tags:Interprocedural control, Flow, Exception-handling constructs, Present empirical, Techniques, Results, Slicing, Static
Related items