skip to main content
Skip header Section
Principles of Program AnalysisDecember 2010
Publisher:
  • Springer Publishing Company, Incorporated
ISBN:978-3-642-08474-4
Published:03 December 2010
Pages:
452
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

Program analysis utilizes static techniques for computing reliable information about the dynamic behavior of programs. Applications include compilers (for code improvement), software validation (for detecting errors) and transformations between data representation (for solving problems such as Y2K). This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems. The presentation illustrates the extensive similarities between the approaches, helping readers to choose the best one to utilize.

Cited By

  1. ACM
    Campion M, Dalla Preda M, Giacobazzi R and Urban C (2024). Monotonicity and the Precision of Program Analysis, Proceedings of the ACM on Programming Languages, 8:POPL, (1629-1662), Online publication date: 5-Jan-2024.
  2. Buccioli L, Cristalli S, Vignati E, Nava L, Badagliacca D, Bruschi D, Lu L and Lanzi A JChainz: Automatic Detection of Deserialization Vulnerabilities for the Java Language Security and Trust Management, (136-155)
  3. ACM
    Chen B and Jiang Z (2021). A Survey of Software Log Instrumentation, ACM Computing Surveys, 54:4, (1-34), Online publication date: 31-May-2022.
  4. Alur R, Devietti J, Leija O and Singhania N (2022). Static detection of uncoalesced accesses in GPU programs, Formal Methods in System Design, 60:1, (1-32), Online publication date: 1-Feb-2022.
  5. ACM
    Fang Z, Darais D, Near J and Zhang Y Zero Knowledge Static Program Analysis Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security, (2951-2967)
  6. ACM
    Li Z, Wang J, Sun M and Lui J MirChecker: Detecting Bugs in Rust Programs via Static Analysis Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security, (2183-2196)
  7. ACM
    Song D, Lee W and Oh H Context-aware and data-driven feedback generation for programming assignments Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (328-340)
  8. ACM
    Guo Z, Wu K, Yan C and Yu X Releasing Locks As Early As You Can: Reducing Contention of Hotspots by Violating Two-Phase Locking Proceedings of the 2021 International Conference on Management of Data, (658-670)
  9. Karakochev A and Zhang G Static Analysis of Large-Scale JavaScript Front End Web Engineering, (483-489)
  10. Yu L, Luo X, Chen J, Zhou H, Zhang T, Chang H and Leung H (2021). PPChecker: Towards Accessing the Trustworthiness of Android Apps’ Privacy Policies, IEEE Transactions on Software Engineering, 47:2, (221-242), Online publication date: 1-Feb-2021.
  11. ACM
    Stiévenart Q and Madsen M (2020). Fuzzing channel-based concurrency runtimes using types and effects, Proceedings of the ACM on Programming Languages, 4:OOPSLA, (1-27), Online publication date: 13-Nov-2020.
  12. ACM
    Poesia G and Pereira F (2020). Dynamic dispatch of context-sensitive optimizations, Proceedings of the ACM on Programming Languages, 4:OOPSLA, (1-28), Online publication date: 13-Nov-2020.
  13. ACM
    Ketkar A, Tsantalis N and Dig D Understanding type changes in Java Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (629-641)
  14. ACM
    Melo L, Ribeiro R, Guimarães B and Pereira F (2020). Type Inference for C, ACM Transactions on Programming Languages and Systems, 42:3, (1-71), Online publication date: 30-Sep-2020.
  15. ACM
    Contractor M and Fluet M Type- and Control-Flow Directed Defunctionalization IFL 2020: Proceedings of the 32nd Symposium on Implementation and Application of Functional Languages, (79-92)
  16. Frank J, Aschermann C and Holz T ETHBMC Proceedings of the 29th USENIX Conference on Security Symposium, (2757-2774)
  17. ACM
    Celik Z, Fernandes E, Pauley E, Tan G and McDaniel P (2019). Program Analysis of Commodity IoT Applications for Security and Privacy, ACM Computing Surveys, 52:4, (1-30), Online publication date: 31-Jul-2020.
  18. ACM
    Ramanathan M, Clapp L, Barik R and Sridharan M Piranha Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice, (221-230)
  19. ACM
    Ramu R, Upadhyaya G, Nguyen H and Rajan H BCFA Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering, (1037-1048)
  20. ACM
    Brennan T, Saha S and Bultan T JVM fuzzing for JIT-induced side-channel detection Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering, (1011-1023)
  21. ACM
    Yu H, Chen Z, Fu X, Wang J, Su Z, Sun J, Huang C and Dong W Symbolic verification of message passing interface programs Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering, (1248-1260)
  22. ACM
    Yan J, Liu H, Pan L, Yan J, Zhang J and Liang B Multiple-entry testing of Android applications by constructing activity launching contexts Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering, (457-468)
  23. Abbas M, Omar R, El-Mahdy A and Rohou E Approximate Data Dependence Profiling Based on Abstract Interval and Congruent Domains Architecture of Computing Systems – ARCS 2020, (3-16)
  24. ACM
    Chatterjee K, Goharshady A, Goyal P, Ibsen-Jensen R and Pavlogiannis A (2019). Faster Algorithms for Dynamic Algebraic Queries in Basic RSMs with Constant Treewidth, ACM Transactions on Programming Languages and Systems, 41:4, (1-46), Online publication date: 5-Dec-2019.
  25. ACM
    Facchinetti L, Palmer Z and Smith S (2019). Higher-order Demand-driven Program Analysis, ACM Transactions on Programming Languages and Systems, 41:3, (1-53), Online publication date: 30-Sep-2019.
  26. Addazi L, Ciccozzi F and Lisper B Executable modelling for highly parallel accelerators Proceedings of the 22nd International Conference on Model Driven Engineering Languages and Systems, (318-321)
  27. ACM
    Beek M, Damiani F, Lienhardt M, Mazzanti F and Paolini L Static Analysis of Featured Transition Systems Proceedings of the 23rd International Systems and Software Product Line Conference - Volume A, (39-51)
  28. ACM
    Lou Y, Chen J, Zhang L, Hao D and Zhang L History-driven build failure fixing: how far are we? Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis, (43-54)
  29. Bento L, Boccardo D, Machado R, Pereira De Sá V and Szwarcfiter J (2019). Full Characterization of a Class of Graphs Tailored for Software Watermarking, Algorithmica, 81:7, (2899-2916), Online publication date: 1-Jul-2019.
  30. Ivanov D and Schupp S Static analysis for worst-case battery utilization Proceedings of the 7th International Workshop on Formal Methods in Software Engineering, (1-10)
  31. Rodrigues M, Guimarães B and Pereira F Generation of in-bounds inputs for arrays in memory-unsafe languages Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization, (136-148)
  32. ACM
    Andreescu O, Jensen T, Lescuyer S and Montagu B (2019). Inferring frame conditions with static correlation analysis, Proceedings of the ACM on Programming Languages, 3:POPL, (1-29), Online publication date: 2-Jan-2019.
  33. ACM
    Bodin M, Gardner P, Jensen T and Schmitt A (2019). Skeletal semantics and their interpretations, Proceedings of the ACM on Programming Languages, 3:POPL, (1-31), Online publication date: 2-Jan-2019.
  34. ACM
    Ginsbach P, Remmelg T, Steuwer M, Bodin B, Dubach C and O'Boyle M (2018). Automatic Matching of Legacy Code to Heterogeneous APIs, ACM SIGPLAN Notices, 53:2, (139-153), Online publication date: 30-Nov-2018.
  35. Ghaleb T, Alturki M, Aljasser K and Gerardo C (2018). Program comprehension through reverse‐engineered sequence diagrams, Journal of Software: Evolution and Process, 30:11, Online publication date: 14-Nov-2018.
  36. ACM
    Zhao G and Huang J DeepSim: deep learning code functional similarity Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (141-151)
  37. ACM
    Spinellis D (2018). Modern debugging, Communications of the ACM, 61:11, (124-134), Online publication date: 26-Oct-2018.
  38. ACM
    Szabó T, Bergmann G, Erdweg S and Voelter M (2018). Incrementalizing lattice-based program analyses in Datalog, Proceedings of the ACM on Programming Languages, 2:OOPSLA, (1-29), Online publication date: 24-Oct-2018.
  39. ACM
    Izumida T, Mori A and Hashimoto M Context-Sensitive Flow Graph and Projective Single Assignment Form for Resolving Context-Dependency of Binary Code Proceedings of the 13th Workshop on Programming Languages and Analysis for Security, (48-53)
  40. Mandal A, Mohan D, Jetley R, Nair S and D'Souza M A Generic Static Analysis Framework for Domain-specific Languages 2018 IEEE 23rd International Conference on Emerging Technologies and Factory Automation (ETFA), (27-34)
  41. ACM
    Eichberg M, Kübler F, Helm D, Reif M, Salvaneschi G and Mezini M Lattice based modularization of static analyses Companion Proceedings for the ISSTA/ECOOP 2018 Workshops, (113-118)
  42. ACM
    Grech N, Fourtounis G, Francalanza A and Smaragdakis Y Shooting from the heap: ultra-scalable static analysis with heap snapshots Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis, (198-208)
  43. ACM
    Wei F, Roy S, Ou X and Robby (2018). Amandroid, ACM Transactions on Privacy and Security, 21:3, (1-32), Online publication date: 2-Jun-2018.
  44. ACM
    Upadhyaya G and Rajan H Collective program analysis Proceedings of the 40th International Conference on Software Engineering, (620-631)
  45. ACM
    Yu H, Chen Z, Wang J, Su Z and Dong W Symbolic verification of regular properties Proceedings of the 40th International Conference on Software Engineering, (871-881)
  46. ACM
    Dong Y, Milanova A and Dolby J SecureMR Proceedings of the 5th Annual Symposium and Bootcamp on Hot Topics in the Science of Security, (1-13)
  47. ACM
    Ginsbach P, Remmelg T, Steuwer M, Bodin B, Dubach C and O'Boyle M Automatic Matching of Legacy Code to Heterogeneous APIs Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems, (139-153)
  48. ACM
    Burow N, Carr S, Nash J, Larsen P, Franz M, Brunthaler S and Payer M (2017). Control-Flow Integrity, ACM Computing Surveys, 50:1, (1-33), Online publication date: 31-Jan-2018.
  49. Maalej M, Paisante V, Magno Quinto Pereira F and Gonnord L (2018). Combining range and inequality information for pointer disambiguation, Science of Computer Programming, 152:C, (161-184), Online publication date: 15-Jan-2018.
  50. ACM
    Melo L, Ribeiro R, de Araújo M and Pereira F (2017). Inference of static semantics for incomplete C programs, Proceedings of the ACM on Programming Languages, 2:POPL, (1-28), Online publication date: 1-Jan-2018.
  51. Qi X and Jiang Z (2017). Precise slicing of interprocedural concurrent programs, Frontiers of Computer Science: Selected Publications from Chinese Universities, 11:6, (971-986), Online publication date: 1-Dec-2017.
  52. ACM
    Smits J and Visser E FlowSpec: declarative dataflow analysis specification Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, (221-231)
  53. ACM
    Poesia G, Guimarães B, Ferracioli F and Pereira F (2017). Static placement of computation on heterogeneous devices, Proceedings of the ACM on Programming Languages, 1:OOPSLA, (1-28), Online publication date: 12-Oct-2017.
  54. ACM
    da Silva J and Pereira F Demand-driven less-than analysis Proceedings of the 21st Brazilian Symposium on Programming Languages, (1-8)
  55. ACM
    Yu H Practical symbolic verification of regular properties Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, (1053-1055)
  56. ACM
    Totoni E, Anderson T and Shpeisman T HPAT Proceedings of the International Conference on Supercomputing, (1-10)
  57. Zhang H and Rountev A Analysis and testing of notifications in Android wear applications Proceedings of the 39th International Conference on Software Engineering, (347-357)
  58. ACM
    He W Generalized Micro-Specialization for Modern DBMS Architectures Proceedings of the 2017 ACM International Conference on Management of Data, (49-51)
  59. ACM
    Warszawski T and Bailis P ACIDRain Proceedings of the 2017 ACM International Conference on Management of Data, (5-20)
  60. ACM
    Fritz L and Hage J Cost versus precision for approximate typing for Python Proceedings of the 2017 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, (89-98)
  61. ACM
    Kanvar V and Khedker U (2016). Heap Abstractions for Static Analysis, ACM Computing Surveys, 49:2, (1-47), Online publication date: 11-Nov-2016.
  62. ACM
    Shao Y, Ott J, Jia Y, Qian Z and Mao Z The Misuse of Android Unix Domain Sockets and Security Implications Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, (80-91)
  63. ACM
    Thüm T, Ribeiro M, Schröter R, Siegmund J and Dalton F Product-line maintenance with emergent contract interfaces Proceedings of the 20th International Systems and Software Product Line Conference, (134-143)
  64. ACM
    Schrittwieser S, Katzenbeisser S, Kinder J, Merzdovnik G and Weippl E (2016). Protecting Software through Obfuscation, ACM Computing Surveys, 49:1, (1-37), Online publication date: 28-Jul-2016.
  65. ACM
    Moser M and Pichler J Documentation generation from annotated source code of scientific software Proceedings of the International Workshop on Software Engineering for Science, (12-15)
  66. ACM
    Bova S, Ganian R and Szeider S (2015). Model Checking Existential Logic on Partially Ordered Sets, ACM Transactions on Computational Logic, 17:2, (1-35), Online publication date: 28-Mar-2016.
  67. ACM
    Brandvein J and Liu Y Removing runtime overhead for optimized object queries Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, (73-84)
  68. ACM
    Avanzini M, Dal Lago U and Moser G (2015). Analysing the complexity of functional programs: higher-order meets first-order, ACM SIGPLAN Notices, 50:9, (152-164), Online publication date: 18-Dec-2015.
  69. ACM
    Autili M, Malavolta I, Perucci A and Scoccia G Perspectives on static analysis of mobile apps (invited talk) Proceedings of the 3rd International Workshop on Software Development Lifecycle for Mobile, (29-30)
  70. ACM
    Avanzini M, Dal Lago U and Moser G Analysing the complexity of functional programs: higher-order meets first-order Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, (152-164)
  71. ACM
    Jourdan J, Laporte V, Blazy S, Leroy X and Pichardie D (2015). A Formally-Verified C Static Analyzer, ACM SIGPLAN Notices, 50:1, (247-259), Online publication date: 11-May-2015.
  72. Albert E, Flores-Montoya A and Genaim S May-Happen-in-Parallel Analysis with Condition Synchronization 4th International Workshop on Foundational and Practical Aspects of Resource Analysis - Volume 9964, (1-19)
  73. ACM
    Jourdan J, Laporte V, Blazy S, Leroy X and Pichardie D A Formally-Verified C Static Analyzer Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, (247-259)
  74. ACM
    Nazaré H, Maffra I, Santos W, Barbosa L, Gonnord L and Quintão Pereira F (2014). Validation of memory accesses through symbolic analyses, ACM SIGPLAN Notices, 49:10, (791-809), Online publication date: 31-Dec-2015.
  75. ACM
    Nazaré H, Maffra I, Santos W, Barbosa L, Gonnord L and Quintão Pereira F Validation of memory accesses through symbolic analyses Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, (791-809)
  76. ACM
    Thüm T, Meinicke J, Benduhn F, Hentschel M, von Rhein A and Saake G Potential synergies of theorem proving and model checking for software product lines Proceedings of the 18th International Software Product Line Conference - Volume 1, (177-186)
  77. ACM
    Meinicke J, Thüm T, Schröter R, Benduhn F and Saake G An overview on analysis tools for software product lines Proceedings of the 18th International Software Product Line Conference: Companion Volume for Workshops, Demonstrations and Tools - Volume 2, (94-101)
  78. Veanes M, BjØrner N, Nachmanson L and Bereg S Monadic Decomposition Proceedings of the 16th International Conference on Computer Aided Verification - Volume 8559, (628-645)
  79. ACM
    Bova S, Ganian R and Szeider S Model checking existential logic on partially ordered sets Proceedings of the Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS), (1-10)
  80. ACM
    Thüm T, Apel S, Kästner C, Schaefer I and Saake G (2014). A Classification and Survey of Analysis Strategies for Software Product Lines, ACM Computing Surveys, 47:1, (1-45), Online publication date: 1-Jul-2014.
  81. ACM
    Stolee K, Elbaum S and Dobos D (2014). Solving the Search for Source Code, ACM Transactions on Software Engineering and Methodology, 23:3, (1-45), Online publication date: 1-May-2014.
  82. ACM
    Sampaio D, Souza R, Collange C and Pereira F (2014). Divergence analysis, ACM Transactions on Programming Languages and Systems, 35:4, (1-36), Online publication date: 1-Dec-2013.
  83. ACM
    Liang G, Wang Q, Xie T and Mei H Inferring project-specific bug patterns for detecting sibling bugs Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, (565-575)
  84. Chang S Laziness by need Proceedings of the 22nd European conference on Programming Languages and Systems, (81-100)
  85. ACM
    Tang X and Järvi J (2012). Summary-based data-flow analysis that understands regular composite objects and iterators, ACM SIGAPP Applied Computing Review, 12:4, (36-47), Online publication date: 1-Dec-2012.
  86. ACM
    Edwards N and Chen L An historical examination of open source releases and their vulnerabilities Proceedings of the 2012 ACM conference on Computer and communications security, (183-194)
  87. ACM
    Athavale V, Hertz S, Jetly D, Ganesan V, Krysl J and Vasudevan S Using static analysis for coverage extraction fromemulation/prototyping platforms Proceedings of the eighth IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis, (207-214)
  88. Marinescu P and Cadar C High-coverage symbolic patch testing Proceedings of the 19th international conference on Model Checking Software, (7-21)
  89. Zhang F, Nielson F and Nielson H Model checking as static analysis Proceedings of the 9th international conference on Integrated Formal Methods, (99-112)
  90. Terepeta M, Nielson H and Nielson F Recursive advice for coordination Proceedings of the 14th international conference on Coordination Models and Languages, (137-151)
  91. ACM
    Tang X and Järvi J Exploiting regularity of user-defined types to improve precision of program analyses Proceedings of the 27th Annual ACM Symposium on Applied Computing, (1743-1750)
  92. ACM
    Babić D, Martignoni L, McCamant S and Song D Statically-directed dynamic automated test generation Proceedings of the 2011 International Symposium on Software Testing and Analysis, (12-22)
  93. ACM
    Edvinsson M, Lundberg J and Löwe W Parallel points-to analysis for multi-core machines Proceedings of the 6th International Conference on High Performance and Embedded Architectures and Compilers, (45-54)
  94. ACM
    Herold S Checking architectural compliance in component-based systems Proceedings of the 2010 ACM Symposium on Applied Computing, (2244-2251)
  95. ACM
    Gulwani S and Tiwari A Combining abstract interpreters Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation, (376-386)
  96. ACM
    Gulwani S and Tiwari A (2006). Combining abstract interpreters, ACM SIGPLAN Notices, 41:6, (376-386), Online publication date: 11-Jun-2006.
Contributors
  • Technical University of Denmark
  • Technical University of Denmark
  • Imperial College London

Recommendations