Interactive distributed software ranging from multi-user collaborative apps (e.g., Google Docs) to software for real-time organizations (e.g., Uber apps) typically relies on centralized data storage and callback-driven interactions to enable collaboration and liveness. Centralized data is deficient in terms of offline availability and privacy; callback-driven interaction is infamous for turning designs to hell. REScala, a library-based extension to Scala addresses these issues by building upon functional reactive programming abstractions and enriching them with multi-version concurrency control (MVCC), failure-recovery, and conflict-free replication semantics. The declarative data-flow programming model enables not only interactivity and real-time liveness without the callback hell, but also automated handling of intricate aspects of distributed decentralized software such as concurrency control and fault-tolerance with strong “out-of-the-box” consistency guarantees. In the lecture, we will motivate the need for better programming abstractions for interactive distributed applications, introduce REScala’s programming abstractions, and argue for their effectiveness.
Mira Mezini is professor of computer science at Technische Universität Darmstadt, Germany. Together with her students and collaborators, she has made significant contributions in the areas of programming language design and implementation, program analysis, and recommender systems for software engineering. She is (co)author of over 150 scientific publications, most of them in high-quality programming languages and software engineering conferences and journals. Mira is (has been) member of editorial boards and steering committees of several journals and conferences, such as JOT, TAOSD, AOSD, ECOOP, ESEC. She has served as the General Chair of AOSD 2005, and as the PC chair of AOSD 2008, ECOOP 2011, and ESEC/FSE 2013. She has received several awards, most notably an Advanced Grant of the European Research Council.
I am a Professor of Computer Science at the Technical University of Darmstadt, Germany.
My research focuses on software development paradigms and tools.
On the paradigms side, I develop programming languages to enable the visions of “software as a service (SaaS)” and “software product-lines” by providing large-scale module concepts with built-in support for adaptability and extensibility.
On the tools side, I work on intelligent software-development environments that guide developers to increase the development productivity and the software quality. Such environment leverage web-based resources to automatically generate and recommend established programming rules and patterns; they also enable architects to explicitly specify such patterns to be enforced during development.
I have (co)authored over 100 scientific publications in renowned publication venues in software engineering and programming languages. I regularly serve on steering committees, program committees, and editorial boards of top tier conferences and journals in software engineering and programming languages.