Projekt

Zurück zur Übersicht

FAN: Foundations of dynamic program ANalysis

Gesuchsteller/in Binder Walter
Nummer 136225
Förderungsinstrument Sinergia
Forschungseinrichtung Facoltà di scienze informatiche Università della Svizzera italiana
Hochschule Università della Svizzera italiana - USI
Hauptdisziplin Informatik
Beginn/Ende 01.04.2012 - 30.09.2015
Bewilligter Betrag 868'056.00
Alle Daten anzeigen

Keywords (5)

Domain-specific languages; Dynamic program analysis; Debugging; Profiling; Java Virtual Machine

Lay Summary (Englisch)

Lead
Lay summary
As software systems grow in complexity and execution platforms become more and more sophisticated, it becomes harder and harder for a software engineer to understand, tune, or debug programs. Existing program analysis tools offer limited support, in part because there is a big gap between the abstractions provided by tools and the abstractions employed by software engineers. In this project, we explore a new approach to developing program analysis tools with considerably less programming effort. Our research will address the question: Can we raise the abstraction level for writing dynamic analysis tools, allowing software engineers to rapidly develop custom analysis tools, impairing neither expressiveness nor tool performance?

Program analysis for object-oriented programming languages is difficult. On the one hand, the use of polymorphism, reflection, and dynamic code loading limits the applicability of static analysis in modern object-oriented programming languages. So dynamic program analysis is becoming increasingly important as it supports a wide range of software engineering tasks such as profiling, debugging, testing, program comprehension, and reverse engineering. On the other hand, dynamic program analysis is poorly supported by tools. Writing dynamic analysis tools requires in-depth expert knowledge of low-level techniques such as program instrumentation, and as a result, the process is tedious, time-consuming, and error-prone. Consequently, most software engineers do not write custom dynamic analysis tools but rely on a limited number of tools provided by third parties. Sometimes, the available analysis tools do not exactly meet the requirements of the software engineer, who may need to explore a specific feature of an application.

Aspect-oriented programming (AOP) gives the programmer a powerful toolset to modify a program, but AOP systems may incur high execution overhead and at the same time overload the user with considerable details. The principal problem is that there is big gap between the (fixed) abstractions provided by the AOP languages and the (flexible) abstractions employed during program analysis. Some of the abstractions address a level that is too low (access to variables or fields whereas a programmer wants to analyze basic blocks or call chains), or there is no appropriate abstraction altogether (e.g., when investigating the timing behavior on a multicore system).

To overcome these limitations, in this project we investigate the design and implementation of Gottardo, a novel domain-specific language (DSL) that is based on the modification mechanisms found in AOP and offers dedicated new features that are essential for the development of a wide range of efficient dynamic analysis tools. A DSL allows the user to customize analysis and offers an opportunity to restrict the collection of dynamic behavior and performance data to those parameters that are needed for a specific task. We focus on dynamic analysis for the Java Virtual Machine (JVM), because of its maturity and availability for a wide range of hardware platforms and operating systems. As many modern object-oriented programming languages such as Java, Scala, or JRuby rely on the JVM as execution platform, a wide range of applications and middleware - from application servers to applications on embedded devices - will benefit from the results of our research.

We will study how to raise the level of abstraction in the formulation of analysis tasks to significantly reduce the effort of tool development. In particular, we will investigate DSL constructs for formulating queries relating state and behavior of program executions, for validating program behavior based on abstract, formal models, for composing program behavior visualizations for program understanding, for differential performance analysis, and for analyzing the behavior of distributed applications. These high-level language constructs will provide further opportunities for automatically optimizing and parallelizing the analysis.

The goal of this research is to study how to enable developers to formulate their own dynamic analyses, using a common language that is expressive enough to cover many of the questions about the behavior and performance of modern programs, simple enough for developers to learn, and efficient enough to be useful for debugging and performance analysis. As this project will elaborate new foundations for dynamic program analysis and promises a substantial advance over the current state-of-the-art in the field, a collaborative approach to research is essential in order to leverage the complementary expertise of three Swiss research groups that have long track records in the field. Thanks to this tightly coordinated joint effort, the project promises innovations with high impact in academic research, in industrial development, and in education.
Direktlink auf Lay Summary Letzte Aktualisierung: 21.02.2013

Verantw. Gesuchsteller/in und weitere Gesuchstellende

Mitarbeitende

Publikationen

Publikation
Accurate Profiling in the Presence of Dynamic Compilation
(2015), Accurate Profiling in the Presence of Dynamic Compilation, in 30th ACM International Conference on Object Oriented Programming Systems Languages & Applications, Pittsburgh, Pennsylvania, United States.
Custom full-coverage dynamic program analysis for Android
(2015), Custom full-coverage dynamic program analysis for Android, in ACM SIGPLAN Int'l Conf. on Systems, Programming, Languages and Applications: Software for Humanity.
Introduction to Dynamic Program Analysis with DiSL
(2015), Introduction to Dynamic Program Analysis with DiSL, in Science of Computer Programming , 98(1), 100-115.
Performance Problems You Can Fix: A Dynamic Analysis of Memoization Opportunities
(2015), Performance Problems You Can Fix: A Dynamic Analysis of Memoization Opportunities, in 30th ACM International Conference on Object Oriented Programming Systems Languages & Applications, Pittsburg, Pennsylvania, United States.
Use at Your Own Risk: The Java Unsafe API in the Wild
(2015), Use at Your Own Risk: The Java Unsafe API in the Wild, in 30th ACM International Conference on Object Oriented Programming Systems Languages & Applications, Pittsburgh, Pennsylvania, United States.
Comprehensive Multi-platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines
(2014), Comprehensive Multi-platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines, in Proc. Int'l Conf. on Principles and Practices of Programming on the Java Platform, Cracow, Poland.
Dynamic Program Analysis – Reconciling Developer Productivity and Tool Performance
(2014), Dynamic Program Analysis – Reconciling Developer Productivity and Tool Performance, in Science of Computer Programming, 95(3), 344-358.
JNIF: Java Native Instrumentation Framework
(2014), JNIF: Java Native Instrumentation Framework, in PPPJ'14, Krakow, Poland.
JP2: Call-site aware calling context profiling for the Java Virtual Machine
(2014), JP2: Call-site aware calling context profiling for the Java Virtual Machine, in Science of Computer Programming , 79, 146-157.
On the Limits of Modeling Generational Garbage Collector Performance
(2014), On the Limits of Modeling Generational Garbage Collector Performance, in Proceedings of the 5th ACM/SPEC International Conference on Performance Engineering, Dublin, Ireland.
Showstopper: The Partial CPU Load Tool
(2014), Showstopper: The Partial CPU Load Tool, in Proc. 22nd Intl. Symp. on Modeling, Analysis & Simulation of Computer and Telecommunication Systems, Paris, France.
A Comprehensive Toolchain for Workload Characterization Across JVM Languages
(2013), A Comprehensive Toolchain for Workload Characterization Across JVM Languages, in Proceedings of 11th Workshop on Program Analysis for Software Tools and Engineering, Seattle, USA.
An Automation-Assisted Empirical Study on Lock Usage for Concurrent Programs
(2013), An Automation-Assisted Empirical Study on Lock Usage for Concurrent Programs, in Proceedings of the 29th IEEE International Conference on Software Maintenance, Eindhoven, The Netherlands.
Characteristics of Dynamic JVM Languages
(2013), Characteristics of Dynamic JVM Languages, in Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate languages, Indianapolis, IN, USA.
Comparison of Instrumentation Techniques for Dynamic Program Analysis on the Java Virtual Machine
(2013), Comparison of Instrumentation Techniques for Dynamic Program Analysis on the Java Virtual Machine, in Companion proceedings of the 12th International Conference on Aspect-Oriented Software Development, Fukuoka, Japan.
Dynamic Optimization of Bytecode Instrumentation
(2013), Dynamic Optimization of Bytecode Instrumentation, in Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate Languages, Indianapolis, IN, USA.
Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine
(2013), Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine, in Proceedings of the 27th European Conference on Object-Oriented Programming, Montpellier, France.
Introduction to Dynamic Program Analysis with DiSL
(2013), Introduction to Dynamic Program Analysis with DiSL, in Proceedings of 4th ACM/SPEC International Conference on Performance Engineering, Prague, Czech Republic.
Productive Development of Dynamic Program Analysis Tools with DiSL
(2013), Productive Development of Dynamic Program Analysis Tools with DiSL, in Proceedings of 22nd Australasian Software Engineering Conference, Melbourne, Australia.
ShadowData – Shadowing Heap Objects in Java
(2013), ShadowData – Shadowing Heap Objects in Java, in Proceedings of 11th Workshop on Program Analysis for Software Tools and Engineering, Seattle, USA.
ShadowVM: Robust and Comprehensive Dynamic Program Analysis for the Java Platform
(2013), ShadowVM: Robust and Comprehensive Dynamic Program Analysis for the Java Platform, in Proceedings of the 12th International Conference on Generative Programming: Concepts & Experiences, Indianapolis, IN, USA.
Challenges for Refinement and Composition of Instrumentations: Position Paper
(2012), Challenges for Refinement and Composition of Instrumentations: Position Paper, in International Conference on Software Composition 2012, Prague, Czech Republic 7306, 7306.
DiSL: A Domain-specific Language for Bytecode Instrumentation
(2012), DiSL: A Domain-specific Language for Bytecode Instrumentation, in Proceedings of the 11th International Conference on Aspect-Oriented Software Development, Potsdam, Germany.
DiSL: An Extensible Language for Efficient and Comprehensive Dynamic Program Analysis
(2012), DiSL: An Extensible Language for Efficient and Comprehensive Dynamic Program Analysis, in Proceedings of the 7th Workshop on Domain-Specific Aspect Languages, Potsdam, Germany.
Java Bytecode Instrumentation Made Easy: The DiSL Framework for Dynamic Program Analysis
(2012), Java Bytecode Instrumentation Made Easy: The DiSL Framework for Dynamic Program Analysis, in Proceedings of the 10th Asian Symposium on Programming Languages and Systems, Kyoto, Japan 7705, 7705.
new Scala() instance of Java: A Comparison of the Memory Behaviour of Java and Scala programs
(2012), new Scala() instance of Java: A Comparison of the Memory Behaviour of Java and Scala programs, in ACM SIGPLAN Notices, 47(11), 97-108.
The JVM is not observable enough (and what to do about it)
(2012), The JVM is not observable enough (and what to do about it), in Proceedings of the 6th ACM Workshop on Virtual Machines and Intermediate Languages, Tucson, AZ, USA.
Turbo DiSL: Partial Evaluation for High-Level Bytecode Instrumentation
(2012), Turbo DiSL: Partial Evaluation for High-Level Bytecode Instrumentation, in Proceedings of the 50th International Conference on Objects, Models, Components, Patterns, Prague, Czech Republic 7304, 7304.
A Programming Model and Framework for Comprehensive Dynamic Analysis on Android
, A Programming Model and Framework for Comprehensive Dynamic Analysis on Android, in Proceedings of the 14th International Conference on Modularity, Fort Collins, Colorado, USA.
Analyzing Distributed Multi-platform Java and Android Applications with ShadowVM
, Analyzing Distributed Multi-platform Java and Android Applications with ShadowVM, in 13th Asian Symposium on Programming Languages and Systems.
Analyzing the Impact of CPU Pinning and Partial CPU Loads on Performance and Energy Efficiency
, Analyzing the Impact of CPU Pinning and Partial CPU Loads on Performance and Energy Efficiency, in Proceedings of the 15th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing, Shenzhen, Guangdong, China.
Comprehensive Multi-platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines
, Comprehensive Multi-platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines, in IEEE Software.
Comprehensive Multi-Platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines
, Comprehensive Multi-Platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines, in Software Engineering 2015, Dresden, Germany.
Polymorphic Bytecode Instrumentation
, Polymorphic Bytecode Instrumentation, in Software: Practice and Experience, 0.
Workload Characterization of JVM Languages
, Workload Characterization of JVM Languages, in Software: Practice and Experience.

Zusammenarbeit

Gruppe / Person Land
Formen der Zusammenarbeit
IBM Zurich Research Laboratory Schweiz (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
- Austausch von Mitarbeitern
Software Theory and Practice Group, Shanghai Jiao Tong University China (Asien)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
- Austausch von Mitarbeitern
Department of Distributed and Dependable Systems, Charles University Tschechische Republik (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
- Austausch von Mitarbeitern
Institut für Systemsoftware, Johannes Kepler Universität Linz Oesterreich (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
- Austausch von Mitarbeitern
Disney Research Zurich (DRZ) Schweiz (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
Oracle Labs Oesterreich (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
- Austausch von Mitarbeitern
Department of Informatics and Mathematical Modeling, Technical University of Denmark Dänemark (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
Software Technology Group, TU Darmstadt Deutschland (Europa)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
PLEIAD Laboratory, Computer Science Department, University of Chile Chile (Südamerika)
- vertiefter/weiterführender Austausch von Ansätzen, Methoden oder Resultaten
- Publikation
- Forschungsinfrastrukturen
- Austausch von Mitarbeitern

Wissenschaftliche Veranstaltungen

Aktiver Beitrag

Titel Art des Beitrags Titel des Artikels oder Beitrages Datum Ort Beteiligte Personen
OOPSLA'2015 Vortrag im Rahmen einer Tagung Performance Problems You Can Fix: A Dynamic Analysis of Memoization Opportunities 28.10.2015 Pittsburgh, Vereinigte Staaten von Amerika Gross Thomas; Della Toffola Luca;
OOPSLA'2015 Vortrag im Rahmen einer Tagung Accurate Profiling in the Presence of Dynamic Compilation 25.10.2015 Pittsburgh, Vereinigte Staaten von Amerika Zheng Yudi;
OOPSLA'2015 Vortrag im Rahmen einer Tagung Use at Your Own Risk: The Java Unsafe API in the Wild 25.10.2015 Pittsburgh, Vereinigte Staaten von Amerika Hauswirth Matthias; Mastrangelo Luis;
OOPSLA'2015 Demo Vortrag im Rahmen einer Tagung Custom full-coverage dynamic program analysis for Android 25.10.2015 Pittsburgh, PA, USA, Vereinigte Staaten von Amerika Zheng Yudi;
Virtual Machine Meetup 2015 Vortrag im Rahmen einer Tagung Accurate Profiling of Dynamically Optimized Code 10.09.2015 Zurich, Schweiz Binder Walter;
Truffle'2015 Vortrag im Rahmen einer Tagung Accurate Bytecode-level Profiling of Dynamically Optimized Code with Graal 07.07.2015 Prague, Tschechische Republik Binder Walter; Zheng Yudi;
MODULARITY 2015 Vortrag im Rahmen einer Tagung A programming model and framework for comprehensive dynamic analysis on Android 16.03.2015 Fort Collins, Vereinigte Staaten von Amerika Zheng Yudi;
CPC'15: Compilers for Parallel Computing Vortrag im Rahmen einer Tagung Detecting Anomalies in Concurrent Programs based on Dynamic Control Flow Changes 07.01.2015 London, Grossbritannien und Nordirland Gross Thomas;
2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools Vortrag im Rahmen einer Tagung Comprehensive Multi-platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines 23.09.2014 Cracow, Polen Binder Walter; Zheng Yudi;
2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools Vortrag im Rahmen einer Tagung Efficient Code Management for Dynamic Multi-tiered Compilation Systems 23.09.2014 Cracow, Polen Gross Thomas;
13th International Conference on Generative Programming: Concepts and Experiences Vortrag im Rahmen einer Tagung Automatic Locality-Friendly Interface Extension of Numerical Functions 15.09.2014 Västerås, Schweden Gross Thomas;
Virtual Machine Meetup 2014 Vortrag im Rahmen einer Tagung Comprehensive Multi-Platform Dynamic Program Analysis for the Java and Dalvik VM 11.09.2014 Zurich, Schweiz Zheng Yudi; Binder Walter;
ISSTA 2014 Proceedings, International Symposium on Software testing and Analysis Vortrag im Rahmen einer Tagung Performance Regression Testing of Concurrent Classes 21.07.2014 San Jose, Vereinigte Staaten von Amerika Gross Thomas;
5th ACM/SPEC International Conference on Performance Engineering Vortrag im Rahmen einer Tagung On the Limits of Modeling Generational Garbage Collector Performance 22.03.2014 Dublin, Irland Binder Walter; Bulej Lubomir;
7th ACM Workshop on Virtual Machines and Intermediate Languages Vortrag im Rahmen einer Tagung Characteristics of Dynamic JVM Languages 28.10.2013 Indianapolis, Indiana, Vereinigte Staaten von Amerika Sarimbekov Aibek;
7th ACM Workshop on Virtual Machines and Intermediate Languages Vortrag im Rahmen einer Tagung Dynamic Optimization of Bytecode Instrumentation 28.10.2013 Indianapolis, Indiana, Vereinigte Staaten von Amerika Zheng Yudi;
12th International Conference on Generative Programming: Concepts & Experiences Vortrag im Rahmen einer Tagung ShadowVM: Robust and Comprehensive Dynamic Analysis for the Java Platform 27.10.2013 Indianapolis, Indiana, Vereinigte Staaten von Amerika Zheng Yudi;
29th IEEE International Conference on Software Maintenance Vortrag im Rahmen einer Tagung An Automation-assisted Empirical Study on Lock Usage for Concurrent Programs 24.09.2013 Eindhoven, Niederlande Zheng Yudi;
27th European Conference on Object-Oriented Programming Vortrag im Rahmen einer Tagung Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine 01.07.2013 Montpellier, Frankreich Binder Walter; Zheng Yudi;
SYSTOR 2013 Einzelvortrag Big Data - Little Software? 01.07.2013 Haifa, Israel Gross Thomas;
11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering Vortrag im Rahmen einer Tagung A Comprehensive Toolchain for Workload Characterization Across JVM Languages 20.06.2013 Seattle, Washington, Vereinigte Staaten von Amerika Bulej Lubomir; Zheng Yudi; Sarimbekov Aibek; Kell Stephen;
11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering Vortrag im Rahmen einer Tagung ShadowData: Shadowing Heap Objects in Java 20.06.2013 Seattle, Washington, Vereinigte Staaten von Amerika Vitásek Matej;
22nd Australian Software Engineering Conference Vortrag im Rahmen einer Tagung Productive Development of Dynamic Program Analysis Tools with DiSL 07.06.2013 Melbourne, Australien Sarimbekov Aibek;
4th ACM/SPEC International Conference on Performance Engineering Vortrag im Rahmen einer Tagung Introduction to Dynamic Program Analysis with DiSL 21.04.2013 Prague, Tschechische Republik Sarimbekov Aibek; Bulej Lubomir; Binder Walter; Zheng Yudi;
12th Annual International Conference on Aspect-Oriented Software Development Vortrag im Rahmen einer Tagung Comparison of Instrumentation Techniques for Dynamic Program Analysis on the Java Virtual Machine 24.03.2013 Fukuoka, Japan Sarimbekov Aibek; Binder Walter;
8th Workshop on Bytecode Semantics, Verification, Analysis and Transformation Vortrag im Rahmen einer Tagung Java Bytecode Instrumentation - Reconciling Developer Productivity 23.03.2013 Rome, Italien Sarimbekov Aibek;
10th Asian Symposium on Programming Languages and Systems Vortrag im Rahmen einer Tagung Java Bytecode Instrumentation Made Easy: The DiSL Framework for Dynamic Program Analysis 11.12.2012 Kyoto, Japan Binder Walter; Sarimbekov Aibek; Zheng Yudi;
6th ACM Workshop on Virtual Machines and Intermediate Languages Vortrag im Rahmen einer Tagung The JVM is not Observable Enough (and what to do about it) 21.10.2012 Tucson, Arizona, Vereinigte Staaten von Amerika Kell Stephen; Binder Walter;
2012 International Symposium on Memory Management Vortrag im Rahmen einer Tagung new Scala() instanceof Java: a Comparison of the Memory Behaviour of Java and Scala Programs 15.06.2012 Beijing, China Binder Walter; Sarimbekov Aibek;
11th International Conference on Software Composition Vortrag im Rahmen einer Tagung Challenges for Refinement and Composition of Instrumentations: Position Paper 31.05.2012 Prague, Tschechische Republik Zheng Yudi; Binder Walter; Sarimbekov Aibek;
50th International Conference on Objects, Models, Components, Patterns Vortrag im Rahmen einer Tagung Turbo DiSL: Partial Evaluation for High-Level Bytecode Instrumentation 28.05.2012 Prague, Tschechische Republik Binder Walter; Zheng Yudi; Sarimbekov Aibek;


Selber organisiert

Titel Datum Ort
13th International Workshop on Dynamic Analysis 26.10.2015 Pittsburgh, Vereinigte Staaten von Amerika
13th International Conference on Modularity 22.04.2014 Lugano, Schweiz

Kommunikation mit der Öffentlichkeit

Kommunikation Titel Medien Ort Jahr
Neue Medien (Web, Blogs, Podcasts, NewsFeed, usw.) New Tool Accepted: DiSL SPEC Research Group Website International 2013
Print (Buch, Brochuren, Infoblätter) SPEC Research Group Newsletter International 2013

Auszeichnungen

Titel Jahr
Best Paper Runner-Up Award, 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGRID) 2015
Distinguished Paper Award, 30th ACM/SIGPLAN International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA) 2015
Best Research Paper Award, 5th ACM/SPEC International Conference on Performance Engineering (ICPE) 2014
Third Place Award in ACM Student Research Competition 2013

Verbundene Projekte

Nummer Titel Start Förderungsinstrument
162084 ARM: Advanced High-Performance, Power-Efficient and Application-Specific Resource Management for Big Data Science 01.03.2016 Südkorea
133835 The Datacenter Observatory 01.10.2012 R'EQUIP
141002 LoadOpt - Workload Characterization and Optimization for Multicore Systems 01.03.2013 Projektförderung (Abt. I-III)
118016 FERRARI - Framework for Efficient Rewriting and Reification Applying Runtime Instrumentation 01.10.2007 Projektförderung (Abt. I-III)
132663 CIAO: Composite Instrumentations And Optimizations for multicores 01.10.2010 Projektförderung (Abt. I-III)

Abstract

As software systems grow in complexity and execution platforms become more and more sophisticated, it becomes harder and harder for a software engineer to understand, tune, or debug programs. Existing program analysis tools offer limited support, in part because there is a big gap between the abstractions provided by tools and the abstractions employed by software engineers. In this project, we explore a new approach to developing program analysis tools with considerably less programming effort. Our research will address the question: Can we raise the abstraction level for writing dynamic analysis tools, allowing software engineers to rapidly develop custom analysis tools, impairing neither expressiveness nor tool performance?Program analysis for object-oriented programming languages is difficult. On the one hand, the use of polymorphism, reflection, and dynamic code loading limits the applicability of static analysis in modern object-oriented programming languages. So dynamic program analysis is becoming increasingly important as it supports a wide range of software engineering tasks such as profiling, debugging, testing, program comprehension, and reverse engineering. On the other hand, dynamic program analysis is poorly supported by tools. Writing dynamic analysis tools requires in-depth expert knowledge of low-level techniques such as program instrumentation, and as a result, the process is tedious, time-consuming, and error-prone. Consequently, most software engineers do not write custom dynamic analysis tools but rely on a limited number of tools provided by third parties. Sometimes, the available analysis tools do not exactly meet the requirements of the software engineer, who may need to explore a specific feature of an application.Aspect-oriented programming (AOP) gives the programmer a powerful toolset to modify a program, but AOP systems may incur high execution overhead and at the same time overload the user with considerable details. The principal problem is that there is big gap between the (fixed) abstractions provided by the AOP languages and the (flexible) abstractions employed during program analysis. Some of the abstractions address a level that is too low (access to variables or fields whereas a programmer wants to analyze basic blocks or call chains), or there is no appropriate abstraction altogether (e.g., when investigating the timing behavior on a multicore system). To overcome these limitations, in this project we investigate the design and implementation of Gottardo, a novel domain-specific language (DSL) that is based on the modification mechanisms found in AOP and offers dedicated new features that are essential for the development of a wide range of efficient dynamic analysis tools. A DSL allows the user to customize analysis and offers an opportunity to restrict the collection of dynamic behavior and performance data to those parameters that are needed for a specific task. We focus on dynamic analysis for the Java Virtual Machine (JVM), because of its maturity and availability for a wide range of hardware platforms and operating systems. As many modern object-oriented programming languages such as Java, Scala, or JRuby rely on the JVM as execution platform, a wide range of applications and middleware - from application servers to applications on embedded devices - will benefit from the results of our research.We will study how to raise the level of abstraction in the formulation of analysis tasks to significantly reduce the effort of tool development. In particular, we will investigate DSL constructs for formulating queries relating state and behavior of program executions, for validating program behavior based on abstract, formal models, for composing program behavior visualizations for program understanding, for differential performance analysis, and for analyzing the behavior of distributed applications. These high-level language constructs will provide further opportunities for automatically optimizing and parallelizing the analysis.The goal of this research is to study how to enable developers to formulate their own dynamic analyses, using a common language that is expressive enough to cover many of the questions about the behavior and performance of modern programs, simple enough for developers to learn, and efficient enough to be useful for debugging and performance analysis. As this project will elaborate new foundations for dynamic program analysis and promises a substantial advance over the current state-of-the-art in the field, a collaborative approach to research is essential in order to leverage the complementary expertise of three Swiss research groups that have long track records in the field. Thanks to this tightly coordinated joint effort, the project promises innovations with high impact in academic research, in industrial development, and in education.
-