The primary goal of this project is to tackle two major shortcomings currently present in the API economy:
(i) the lack of rigour in documentation practices of APIs and
(ii) the lack of support for provably correct methodologies in the round-trip engineering of APIs.
We advocate behavioural APIs with precise descriptions of their behaviour to validate component-based applications. Behavioural interfaces will enable more effective Software Development Life-Cycles (SDLCs) for the API economy. Traditional approaches to software development do not cope well with the development of open, scalable communication-centric systems. In particular,
- software is traditionally built in a top-down fashion, from requirements and specifications to code;
- current bottom-up approaches are very limited and not linked to the documentation of software;
- the continuous evolution of APIs makes the adoption of round-trip software engineering a requirement for SDLCs as opposed to more traditional top-down approaches;
- developing team(s) assume context boundaries for subsystems which create duplication of work or impose conflicting requirements.
We envisage behavioural specifications as lightweight yet effective instruments. Such specifications precisely and (semi-)automatically document components and characterise their behaviour. Behavioural interfaces facilitate several software engineering activities such as component upgrades, their dynamic composition, the evaluation of their compatibility, etc. This, in turn, requires support for developing “open” protocols. Bottom-up approaches allow different teams to develop parts of systems independently to make components available to other projects. Moreover, bottom-up approaches allow the handling of legacy code.
BehAPI enables the definition of techniques and tools for designing, testing, and deploying APIs and API-based software while reducing the time-to-market of software production. It extends existing prototypes developed in academia, and integrates them with industrial platforms and languages. The consortium tackles the following challenges:
- How to formally document the behaviour of existing API, extending existing descriptions which only specify parameter type signature.
- How to identify the often “hidden” communication at different layers of abstraction in order to attain scalability.
- How to ensure a smooth integration of third-party APIs with the system/app being developed.
- How to cope with upgrades while minimising disruptions to running (live) systems.
BehAPI supports developers by easing the API documentation process. It considers automata, types, DSLs, and graphs, to enrich interfaces with behavioural information used as verifiable and lightweight documentation. More concretely, it
- provides models and tools for the analysis, construction, and validation of API-based software.
- integrates said models together, provide algorithms and tools based on them, and embed them within existing industrial development frameworks and SDLCs.
- enhances testing for APIs and provide methodologies and tools for supporting traceability among the different artefacts.
- extends industry-strength programming languages with primitives for programming b-APIs.
- defines specification and verification techniques for (non-)functional properties, resilience, and dependability.
Conclusions:
The project reached all of its 10 milestones and produced all of the 17 deliverables. It contributed
- 44 open-access publications,
- 27 open-source tools,
- a project website,
- 2 summer schools and 1 boot camp,
- 2 industrial case studies,
- 23 tutorials and exercises,
- numerous participations at inters-ectorial fora.