APIs are typically flat structures, i.e. sets of service/method signatures specifying the expected service parameters and the kind of results one should expect in return. However, correct API usage also requires the individual services to be invoked in a specific order. Despite its importance, the latter information is either often omitted, or stated informally via textual descriptions. Behavioural Types are a suite of technologies that formalise of this information, elevating flat API descriptions to a graph structure of services. This permits automated analyses for correct API compositions so as to provide guarantees such as service compliance, deadlock freedom, dynamic adaptation in the presence of failure, load balancing etc. The proposed project aims to bring the existing prototype tools based on these technologies to mainstream programming languages and development frameworks used in industry.
This project is funded by the EU HORIZON 2020, MSCA RISE, ID 778233.
Application Programming Interfaces are the building blocks of Component-Based Software. They are tools which are independent of the context they may be found in, allowing for varying implementations without affecting each other.
The use of API's can positively affect a company's economy, namely through their exchange between providers and consumers. For example, Google provides Google Maps, which travel or booking companies can use in their applications instead of building a new mapping system from scratch.
Static analysis refers to the checking of code before runtime. This would normally involve checking the syntax for any coding flaws or malicious code. On the other hand, a dynamic approach would require analysis of the program during its execution in real time.
Behavioural type theory incorporates notions related to communication protocols, contracts, and interfaces. Their significance is recognised world-wide, with international co-ordination having an important role.