Domain-specific languages; Dynamic program analysis; Debugging; Profiling; Java Virtual Machine
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.
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.
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.
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.
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.
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.
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.
Mastrangelo Luis, Hauswirth Matthias (2014), JNIF: Java Native Instrumentation Framework, in
PPPJ'14, Krakow, Poland.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Binder Walter, Moret Philippe, Tanter Éric, Ansaloni Danilo, Polymorphic Bytecode Instrumentation, in
Software: Practice and Experience, 0.
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.
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.