Accord UDL-CSC École Doctorale Info-Maths

Similar documents
arxiv: v1 [cs.pl] 30 Jul 2015

Opportunities for a Truffle-based Golo Interpreter

COVER SHEET. This is the author version of article published as:

Idioms for Interaction: Functional Types, Process Types and Distributed Systems

Moscova 07. Jean-Jacques Lévy. April 24, INRIA Rocquencourt

A Fair Extension of (Soft) Concurrent Constraint Languages

Moscova. Jean-Jacques Lévy. March 23, INRIA Paris Rocquencourt

Business Process Management Seminar 2007/ Oktober 2007

Programming language design and analysis

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics

Memory optimisation in a first-order dataflow synchronous language

MASTER OF SCIENCE (M.S.) MAJOR IN COMPUTER SCIENCE (NON-THESIS OPTION)

A Messaging-Based Integration Architecture for Print Production Workflow Systems

Service Integration - A Web of Things Perspective W3C Workshop on Data and Services Integration

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY

Control Flow Analysis with SAT Solvers

Extracting the Range of cps from Affine Typing

Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming

A Brief History of Distributed Programming: RPC. YOW Brisbane 2016

CS Advanced Compiler Design Course Project

Loosely Coupled Actor Systems

Session Types and Multiparty Session Types. Nobuko Yoshida Imperial College London

Decentralization of BPEL Using Various Processes.

Towards Automated Process Modeling based on BPMN Diagram Composition

Using Component-oriented Process Models for Multi-Metamodel Applications

City, University of London Institutional Repository

OASIS: Architecture, Model and Management of Policy

* Inter-Cloud Research: Vision

Integration of UML and Petri Net for the Process Modeling and Analysis in Workflow Applications

Stavros Nikolaou. 413 Gates Hall URL: Ithaca, NY, 14853, USA Date of Birth: December, 1987

ait: WORST-CASE EXECUTION TIME PREDICTION BY STATIC PROGRAM ANALYSIS

FedX: A Federation Layer for Distributed Query Processing on Linked Open Data

THE SELECTION OF THE ARCHITECTURE OF ELECTRONIC SERVICE CONSIDERING THE PROCESS FLOW

Using Everest Platform for Teaching Parallel and Distributed Computing

Synthesizing Communication Middleware from Explicit Connectors in Component Based Distributed Architectures

COMPLEX SYSTEMS. Today. Complex Systems. Kinds of Systems. Embedded Systems. Software Engineering. Lectures 20: Engineering Complex Systems

RATCOP: Relational Analysis Tool for Concurrent Programs

Vortex Whitepaper. Simplifying Real-time Information Integration in Industrial Internet of Things (IIoT) Control Systems

A Typed Calculus Supporting Shallow Embeddings of Abstract Machines

Learning, teaching, playing with compiler construction - A web based host platform for target virtual machines

Static analysis and testing of executable DSL specification

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters

C-ANIS: a Contextual, Automatic and Dynamic Service-Oriented Integration Framework

Rule Formats for Nominal Modal Transition Systems

Concurrent Programming Constructs and First-Class Logic Engines

Preventing Defects. SWE 795, Spring 2017 Software Engineering Environments

ED STIC - Proposition de Sujets de Thèse. pour la campagne d'allocation de thèses 2017

An Algebraic Method for Analysing Control Flow of BPMN Models

On Modelled Flexibility and Service Selection Optimisation

Experiences with OWL-S, Directions for Service Composition:

New research on Key Technologies of unstructured data cloud storage

A Practical Approach for a Workflow Management System

Use of the LLVM framework for the MSIL code generation

Optimising Multicore JVMs. Khaled Alnowaiser

Building Distributed Access Control System Using Service-Oriented Programming Model

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy

Test-Driven Development Metodology Proposal for Web Service Choreographies

Scribble, Runtime Verification and Multiparty Session Types

A Formal Model for Web-Service Composition

Petri-net-based Workflow Management Software

UniLFS: A Unifying Logical Framework for Service Modeling and Contracting

Distributed Deadlock Detection for. Distributed Process Networks

Issues on Decentralized Consistency Checking of Multi-lateral Collaborations

This is the author s version of a work that was submitted/accepted for publication in the following source:

Héméra Inria Large Scale Initiative

Enterprise System Integration. Lecture 10: Implementing Process-Centric Composite Services in BPEL

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

Generation of Interactive Questionnaires Using YAWL-based Workflow Models

Nomair A. Naeem. Personal Data. Education. Teaching Experience. Course Instructor/Sessional

Functional Programming for Business Process Modeling

A Tool for Supporting Object-Aware Processes

Business Process Modeling. Version 25/10/2012

Revisiting Join Site Selection in Distributed Database Systems

BPMN to BPEL case study solution in VIATRA2

SoberIT Software Business and Engineering Institute. SoberIT Software Business and Engineering Institute. Contents

CPEG 852 Advanced Topics in Computing Systems The Dataflow Model of Computation

Calculating BPEL Test Coverage through Instrumentation

DLC: Compiling a Concurrent System Formal Specification to a Distributed Implementation

The Grid-Occam Project

Overview. Background: Efforts Prior to EduPar 11. EduPar 11 Outcome (I): Required Core Modules. EduPar 11 Outcome (II): Advanced/Elective Modules

The Fox Project: Advanced Development of Systems Software

Crisis and paradox in distributed-systems development

Distributed Systems COMP 212. Lecture 1 Othon Michail

Distributed Systems COMP 212. Lecture 1 Othon Michail

Limel: Local Computation with Linear Coordination

Making Business Process Implementations Flexible and Robust: Error Handling in the AristaFlow BPM Suite

Towards a Reconfigurable HPC Component Model

Real-Time Automatic Detection of Stuck Transactions

Middleware Support for BPEL Workflows in the AO4BPEL Engine

The Gardens Point Service Language: Overview and Implementation

Introduction. Software Trends. Topics for Discussion. Grid Technology. GridForce:

Models and Languages for Service-Oriented and Cloud Computing

1 From Distributed Objects to Distributed Components

ACTA UNIVERSITATIS APULENSIS No 18/2009

From Object-Oriented Programming to Service-Oriented Computing: How to Improve Interoperability by Preserving Subtyping

Next-Generation SOA Infrastructure. An Oracle White Paper May 2007

International Journal of Computer Science Trends and Technology (IJCST) Volume 3 Issue 4, Jul-Aug 2015

Dreams: a framework for distributed synchronous coordination

Research and Implementation of Event Driven Multi Process Collaboration Interaction Platform Xiang LI * and Shuai ZHAO

Transcription:

Accord UDL-CSC École Doctorale Info-Maths Titre du sujet de recherche : Programming language abstractions for the Internet of Things Laboratory / laboratoire : CITI-INRIA, Université de Lyon, INSA de Lyon http://www.citi-lab.fr/ Research team / Equipe de recherche : This is a joint work between DynaMid and INRIA UrbaNet. http://dynamid.citi-lab.fr/ http://www.inria.fr/en/teams/urbanet Supervisors / Directeurs de thèse : Pr Fabrice Valois (HDR), Université de Lyon, INSA-Lyon, CITI-INRIA fabrice.valois@insa-lyon.fr Dr Julien Ponge, Université de Lyon, INSA-Lyon, CITI-INRIA julien.ponge@insa-lyon.fr Lab Language / Langue de travail : English Abstract / Présentation du sujet : The so-called Internet of Things marks the convergence of small connected devices (e.g., personal devices, body devices, wireless sensors) and the larger set of more traditional distributed applications as accessed over standard Internet protocols. The software is eating the world motto 1 is no lie as more and more of devices communicate with cloud-based services. Still, developing and integrating software remains largely a crafting exercise with mainstream programming languages, while research languages tend to be too impractical. The architecture of modern applications is converging towards distributed services that expose standard-based interfaces. A service tends to fulfill a single functional purpose (e.g., storing some data / logs, providing authentication, and so on). In 1 See http://www.wsj.com/articles/sb10001424053111903480904576512250915629460. 1

this setting an application shifts from a paradigm where it is made by assembling component libraries to a paradigm where many (distributed) processes form the application. Communications between such services are typically made using the general-purpose HTTP protocol, but more specific ones can be used when needed (MQTT for IoT devices, ZigBee in some wireless sensor networks, etc). Given that distributed services rely on the integration with other services through highly interoperable protocols, it is very wise to take advantage of many programming languages rather than follow a one size fits it all approach. Interestingly, the characteristics of distributed services deployed on cloud infrastructures are quite similar to those of (sensor) network gateways. Among many problems, these applications need to cope with concurrency due to network requests, and they have to bind data from/to network protocols. While middleware can be used to, say, automatically expose a HTTP service interface and perform data binding, or to provide concurrent programming abstractions, this remains orthogonal to programming language operational semantics and type system. The history of programming languages is paved with abstractions being moved from library support to first-class citizen language constructs: memory management (e.g., Java, Self), threads (e.g., Java), actor models (e.g., Erlang, Scala), communicating sequential processes over co-routines (e.g., Go), etc. Still, even with a modern programming language the development of distributed services involves lots of boilerplate code (e.g., types for network messages data-binding) and there is little to no static checks beyond types, especially with respect to the correctness of concurrent code. As an example, the Go programming language only provides runtime race condition detection. In practice, one can observe that the code of a typical application based on distributed services involves a significant share of message processing and network operations. The literature lacks successful languages that were both practical and suitable for these kinds of networked applications. The Scala programming language is a prime example of a language effort that initially tried to address the need for the development of XML services with the support of XML semi-structured data elements in the language. Still, Scala does not enforce a concurrency model, it does not provided network programming helpers, and it merely focused its efforts on a sophisticated type system. Funnel (Functional Nets) was a predecessor of Scala with first-class support for concurrency primitives based on join-calculus. Still, it proved impractical to use in real-world applications, just like other attempts of join-calculus in the ML / OCaml families. An alternative to composing distributed applications using programming languages is to rely on some orchestration language such as BPEL and workflow execution engines. Behavioral protocols can be extracted from BPEL processes, which is useful for checking correctness of distributed systems compositions. Still, the limited expressiveness of workflow languages combined with the complex tooling to develop, test and execute them limit their wider adoption in favor of more traditional programming languages. 2

The main scientific goal of this PhD thesis is to investigate which abstractions shall be part of the next-generation programming languages in the age of the Internet of Things. We are especially interested, but not limited to, the useful abstractions to cope with: concurrency, asynchronous programming, data processing, software dynamics, message passing, network membership discovery and distributed algorithms (e.g., consensus and transactions). Given the distributed / concurrent nature of the applications that we target, we are also interested in providing compilationtime verifications beyond classical type checking (e.g., deadlock detection, timebound guarantees). We also want the research outcomes to be practical. The anticipated challenges are as follows. 1. Establish an exhaustive state of the art on programming language and middleware abstractions. Consider which ones shall be part of a programming language, and which ones shall be relegated to library support, based on an extensive study of distributed services requirements. 2. Propose a programming language. Formalize and prove the soundness and correctness of its type system and operational semantics. Classify the ranges of static checks that can be performed at compilation time. Devise which remaining checks shall be done at runtime. Discuss their algorithms. 3. Propose an implementation on top of the Java Virtual Machine or the LLVM code generation infrastructure with state of the art performance. Develop a rigorous micro-benchmarks tests suite, and revisit some suitable larger benchmarks from The Computer Language Benchmarks Game 2. 4. Validate the language usefulness for developing distributed applications, both in cloud and wireless sensor gateway settings. Provide metrics to evaluate programs against other languages. Perform a field study on practitioners to assess the language practicability, suitability and learning curve. References : [1] Baptiste Maingret, Frédéric Le Mouël, Julien Ponge, Nicolas Stouls, Jian Cao and Yannick Loiseau. Towards a Decoupled Context-Oriented Programming Language for the Internet of Things. In Proceedings of the 7th International Workshop on Context-Oriented Programming (COP 2015) in conjunction with the European Conference on Object-Oriented Programming (ECOOP 2015). Prague, Czech Republic, July 2015. [2] Julien Ponge, Frédéric Le Mouël, and Nicolas Stouls. 2013. Golo, a dynamic, light and efficient language for post-invokedynamic JVM. In Proceedings of the 2013 International Conference on Principles and Practices of Programming on the 2 See http://benchmarksgame.alioth.debian.org/. 3

Java Platform: Virtual Machines, Languages, and Tools (PPPJ 13). ACM, New York, NY, USA, 153-158. [3] Julien Ponge, Computer Science & Engineering, Faculty of Engineering, UNSW. (2009). Model based analysis of time-aware web services interactions. PhD Thesis. University of New South Wales. [4] Martin Odersky. 2000. Functional Nets. In Proceedings of the 9th European Symposium on Programming Languages and Systems (ESOP 00), Gert Smolka (Ed.). Springer-Verlag, London, UK, UK, 1-25. [5] Martin Odersky and Matthias Zenger. 2005. Scalable component abstractions. In Proceedings of the 20th annual ACM SIGPLAN conference on Objectoriented programming, systems, languages, and applications (OOPSLA 05). ACM, New York, NY, USA, 41-57. [6] Burak Emir, Sebastian Maneth, and Martin Odersky. 2006. Scalable programming abstractions for XML services. In Dependable Systems, Jürg Kohlas, Bertrand Meyer, and Andrü Schiper (Eds.). Springer-Verlag, Berlin, Heidelberg 103-126. [7] Rob Pike. 2012. Go at Google. In Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity (SPLASH 12). ACM, New York, NY, USA, 5-6. [8] Cédric Fournet and Georges Gonthier. 1996. The reflexive CHAM and the joincalculus. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL 96). ACM, New York, NY, USA, 372-385. [9] Cédric Fournet, Georges Gonthier, Jean-Jacques Lévy, Luc Maranget, and Didier Rémy. 1996. A Calculus of Mobile Agents. In Proceedings of the 7th International Conference on Concurrency Theory (CONCUR 96), Ugo Montanari and Vladimiro Sassone (Eds.). Springer-Verlag, London, UK, UK, 406-421. [10] Cédric Fournet, Cosimo Laneve, Luc Maranget, and Didier Rémy. 1997. Implicit Typing à la ML for the Join-Calculus. In Proceedings of the 8th International Conference on Concurrency Theory (CONCUR 97), Antoni W. Mazurkiewicz and Józef Winkowski (Eds.). Springer-Verlag, London, UK, UK, 196-212. [11] Chun Ouyang, Eric Verbeek, Wil M. P. van der Aalst, Stephan Breutel, Marlon Dumas, and Arthur H. M. ter Hofstede. 2007. Formal semantics and analysis of control flow in WS-BPEL. Sci. Comput. Program. 67, 2-3 (July 2007), 162-198. 4

[12] Chris Lattner and Vikram Adve. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO 04), Palo Alto, California, Mar. 2004. 5