The Experts below are selected from a list of 3610734 Experts worldwide ranked by ideXlab platform

Atanas Rountev - One of the best experts on this subject based on the ideXlab platform.

  • static control flow Analysis of user driven callbacks in android applications
    International Conference on Software Engineering, 2015
    Co-Authors: Shengqian Yang, Haowei Wu, Yan Wang, Atanas Rountev
    Abstract:

    Android software presents many challenges for static program Analysis. In this work we focus on the fundamental problem of static Control-Flow Analysis. Traditional analyses cannot be directly applied to Android because the applications are framework-based and event-driven. We consider user-event-driven components and the related sequences of callbacks from the Android framework to the application code, both for lifecycle callbacks and for event handler callbacks. We propose a program representation that captures such callback sequences. This representation is built using context-sensitive static Analysis of callback methods. The Analysis performs graph reachability by traversing context-compatible interprocedural Control-Flow paths and identifying statements that may trigger callbacks, as well as paths that avoid such statements. We also develop a client Analysis that builds a static model of the application's GUI. Experimental evaluation shows that this context-sensitive approach leads to substantial precision improvements, while having practical cost.

  • ICSE (1) - Static Control-Flow Analysis of user-driven callbacks in Android applications
    2015 IEEE ACM 37th IEEE International Conference on Software Engineering, 2015
    Co-Authors: Shengqian Yang, Yan Wang, Dacong Yan, Atanas Rountev
    Abstract:

    Android software presents many challenges for static program Analysis. In this work we focus on the fundamental problem of static Control-Flow Analysis. Traditional analyses cannot be directly applied to Android because the applications are framework-based and event-driven. We consider user-event-driven components and the related sequences of callbacks from the Android framework to the application code, both for lifecycle callbacks and for event handler callbacks. We propose a program representation that captures such callback sequences. This representation is built using context-sensitive static Analysis of callback methods. The Analysis performs graph reachability by traversing context-compatible interprocedural Control-Flow paths and identifying statements that may trigger callbacks, as well as paths that avoid such statements. We also develop a client Analysis that builds a static model of the application's GUI. Experimental evaluation shows that this context-sensitive approach leads to substantial precision improvements, while having practical cost.

  • PASTE - Static Control-Flow Analysis for reverse engineering of UML sequence diagrams
    The 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering - PASTE '05, 2005
    Co-Authors: Atanas Rountev, Olga Volgin, Miriam Reddoch
    Abstract:

    UML sequence diagrams are commonly used to represent the interactions among collaborating objects. Reverse-engineered sequence diagrams are constructed from existing code, and have a variety of uses in software development, maintenance, and testing. In static Analysis for such reverse engineering, an open question is how to represent the intraprocedural flow of control from the code using the Control-Flow primitives of UML 2.0. We propose simple UML extensions that are necessary to capture general flow of control. The paper describes an algorithm for mapping a reducible exception-free intraprocedural Control-Flow graph to UML, using the proposed extensions. We also investigate the inherent tradeoffs of different problem solutions, and discuss their implications for reverse-engineering tools. This work is a substantial step towards providing high-quality tool support for effective and efficient reverse engineering of UML sequence diagrams.

Miriam Reddoch - One of the best experts on this subject based on the ideXlab platform.

  • PASTE - Static Control-Flow Analysis for reverse engineering of UML sequence diagrams
    The 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering - PASTE '05, 2005
    Co-Authors: Atanas Rountev, Olga Volgin, Miriam Reddoch
    Abstract:

    UML sequence diagrams are commonly used to represent the interactions among collaborating objects. Reverse-engineered sequence diagrams are constructed from existing code, and have a variety of uses in software development, maintenance, and testing. In static Analysis for such reverse engineering, an open question is how to represent the intraprocedural flow of control from the code using the Control-Flow primitives of UML 2.0. We propose simple UML extensions that are necessary to capture general flow of control. The paper describes an algorithm for mapping a reducible exception-free intraprocedural Control-Flow graph to UML, using the proposed extensions. We also investigate the inherent tradeoffs of different problem solutions, and discuss their implications for reverse-engineering tools. This work is a substantial step towards providing high-quality tool support for effective and efficient reverse engineering of UML sequence diagrams.

Thomas Jensen - One of the best experts on this subject based on the ideXlab platform.

  • Control-Flow Analysis of function calls and returns by abstract interpretation
    Information and Computation, 2012
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    Abstract interpretation techniques are used to derive a Control-Flow Analysis for a simple higher-order functional language. The Analysis approximates the interprocedural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. The Analysis is systematically derived by abstract interpretation of a stack-based abstract machine using a series of Galois connections. We prove that the Analysis is equivalent to an Analysis obtained by first transforming the program into continuation-passing style and then performing control flow Analysis of the transfored program. We then show how the Analysis induces an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based CFA from abstract interpretation principles.

  • Control-Flow Analysis of function calls and returns by abstract interpretation
    Information and Computation, 2012
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    Abstract interpretation techniques are used to derive a Control-Flow Analysis for a simple higher-order functional language. The Analysis approximates the interprocedural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, the Analysis computes for each expression an abstract call-stack, effectively approximating where function calls return. The Analysis is systematically derived by abstract interpretation of the stack-based C"aEK abstract machine of Flanagan et al. using a series of Galois connections. We prove that the Analysis is equivalent to an Analysis obtained by first transforming the program into continuation-passing style and then performing control flow Analysis of the transformed program. We then show how the Analysis induces an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based CFA from abstract interpretation principles.

  • Control-Flow Analysis of function call and returns by abstract interpretation
    2009
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    We derive a Control-Flow Analysis that approximates the interproce- dural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, our Analysis computes for each expression an abstract control stack, effectively approximating where func- tion calls return across optimized tail calls. The Analysis is sys- tematically calculated by abstract interpretation of the stack-based CaEK abstract machine of Flanagan et al. using a series of Galois connections. Abstract interpretation provides a unifying setting in which we 1) prove the Analysis equivalent to the composition of a continuation-passing style (CPS) transformation followed by an abstract interpretation of a stack-less CPS machine, and 2) extract an equivalent constraint-based formulation, thereby providing a ratio- nal reconstruction of a constraint-based Control-Flow Analysis from abstract interpretation principles.

  • ICFP - Control-Flow Analysis of function calls and returns by abstract interpretation
    Proceedings of the 14th ACM SIGPLAN international conference on Functional programming - ICFP '09, 2009
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    We derive a Control-Flow Analysis that approximates the interprocedural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, our Analysis computes for each expression an abstract control stack, effectively approximating where function calls return across optimized tail calls. The Analysis is systematically calculated by abstract interpretation of the stack-based CaEK abstract machine of Flanagan et al. using a series of Galois connections. Abstract interpretation provides a unifying setting in which we 1) prove the Analysis equivalent to the composition of a continuation-passing style (CPS) transformation followed by an abstract interpretation of a stack-less CPS machine, and 2) extract an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based Control-Flow Analysis from abstract interpretation principles.

  • Modular Control-Flow Analysis with rank 2 intersection types
    Mathematical Structures in Computer Science, 2003
    Co-Authors: Anindya Banerjee, Thomas Jensen
    Abstract:

    We show how the principal typing property of the rank 2 intersection type system enables the specification of a modular and polyvariant Control-Flow Analysis.

Nevin Heintze - One of the best experts on this subject based on the ideXlab platform.

  • TACS - Design and Correctness of Program Transformations Based on Control-Flow Analysis
    Lecture Notes in Computer Science, 2001
    Co-Authors: Anindya Banerjee, Nevin Heintze, Jon G. Riecke
    Abstract:

    We show how Control-Flow-based program transformations in functional languages can be proven correct. The method relies upon "defunctionalization," a mapping from a higher-order language to a firstorder language. We first show that defunctionalization is correct; using this proof and common semantic techniques, we then show how two program transformations - flow-based inlining and lightweight defunctionalization - can be proven correct.

  • PLDI - Linear-time subtransitive control flow Analysis
    Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation - PLDI '97, 1997
    Co-Authors: Nevin Heintze, David Mcallester
    Abstract:

    We present a linear-time algorithm for bounded-type programs that builds a directed graph whose transitive closure gives exactly the results of the standard (cubic-time) Control-Flow Analysis (CFA) algorithm. Our algorithm can be used to list all functions calls from all call sites in (optimal) quadratic time. More importantly, it can be used to give linear-time algorithms for CFA-consuming applications such as:b effects Analysis: find the side-effecting expressions in a program.b k-limited CFA: for each call-site, list the functions if there are only a few of them (l k) and otherwise output "many".b called-once Analysis: identify all functions called from only one call-site.

  • SAS - Control-Flow Analysis and Type Systems
    Static Analysis, 1995
    Co-Authors: Nevin Heintze
    Abstract:

    We establish a series of equivalences between type systems and Control-Flow analyses. Specifically, we take four type systems from the literature (involving simple types, subtypes and recursion) and conservatively extend them to reason about Control-Flow information. Similarly, we take four standard Control-Flow systems and conservatively extend them to reason about type consistency. Our main result is that we can match up the resulting type and Control-Flow systems such that we obtain pairs of equivalent systems, where the equivalence is with respect to both type and Control-Flow information. In essence, type systems and Control-Flow Analysis can be viewed as complementary approaches for addressing questions of type consistency and Control-Flow.

Jan Midtgaard - One of the best experts on this subject based on the ideXlab platform.

  • Control-Flow Analysis of function calls and returns by abstract interpretation
    Information and Computation, 2012
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    Abstract interpretation techniques are used to derive a Control-Flow Analysis for a simple higher-order functional language. The Analysis approximates the interprocedural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. The Analysis is systematically derived by abstract interpretation of a stack-based abstract machine using a series of Galois connections. We prove that the Analysis is equivalent to an Analysis obtained by first transforming the program into continuation-passing style and then performing control flow Analysis of the transfored program. We then show how the Analysis induces an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based CFA from abstract interpretation principles.

  • Control-Flow Analysis of function calls and returns by abstract interpretation
    Information and Computation, 2012
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    Abstract interpretation techniques are used to derive a Control-Flow Analysis for a simple higher-order functional language. The Analysis approximates the interprocedural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, the Analysis computes for each expression an abstract call-stack, effectively approximating where function calls return. The Analysis is systematically derived by abstract interpretation of the stack-based C"aEK abstract machine of Flanagan et al. using a series of Galois connections. We prove that the Analysis is equivalent to an Analysis obtained by first transforming the program into continuation-passing style and then performing control flow Analysis of the transformed program. We then show how the Analysis induces an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based CFA from abstract interpretation principles.

  • Control-Flow Analysis of function call and returns by abstract interpretation
    2009
    Co-Authors: Jan Midtgaard, Thomas Jensen
    Abstract:

    We derive a Control-Flow Analysis that approximates the interproce- dural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, our Analysis computes for each expression an abstract control stack, effectively approximating where func- tion calls return across optimized tail calls. The Analysis is sys- tematically calculated by abstract interpretation of the stack-based CaEK abstract machine of Flanagan et al. using a series of Galois connections. Abstract interpretation provides a unifying setting in which we 1) prove the Analysis equivalent to the composition of a continuation-passing style (CPS) transformation followed by an abstract interpretation of a stack-less CPS machine, and 2) extract an equivalent constraint-based formulation, thereby providing a ratio- nal reconstruction of a constraint-based Control-Flow Analysis from abstract interpretation principles.

  • Control-Flow Analysis of Function Calls and Returns by Abstract Interpretation
    2009
    Co-Authors: Jan Midtgaard, Thomas P. Jensen
    Abstract:

    We derive a Control-Flow Analysis that approximates the interprocedural Control-Flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, our Analysis computes for each expression an abstract control stack, effectively approximating where function calls return across optimized tail calls. The Analysis is systematically calculated by abstract interpretation of the stack-based CaEK abstract machine of Flanagan et al. using a series of Galois connections. Abstract interpretation provides a unifying setting in which we 1) prove the Analysis equivalent to the composition of a continuation-passing style (CPS) transformation followed by an abstract interpretation of a stack-less CPS machine, and 2) extract an equivalent constraint-based Analysis formulation, thereby providing a rational reconstruction of a constraint-based Control-Flow Analysis from abstract interpretation principles.

  • Subcubic Control Flow Analysis Algorithms
    2009
    Co-Authors: Jan Midtgaard, Jan Midtgaard, David Horn
    Abstract:

    We give the first direct subcubic algorithm for performing control flow Analysis of higher-order functional programs. Despite the long held belief that inclusion-based flow Analysis could not surpass the “cubic bottleneck,” we apply known set compression techniques to obtain an algorithm that runs in time O(n/ log n) on a unit cost random-access memory model machine. Moreover, we refine the initial flow Analysis into two more precise analyses incorporating notions of reachability. We give subcubic algorithms for these more precise analyses and relate them to an existing Analysis from the literature. 1 History and Motivation Control flow Analysis (CFA) is a fundamental static Analysis of higher-order programming languages and forms the basis of a range of other analyses. It determines for each call site of a program a set of functions which may be applied when the program is run. Over a decade ago, Heintze and McAllester [1997b] proved deciding these problems to be at least as hard as 2NPDA, the class of problems decided by two-way nondeterministic push-down automata, and argued this provided evidence the “cubic bottleneck” of flow Analysis could not be overcome. This and several other papers [Neal, 1989, Heintze and McAllester, 1997b,c, Melski and Reps, 2000, McAllester, 2002] state that the cubic algorithm for 2NPDA has not been improved since its formulation by Aho et al. [1968] — an oversight in the history of events; Rytter [1985] improved the cubic bound by a logarithmic factor. Since then, Rytter’s technique has been used in various contexts: in diameter verification, in boolean matrix multiplication, and for the all pairs shortest paths problem [Basch et al., 1995, Zwick, 2006, Chan, 2007] as well as for reachability in recursive state machines [Chaudhuri, 2008], and for maximum node-weighted k-clique [Vassilevska, 2009] to name but a few. In particular, Chaudhuri [2008] recently used Rytter’s techniques to formulate a subcubic algorithm for the related problem of context-free language (CFL) reachability. Perhaps unbeknownst to most, indirectly this constitutes the first subcubic CFA algorithm when combined with a reduction due to Melski and Reps [2000]. In this paper, we recall Rytter’s improvement, investigate the implications, and formulate a simpler, direct subcubic control flow Analysis algorithm. Using the initial Analysis as an offset we formulate two refined, increasingly precise analyses incorporating reachability, both of which are also implementable in subcubic time. Finally we relate all three analyses and prove the final refinement equivalent to a set-based Analysis with reachability due to Heintze and McAllester [1997a], thereby giving the first subcubic algorithm thereof.