Our research is dedicated to developing new technologies that help to construct high-quality software in a productive way. Part of our research is in programming language design and implementation. One key theme underlying our current work is aspect-oriented and component-based software development. The goal is to support developers in clearly expressing the design structure of the systems they build and to enable software construction as an assembly of modular (reusable) services. Another thread of our research focuses on intelligent programming environments that provide means to manage and explore the software space to enable the static analysis of a variety of software properties on the fly including design and coding styles, and for better supporting software comprehension and reengineering

[more…]

Synopsis

Cloud computing is changing our perception of computing: The Internet is becoming both the computer and the software:

  • Vast data centers and computing power are available via the Internet (infrastructure as a service)
  • Software is available via the Internet as a service, often in a multi-tenant mode (software as a service)

Building on the promise of unlimited processing/storage power, today’s applications process big amounts of data scattered over the cloud and react to events happening across the cloud. Software services must be both standard components to pay off for their provider and highly configurable and customizable to serve the competitive needs of multiple tenants. Developing such applications is challenging using current programming technology. First, existing abstractions are laid out to process individual data/events. Making the complexity of applications processing big data/events manageable requires abstractions to intentionally express high-level correlations between data/events, freeing the programmer from the task of tracking the data and keeping tabs on relevant events across a cloud. Second, existing abstractions fail to reconcile software reuse and extensibility at the level of large-scale software services.

PACE will deliver first-class linguistic abstractions for expressing sophisticated correlations between data/events to be used and composed as primitives to express high-level functionality. Armed with them, programmers will be relieved from micromanaging data/events and can turn their attention to what the cloud has to offer. Applications become easier to understand, maintain, evolve and more amenable to automated reasoning and sophisticated optimizations. PACE will also deliver language concepts for large-scale modularity, extensibility, and adaptability for capturing highly polymorphic software services.

Synopsis (pdf)


Projects

EScala: EScala is an extension of the Scala programming language with support for events as attributes of objects. The support for events in EScala, combine the ideas of event-driven and aspect-oriented programming. Events are natural abstractions for describing interactive behavior, and the interfaces of objects.
[more…]

REScala: REScala is a reactive language which integrates concepts from event-based and functional-reactive programming into the object-oriented
world. REScala supports the development of reactive applications by fostering a functional and declarative style which complements the advantages of object-oriented design.

[more…]

JEScala: Advanced concurrency abstractions overcome the drawbacks of low-level techniques such as locks and monitors. However, the coordination logic involved in complex coordination schemas is fragmented into several pieces. JEScala captures coordination schemas in a more expressive and modular way by integrating an advanced event system with join abstractions.
[more…]

IQL: Some computations are embarrassingly incrementalizable, i.e., the potential for speed-ups is immediately obvious, but finding a correct incremental maintenance algorithm is considerable effort. IQL allows formulating queries that are automatically translated into an incremental algorithm. IQL is a domain specific query language that is embedded in Scala and inspired by SQL. The SQL-style queries allow a declarative specification of the incremental computations.
[more…]

Distributed RP: Recent research on reactive languages successfully introduces time-changing values and other ad-hoc programming abstractions. However, those approaches are limited to local settings, but most applications are distributed. We propose distributed reactive programming to move reactive languages to the distributed setting and as a promising concept for middleware and distributed systems design.
[more…]

Publications

  • Guido Salvaneschi, Joscha Drechsler, and Mira Mezini. Towards distributed reactive programming. In Rocco Nicola and Christine Julien, editors, Coordination Models and Languages, volume 7890 of Lecture Notes in Computer Science, pages 226–235. Springer Berlin Heidelberg, 2013. [preprint]

  • Guido Salvaneschi and Mira Mezini. Reactive behavior in object-oriented applications: An analysis and a research roadmap. In Proceedings of the 12th Annual International Conference on Aspect-oriented Software Development, AOSD ’13, pages 37–48, New York, NY, USA, 2013. ACM. [preprint]

  • Sebastian Erdweg and Felix Rieger. A framework for extensible languages. In Proceedings of the 12th International Conference on Generative Programming: Concepts &; Experiences, GPCE ’13, pages 3–12, New York, NY, USA, 2013. ACM. [preprint]

  • Marko Martin, Mira Mezini, and Sebastian Erdweg. Template constructors for reusable object initialization. In Proceedings of the 12th International Conference on Generative Programming: Concepts & Experiences, GPCE ’13, pages 43–52, New York, NY, USA, 2013. ACM. [preprint]

  • Florian Lorenzen and Sebastian Erdweg. Modular and automated typesoundness verification for language extensions. In Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming, ICFP ’13, pages 331–342, New York, NY, USA, 2013. ACM. [preprint]

  • Mohamed Aly, Anis Charfi, Sebastian Erdweg, and Mira Mezini. Xpoints: Extension interfaces for multilayered applications. In Proceedings of the 2013 17th IEEE International Enterprise Distributed Object Computing Conference, EDOC ’13, pages 237–246, Washington, DC, USA, 2013. IEEE Computer Society. [preprint]

  • Paolo G. Giarrusso, Klaus Ostermann, Michael Eichberg, Ralf Mitschke, Tillmann Rendel, and Christian Kästner. Reify your collection queries for modularity and speed! In Proceedings of the 12th Annual International Conference on Aspect-oriented Software Development, AOSD ’13, pages 1–12, New York, NY, USA, 2013. ACM. [preprint]

  • Tom Dinkelaker, Michael Eichberg, and Mira Mezini. Incremental concrete syntax for embedded languages with support for separate compilation. Sci. Comput. Program., 78(6):615–632, June 2013. [preprint]

  • Ralf Mitschke, Sebastian Erdweg, Mirko Köhler, Mira Mezini, and Guido Salvaneschi. i3QL: Language-integrated live data views. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA ’14, pages 417–432, New York, NY, USA, 2014. ACM. [preprint]

  • Joscha Drechsler, Guido Salvaneschi, Ragnar Mogk, and Mira Mezini. Distributed RESCala: An update algorithm for distributed reactive programming. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA ’14, pages 361–376, New York, NY, USA, 2014. ACM. [preprint]

  • Guido Salvaneschi, Sven Amann, Sebastian Proksch, and Mira Mezini. An empirical study on program comprehension with reactive programming. In Proceedings of the ACM SIGSOFT 22th International Symposium on the Foundations of Software Engineering, FSE ’14, 2014. [preprint]

  • Alessandro Margara and Guido Salvaneschi. We have a DREAM: Distributed reactive programming with consistency guarantees. In Proceedings of the 8th ACM International Conference on Distributed Event-Based Systems, DEBS ’14, pages 142–153, New York, NY, USA, 2014. ACM. [preprint]

  • Jurgen M. Van Ham, Guido Salvaneschi, Mira Mezini, and Jacques Noyé. Jescala: Modular coordination with declarative events and joins. In Proceedings of the 13th International Conference on Modularity, MODULARITY ’14, pages 205–216, New York, NY, USA, 2014. ACM. [preprint]

  • Guido Salvaneschi, Gerold Hintz, and Mira Mezini. RESCala: Bridging between object-oriented and functional style in reactive applications. In Proceedings of the 13th International Conference on Modularity, MODULARITY ’14, pages 25–36, New York, NY, USA, 2014. ACM. [preprint]

  • Guido Salvaneschi, Patrick Eugster, and Mira Mezini. Programming with implicit flows. Software, IEEE, 31(5):52–59, Sept 2014. [preprint]

  • Sebastian Erdweg, Vlad Vergu, Mira Mezini, and Eelco Visser. Modular specification and dynamic enforcement of syntactic language constraints when generating code. In Proceedings of the 13th International Conference on Modularity, MODULARITY ’14, pages 241–252, New York, NY, USA, 2014. ACM. [preprint]

  • Manuel Weiel, Ingo Maier, Sebastian Erdweg, Michael Eichberg, and Mira Mezini. Towards virtual traits in scala. In Proceedings of the Fifth Annual Scala Workshop, SCALA ’14, pages 67–75, New York, NY, USA, 2014. ACM.3 [preprint]

  • Guido Salvaneschi, Alessandro Margara, and Giordano Tamburrelli. Reactive programming: A walkthrough. In Proceedings of the 37th International Conference on Software Engineering - Volume 2, ICSE ’15, pages 953–954, Piscataway, NJ, USA, 2015. IEEE Press. [preprint]

  • Ben Hermann, Michael Reif, Michael Eichberg, and Mira Mezini. Getting to know you: Towards a capability model for Java. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2015, pages 758–769, New York, NY, USA, 2015. ACM. [preprint]

  • Alper Ortac, Martin Monperrus, and Mira Mezini. Abmash: mashing up legacy web applications by automated imitation of human actions. Softw., Pract. Exper., 45(5):581–612, 2015. [preprint]

  • Steven Arzt, Sarah Nadi, Karim Ali, Eric Bodden, Sebastian Erdweg, and Mira Mezini. Towards secure integration of cryptographic software. In Proceedings of the SIGPLAN Symposium on New Ideas in Programming and Reflections on Software at SPLASH, ONWARD! ’15, 2015. [preprint]

  • Sylvia Grewe, Sebastian Erdweg, Pascal Wittmann, and Mira Mezini. Type systems for the masses: Deriving soundness proofs and efficient checkers. In Proceedings of Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (ONWARD). [preprint]

  • Sebastian Erdweg, Oliver Bračevac, Edlira Kuci, Matthias Krebs, and Mira Mezini. A co-contextual formulation of type rules and its application to incremental type checking. In OOPSLA, 2015. to appear. [preprint]

  • Sebastian Erdweg, Moritz Lichter, and Manuel Weiel. A sound and optimal incremental build system with dynamic dependencies. In OOPSLA, 2015. to appear. [preprint]

  • Edlira Kuci, Sebastian Erdweg, and Mira Mezini. Toward incremental type checking for Java. In OOPSLA Poster, 2015. to appear. [preprint]

  • Ragnar Mogk. Reactive Interfaces: Combining Events and Expressing Signals. In Workshop on Reactive and Event-based Languages & Systems at SPLASH 15, Pittsburgh, USA, Oct 2015. [preprint]

  • Oliver Bračevac. Temporal correlation patterns – intersecting joins, streams, events and reactive programming. In Workshop on Reactive and Event-based Languages & Systems at SPLASH 15, Pittsburgh, USA, Oct 2015. [preprint]

  • Guido Salvaneschi, and Mira Mezini. Towards Reactive Programming for Object-Oriented Applications. In Transactions on Aspect-Oriented Software Development XI. [preprint]

  • Yizhou Zhang, Matthew C. Loring, Guido Salvaneschi, Barbara Liskov, and Andrew C. Myers. Lightweight, flexible object-oriented generics. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation - PLDI 2015. [preprint]

  • Guido Salvaneschi and Mira Mezini. Debugging for reactive programming. In Proceedings of the 38th International Conference on Software Engineering - ICSE '16. [preprint]

  • Andi Bejleri, Mira Mezini, and Patrick Eugster. Cooperative decoupled processes: the e-calculus and linearity. In Proceedings of the 15th International Conference on Modularity - MODULARITY 2016.

  • Oliver Bračevac , Sebastian Erdweg , Guido Salvaneschi , Mira Mezini. CPL: a core language for cloud computing. In Proceedings of the 15th International Conference on Modularity - MODULARITY 2016. [preprint]

  • Sylvia Grewe, Sebastian Erdweg, and Mira Mezini. Using Vampire in Soundness Proofs of Type Systems. In Proceedings of the 1st and 2nd Vampire Workshops. [preprint]