Project

Back to overview

FAN: Foundations of dynamic program ANalysis

Applicant Binder Walter
Number 136225
Funding scheme Sinergia
Research institution Software Institute Facoltà di scienze informa Universit`a della Svizzera italiana
Institution of higher education Università della Svizzera italiana - USI
Main discipline Information Technology
Start/End 01.04.2012 - 30.09.2015
Approved amount 868'056.00
Show all

Keywords (5)

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

Lay Summary (English)

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.
Direct link to Lay Summary Last update: 21.02.2013

Responsible applicant and co-applicants

Employees

Publications

Publication
Accurate Profiling in the Presence of Dynamic Compilation
Zheng Yudi, Bulej Lubomír, Binder Walter (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
Sun Haiyang, Zheng Yudi, Bulej Lubomír, Binder Walter, Kell Stephen (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
Marek Lukáš, Zheng Yudi, Ansaloni Danilo, Bulej Lubomír, Sarimbekov Aibek, Binder Walter, Tůma Petr (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
Della Toffola Luca, Pradel Michael, Gross Thomas (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
Mastrangelo Luis, Ponzanelli Luca, Mocci Andrea, Lanza Michele, Matthias Hauswirth, Nystrom Nathaniel (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
Zheng Yudi, Sun Haiyang, Bulej Lubomír, Tůma Petr, Binder Walter (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
Sarimbekov Aibek, Zheng Yudi, Ansaloni Danilo, Bulej Lubomír, Marek Lukáš, Binder Walter, Tůma Petr, Qi Zhengwei (2014), Dynamic Program Analysis – Reconciling Developer Productivity and Tool Performance, in Science of Computer Programming, 95(3), 344-358.
JNIF: Java Native Instrumentation Framework
Mastrangelo Luis, Hauswirth Matthias (2014), JNIF: Java Native Instrumentation Framework, in PPPJ'14, Krakow, Poland.
JP2: Call-site aware calling context profiling for the Java Virtual Machine
Sarimbekov Aibek, Sewe Andreas, Binder Walter, Moret Philippe, Mezini Mira (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
Libič Peter, Bulej Lubomír, Horký Vojtěch, Tůma Petr (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
Podzimek Andrej, Chen Lydia Y., Bulej Lubomír, Binder Walter, Tůma Petr (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
Sarimbekov Aibek, Kell Stephen, Bulej Lubomír, Sewe Andreas, Zheng Yudi, Ansaloni Danilo, Binder Walter (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
Xin Rui, Qi Zhengwei, Huang Shiqiu, Xiang Chengcheng, Zheng Yudi, Wang Yin, Guan Haibing (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
Sarimbekov Aibek, Podzimek Andrej, Bulej Lubomír, Zheng Yudi, Ricci Nathan, Binder Walter (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
Sarimbekov Aibek (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
Zheng Yudi, Bulej Lubomír, Zhang Cheng, Kell Stephen, Ansaloni Danilo, Binder Walter (2013), Dynamic Optimization of Bytecode Instrumentation, in Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate Languages, Indianapolis, IN, USAACM.
Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine
Ansaloni Danilo, Kell Stephen, Zheng Yudi, Bulej Lubomír, Binder Walter, Tůma Petr (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
Marek Lukáš, Zheng Yudi, Ansaloni Danilo, Bulej Lubomír, Sarimbekov Aibek, Binder Walter, Qi Zhengwei (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
Sarimbekov Aibek, Zheng Yudi, Ansaloni Danilo, Bulej Lubomír, Marek Lukáš, Binder Walter, Tůma Petr, Qi Zhengwei (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
Vitásek Matej, Binder Walter, Hauswirth Matthias (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
Marek Lukáš, Kell Stephen, Zheng Yudi, Bulej Lubomír, Binder Walter, Tůma Petr, Ansaloni Danilo, Sarimbekov Aibek, Sewe Andreas (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, USAACM.
Challenges for Refinement and Composition of Instrumentations: Position Paper
Ansaloni Danilo, Binder Walter, Bockisch Christoph, Bodden Eric, Hatun Kardelen, Marek Lukáš, Qi Zhengwei, Sarimbekov Aibek, Sewe Andreas, Tůma Petr, Zheng Yudi (2012), Challenges for Refinement and Composition of Instrumentations: Position Paper, in International Conference on Software Composition 2012, Prague, Czech Republic 7306, Springer Berlin Heidelberg, Berlin, Germany 7306.
DiSL: A Domain-specific Language for Bytecode Instrumentation
Marek Lukáš, Villazón Alex, Zheng Yudi, Ansaloni Danilo, Binder Walter, Qi Zhengwei (2012), DiSL: A Domain-specific Language for Bytecode Instrumentation, in Proceedings of the 11th International Conference on Aspect-Oriented Software Development, Potsdam, GermanyACM.
DiSL: An Extensible Language for Efficient and Comprehensive Dynamic Program Analysis
Marek Lukáš, Zheng Yudi, Ansaloni Danilo, Binder Walter, Qi Zhengwei, Tůma Petr (2012), DiSL: An Extensible Language for Efficient and Comprehensive Dynamic Program Analysis, in Proceedings of the 7th Workshop on Domain-Specific Aspect Languages, Potsdam, GermanyACM.
Java Bytecode Instrumentation Made Easy: The DiSL Framework for Dynamic Program Analysis
Marek Lukáš, Zheng Yudi, Ansaloni Danilo, Sarimbekov Aibek, Binder Walter, Tůma Petr, Qi Zhengwei (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, Springer Berlin Heidelberg, Berlin, Germany 7705.
new Scala() instance of Java: A Comparison of the Memory Behaviour of Java and Scala programs
Sewe Andreas, Mezini Mira, Sarimbekov Aibek, Ansaloni Danilo, Binder Walter, Ricci Nathan, Guyer Samuel Z. (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)
Kell Stephen, Ansaloni Danilo, Binder Walter, Marek Lukáš (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, USAACM.
Turbo DiSL: Partial Evaluation for High-Level Bytecode Instrumentation
Zheng Yudi, Ansaloni Danilo, Marek Lukáš, Sewe Andreas, Binder Walter, Villazón Alex, Tůma Petr, Qi Zhengwei, Mezini Mira (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, Springer Berlin Heidelberg, Berlin, Germany 7304.
A Programming Model and Framework for Comprehensive Dynamic Analysis on Android
Sun Haiyang, Zheng Yudi, Bulej Lubomír, Villazón Alex, Qi Zhengwei, Tůma Petr, Binder Walter, 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
Sun Haiyang, Zheng Yudi, Bulej Lubomír, Kell Stephen, Binder Walter, 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
Podzimek Andrej, Bulej Lubomír, Chen Lydia Y., Binder Walter, Tůma Petr, 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
Zheng Yudi, Kell Stephen, Bulej Lubomír, Sun Haiyang, Binder Walter, 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
Binder Walter, Zheng Yudi, Bulej Lubomir, Sun Haiyang, Tuma Petr, Comprehensive Multi-Platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines, in Software Engineering 2015, Dresden, Germany.
Polymorphic Bytecode Instrumentation
Binder Walter, Moret Philippe, Tanter Éric, Ansaloni Danilo, Polymorphic Bytecode Instrumentation, in Software: Practice and Experience, 0.
Workload Characterization of JVM Languages
Sarimbekov Aibek, Stadler Lukas, Bulej Lubomír, Sewe Andreas, Podzimek Andrej, Zheng Yudi, Binder Walter, Workload Characterization of JVM Languages, in Software: Practice and Experience.

Collaboration

Group / person Country
Types of collaboration
IBM Zurich Research Laboratory Switzerland (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
- Exchange of personnel
Software Theory and Practice Group, Shanghai Jiao Tong University China (Asia)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
- Exchange of personnel
Department of Distributed and Dependable Systems, Charles University Czech Republic (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
- Exchange of personnel
Institut für Systemsoftware, Johannes Kepler Universität Linz Austria (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
- Exchange of personnel
Disney Research Zurich (DRZ) Switzerland (Europe)
- in-depth/constructive exchanges on approaches, methods or results
Oracle Labs Austria (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
- Exchange of personnel
Department of Informatics and Mathematical Modeling, Technical University of Denmark Denmark (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
Software Technology Group, TU Darmstadt Germany (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
PLEIAD Laboratory, Computer Science Department, University of Chile Chile (South America)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Research Infrastructure
- Exchange of personnel

Scientific events

Active participation

Title Type of contribution Title of article or contribution Date Place Persons involved
OOPSLA'2015 Talk given at a conference Performance Problems You Can Fix: A Dynamic Analysis of Memoization Opportunities 28.10.2015 Pittsburgh, United States of America Gross Thomas; Della Toffola Luca;
OOPSLA'2015 Talk given at a conference Accurate Profiling in the Presence of Dynamic Compilation 25.10.2015 Pittsburgh, United States of America Zheng Yudi;
OOPSLA'2015 Talk given at a conference Use at Your Own Risk: The Java Unsafe API in the Wild 25.10.2015 Pittsburgh, United States of America Hauswirth Matthias; Mastrangelo Luis;
OOPSLA'2015 Demo Talk given at a conference Custom full-coverage dynamic program analysis for Android 25.10.2015 Pittsburgh, PA, USA, United States of America Zheng Yudi;
Virtual Machine Meetup 2015 Talk given at a conference Accurate Profiling of Dynamically Optimized Code 10.09.2015 Zurich, Switzerland Binder Walter;
Truffle'2015 Talk given at a conference Accurate Bytecode-level Profiling of Dynamically Optimized Code with Graal 07.07.2015 Prague, Czech Republic Binder Walter; Zheng Yudi;
MODULARITY 2015 Talk given at a conference A programming model and framework for comprehensive dynamic analysis on Android 16.03.2015 Fort Collins, United States of America Zheng Yudi;
CPC'15: Compilers for Parallel Computing Talk given at a conference Detecting Anomalies in Concurrent Programs based on Dynamic Control Flow Changes 07.01.2015 London, Great Britain and Northern Ireland Gross Thomas;
2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools Talk given at a conference Comprehensive Multi-platform Dynamic Program Analysis for the Java and Dalvik Virtual Machines 23.09.2014 Cracow, Poland Binder Walter; Zheng Yudi;
2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools Talk given at a conference Efficient Code Management for Dynamic Multi-tiered Compilation Systems 23.09.2014 Cracow, Poland Gross Thomas;
13th International Conference on Generative Programming: Concepts and Experiences Talk given at a conference Automatic Locality-Friendly Interface Extension of Numerical Functions 15.09.2014 Västerås, Sweden Gross Thomas;
Virtual Machine Meetup 2014 Talk given at a conference Comprehensive Multi-Platform Dynamic Program Analysis for the Java and Dalvik VM 11.09.2014 Zurich, Switzerland Zheng Yudi; Binder Walter;
ISSTA 2014 Proceedings, International Symposium on Software testing and Analysis Talk given at a conference Performance Regression Testing of Concurrent Classes 21.07.2014 San Jose, United States of America Gross Thomas;
5th ACM/SPEC International Conference on Performance Engineering Talk given at a conference On the Limits of Modeling Generational Garbage Collector Performance 22.03.2014 Dublin, Ireland Binder Walter; Bulej Lubomir;
7th ACM Workshop on Virtual Machines and Intermediate Languages Talk given at a conference Characteristics of Dynamic JVM Languages 28.10.2013 Indianapolis, Indiana, United States of America Sarimbekov Aibek;
7th ACM Workshop on Virtual Machines and Intermediate Languages Talk given at a conference Dynamic Optimization of Bytecode Instrumentation 28.10.2013 Indianapolis, Indiana, United States of America Zheng Yudi;
12th International Conference on Generative Programming: Concepts & Experiences Talk given at a conference ShadowVM: Robust and Comprehensive Dynamic Analysis for the Java Platform 27.10.2013 Indianapolis, Indiana, United States of America Zheng Yudi;
29th IEEE International Conference on Software Maintenance Talk given at a conference An Automation-assisted Empirical Study on Lock Usage for Concurrent Programs 24.09.2013 Eindhoven, Netherlands Zheng Yudi;
27th European Conference on Object-Oriented Programming Talk given at a conference Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine 01.07.2013 Montpellier, France Binder Walter; Zheng Yudi;
SYSTOR 2013 Individual talk Big Data - Little Software? 01.07.2013 Haifa, Israel Gross Thomas;
11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering Talk given at a conference A Comprehensive Toolchain for Workload Characterization Across JVM Languages 20.06.2013 Seattle, Washington, United States of America Bulej Lubomir; Zheng Yudi; Sarimbekov Aibek; Kell Stephen;
11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering Talk given at a conference ShadowData: Shadowing Heap Objects in Java 20.06.2013 Seattle, Washington, United States of America Vitásek Matej;
22nd Australian Software Engineering Conference Talk given at a conference Productive Development of Dynamic Program Analysis Tools with DiSL 07.06.2013 Melbourne, Australia Sarimbekov Aibek;
4th ACM/SPEC International Conference on Performance Engineering Talk given at a conference Introduction to Dynamic Program Analysis with DiSL 21.04.2013 Prague, Czech Republic Sarimbekov Aibek; Bulej Lubomir; Binder Walter; Zheng Yudi;
12th Annual International Conference on Aspect-Oriented Software Development Talk given at a conference 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 Talk given at a conference Java Bytecode Instrumentation - Reconciling Developer Productivity 23.03.2013 Rome, Italy Sarimbekov Aibek;
10th Asian Symposium on Programming Languages and Systems Talk given at a conference 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 Talk given at a conference The JVM is not Observable Enough (and what to do about it) 21.10.2012 Tucson, Arizona, United States of America Kell Stephen; Binder Walter;
2012 International Symposium on Memory Management Talk given at a conference 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 Talk given at a conference Challenges for Refinement and Composition of Instrumentations: Position Paper 31.05.2012 Prague, Czech Republic Zheng Yudi; Binder Walter; Sarimbekov Aibek;
50th International Conference on Objects, Models, Components, Patterns Talk given at a conference Turbo DiSL: Partial Evaluation for High-Level Bytecode Instrumentation 28.05.2012 Prague, Czech Republic Binder Walter; Zheng Yudi; Sarimbekov Aibek;


Self-organised

Title Date Place
13th International Workshop on Dynamic Analysis 26.10.2015 Pittsburgh, United States of America
13th International Conference on Modularity 22.04.2014 Lugano, Switzerland

Communication with the public

Communication Title Media Place Year
New media (web, blogs, podcasts, news feeds etc.) New Tool Accepted: DiSL SPEC Research Group Website International 2013
Print (books, brochures, leaflets) SPEC Research Group Newsletter International 2013

Awards

Title Year
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

Associated projects

Number Title Start Funding scheme
162084 ARM: Advanced High-Performance, Power-Efficient and Application-Specific Resource Management for Big Data Science 01.03.2016 Bilateral programmes
133835 The Datacenter Observatory 01.10.2012 R'EQUIP
132663 CIAO: Composite Instrumentations And Optimizations for multicores 01.10.2010 Project funding (Div. I-III)
118016 FERRARI - Framework for Efficient Rewriting and Reification Applying Runtime Instrumentation 01.10.2007 Project funding (Div. I-III)
141002 LoadOpt - Workload Characterization and Optimization for Multicore Systems 01.03.2013 Project funding (Div. 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.
-