Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Paolo G. Giarrusso is active.

Publication


Featured researches published by Paolo G. Giarrusso.


conference on object-oriented programming systems, languages, and applications | 2011

Variability-aware parsing in the presence of lexical macros and conditional compilation

Christian Kästner; Paolo G. Giarrusso; Tillmann Rendel; Sebastian Erdweg; Klaus Ostermann; Thorsten Berger

In many projects, lexical preprocessors are used to manage different variants of the project (using conditional compilation) and to define compile-time code transformations (using macros). Unfortunately, while being a simple way to implement variability, conditional compilation and lexical macros hinder automatic analysis, even though such analysis is urgently needed to combat variability-induced complexity. To analyze code with its variability, we need to parse it without preprocessing it. However, current parsing solutions use unsound heuristics, support only a subset of the language, or suffer from exponential explosion. As part of the TypeChef project, we contribute a novel variability-aware parser that can parse almost all unpreprocessed code without heuristics in practicable time. Beyond the obvious task of detecting syntax errors, our parser paves the road for further analysis, such as variability-aware type checking. We implement variability-aware parsers for Java and GNU C and demonstrate practicability by parsing the product line MobileMedia and the entire X86 architecture of the Linux kernel with 6065 variable features.


language descriptions tools and applications | 2012

Language composition untangled

Sebastian Erdweg; Paolo G. Giarrusso; Tillmann Rendel

In language-oriented programming and modeling, software developers are largely concerned with the definition of domain-specific languages (DSLs) and their composition. While various implementation techniques and frameworks exist for defining DSLs, language composition has not obtained enough attention and is not well-enough understood. In particular, there is a lack of precise terminology for describing observations about language composition in theory and in existing language-development systems. To clarify the issue, we specify five forms of language composition: language extension, language restriction, language unification, self-extension, and extension composition. We illustrate this classification by various examples and apply it to discuss the performance of different language-development systems with respect to language composition. We hope that the terminology provided by our classification will enable more precise communication on language composition.


software product lines | 2011

Scalable Prediction of Non-functional Properties in Software Product Lines

Norbert Siegmund; Marko Rosenmüller; Christian Kästner; Paolo G. Giarrusso; Sven Apel; Sergiy S. Kolesnikov

A software product line is a family of related software products, typically, generated from a set of common assets. Users can select features to derive a product that fulfills their needs. Often, users expect a product to have specific non-functional properties, such as a small footprint or a minimum response time. Because a product line can contain millions of products, it is usually not feasible to generate and measure non-functional properties for each possible product of a product line. Hence, we propose an approach to predict a products non-functional properties, based on the products feature selection. To this end, we generate and measure a small set of products, and by comparing the measurements, we approximate each features non-functional properties. By aggregating the approximations of selected features, we predict the products properties. Our technique is independent of the implementation approach and language. We show how already little domain knowledge can improve predictions and discuss trade-offs regarding accuracy and the required number of measurements. Although our approach is in general applicable for quantifiable non-functional properties, we evaluate it for the non-functional property footprint. With nine case studies, we demonstrate that our approach usually predicts the footprint with an accuracy of 98% and an accuracy of over 99% if feature interactions are known.


Information & Software Technology | 2013

Scalable prediction of non-functional properties in software product lines: Footprint and memory consumption

Norbert Siegmund; Marko Rosenmüller; Christian Kästner; Paolo G. Giarrusso; Sven Apel; Sergiy S. Kolesnikov

A software product line is a family of related software products, typically, generated from a set of common assets. Users can select features to derive a product that fulfills their needs. Often, users expect a product to have specific non-functional properties, such as a small footprint or a minimum response time. Because a product line can contain millions of products, it is usually not feasible to generate and measure non-functional properties for each possible product of a product line. Hence, we propose an approach to predict a products non-functional properties, based on the products feature selection. To this end, we generate and measure a small set of products, and by comparing the measurements, we approximate each features non-functional properties. By aggregating the approximations of selected features, we predict the products properties. Our technique is independent of the implementation approach and language. We show how already little domain knowledge can improve predictions and discuss trade-offs regarding accuracy and the required number of measurements. Although our approach is in general applicable for quantifiable non-functional properties, we evaluate it for the non-functional property footprint. With nine case studies, we demonstrate that our approach usually predicts the footprint with an accuracy of 98% and an accuracy of over 99% if feature interactions are known.


programming language design and implementation | 2014

A theory of changes for higher-order languages: incrementalizing λ-calculi by static differentiation

Yufei Cai; Paolo G. Giarrusso; Tillmann Rendel; Klaus Ostermann

If the result of an expensive computation is invalidated by a small change to the input, the old result should be updated incrementally instead of reexecuting the whole computation. We incrementalize programs through their derivative. A derivative maps changes in the programs input directly to changes in the programs output, without reexecuting the original program. We present a program transformation taking programs to their derivatives, which is fully static and automatic, supports first-class functions, and produces derivatives amenable to standard optimization. We prove the program transformation correct in Agda for a family of simply-typed λ-calculi, parameterized by base types and primitives. A precise interface specifies what is required to incrementalize the chosen primitives. We investigate performance by a case study: We implement in Scala the program transformation, a plugin and improve performance of a nontrivial program by orders of magnitude.


variability modelling of software-intensive systems | 2011

Partial preprocessing C code for variability analysis

Christian Kästner; Paolo G. Giarrusso; Klaus Ostermann

The C preprocessor is commonly used to implement variability. Given a feature selection, code fragments can be excluded from compilation with #ifdef and similar directives. However, the token-based nature of the C preprocessor makes variability implementation difficult and error-prone. Additionally, variability mechanisms are intertwined with macro definitions, macro expansion, and file inclusion. To determine whether a code fragment is compiled, the entire file must be preprocessed. We present a partial preprocessor that preprocesses file inclusion and macro expansion, but retains variability information for further analysis. We describe the mechanisms of the partial preprocessor, provide a full implementation, and present some initial experimental results. The partial preprocessor is part of a larger endeavor in the TypeChef project to check variability implementations (syntactic correctness, type correctness) in C projects such as the Linux kernel.


european conference on object-oriented programming | 2011

Revisiting information hiding: reflections on classical and nonclassical modularity

Klaus Ostermann; Paolo G. Giarrusso; Christian Kästner; Tillmann Rendel

What is modularity?Which kind of modularity should developers strive for? Despite decades of research on modularity, these basic questions have no definite answer. We submit that the common understanding of modularity, and in particular its notion of information hiding, is deeply rooted in classical logic. We analyze how classical modularity, based on classical logic, fails to address the needs of developers of large software systems, and encourage researchers to explore alternative visions of modularity, based on nonclassical logics, and henceforth called nonclassical modularity.


acm conference on systems programming languages and applications software for humanity | 2012

Reifying and optimizing collection queries for modularity

Paolo G. Giarrusso; Klaus Ostermann; Michael Eichberg; Tillmann Rendel; Christian Kästner

Conventional collection libraries do not perform automatic collection-specific optimizations. Instead, performance-critical code using collections must be hand-optimized, leading to non-modular, brittle, and redundant code. We propose SQuOpt, the Scala Query Optimizer, a deep embedding of the Scala collection library performing collection-specific optimizations automatically without external tools or compiler extensions.


acm symposium on applied computing | 2007

A protocol to preserve a code of conduct

Cristiano Longo; Paolo G. Giarrusso

To fight community abuse, we introduce in this paper a set of simple, yet powerful, trust protocols, aimed at enforcing on a P2P network a boolean Code of Conduct verifiable by the network agents themselves. Having a boolean Code of Conduct which honest agents never violate allows effective enforcing of it. A formal model for trust protocol definition and analysis is also defined, and properties of these protocols are formally defined and proved according to this model.


aspect-oriented software development | 2013

Reify your collection queries for modularity and speed

Paolo G. Giarrusso; Klaus Ostermann; Michael Eichberg; Ralf Mitschke; Tillmann Rendel; Christian Kästner

Collaboration


Dive into the Paolo G. Giarrusso's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Marko Rosenmüller

Otto-von-Guericke University Magdeburg

View shared research outputs
Top Co-Authors

Avatar

Michael Eichberg

Technische Universität Darmstadt

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Sebastian Erdweg

Delft University of Technology

View shared research outputs
Top Co-Authors

Avatar

Ralf Mitschke

Technische Universität Darmstadt

View shared research outputs
Researchain Logo
Decentralizing Knowledge