Community Research and Development Information Service - CORDIS


Learn Report Summary

Project ID: 646867
Funded under: H2020-EU.1.1.

Periodic Reporting for period 1 - Learn (Learning From Failing and Passing Executions At the Speed of Internet)

Reporting period: 2015-10-01 to 2017-03-31

Summary of the context and overall objectives of the project

Modern software systems must be extremely flexible and easily adaptable to different user needs and environments. Such flexibility requirements are so important that it is indeed common practice to develop applications that can be updated, modified and adapted in the field, directly by the end users.

However, this flexibility also introduces relevant quality issues. Almost all computer users have had the unpleasant experience to watch their favorite applications fail and crash frequently after an update. These problems are so common that is sufficient browsing the Web to find millions of reports about failures observed after updates and incompatibilities caused by the interaction of a newly installed component with the existing components. Even worse each of these problems affected a population of thousands of users.

The impact of problems introduced by end-users (e.g., the installation of a new plug-in) can be dramatic because end-users can easily modify applications, like developers do, but end-users have neither the knowledge nor the skill of developers, and they cannot debug and fix the problems that they unintentionally introduce. It is thus necessary to timely develop novel solutions that can increase the reliability of the moderns systems, which can be extended and adapted by end-users, with the capability to automatically address problems that are unknown at development-time. The Learn project aims to produce innovative solutions for the development of systems that can work around the problems introduced by end-users when using and modifying their applications.

The main objectives are the definition of a distributed infrastructure that enables communication between every individual instance of a same program running at different endusers’ sites, thus augmenting applications with the capability to access a large amount of information collected in-the-field from other sites; the definition of analysis techniques that can learn the characteristics of successful and failed runs by monitoring executions in the field from a number of instances running at many end-user sites; and the definition of techniques for the automatic generation and actuation of temporary fixes.

Work performed from the beginning of the project to the end of the period covered by the report and main results achieved so far

The work proceeded consistently with the workplan. We report only small differences between the planned and actual degree of development of the individual objectives. In particular, instead of developing the design for self-repairing part entirely at the beginning of the project, we realized that given the extensive diffusion of legacy non-designed for self-repair software it was more convenient and more impactful to focus on legacy systems first, while distributing along the project the work about designing systems that support self-repairing technologies. This allowed us to put additional effort in the definition of field monitoring and field testing activities, which revealed to be extremely challenging tasks.

We describe the advancement according to the technical workpackages of the project.

Design for self-repairing
We worked on the definition of a novel concept of software library designed to support the execution of repair actions directly in-the-field. We named these libraries proactive libraries, due to their ability to proactively overcome problematic situations. We have published initial results at International Symposium on Self-Adaptation and Self-Managing Systems (SEAMS) 2017 and we are further elaborating this approach. Another submission is under evaluation.

We are working on a customized version of the JADE agent-based P2P platform. Indeed JADE satisfies many basic requirements of our project. It is fully decentralized, thus suitable to operate in the end-user environment. It is agent-based, thus nodes are proactive and autonomous, as required for an environment that can execute self-repairing actions. It natively includes a range of libraries and functionalities, thus it is an effective programming platform for delivering advanced functionalities.

Right now we are also experimenting multiple state-of-the-art and custom obfuscation techniques to investigate how platforms may collect and share obfuscated data, possible compromising neither the analysis ability of the overall infrastructure nor the privacy of the users.

Monitoring and model synthesis
Since the monitoring solutions required by the project must operate within the end-user environment, we are currently studying to what extent users can recognize and tolerate overhead induced by monitoring and analysis techniques. This study produced a first publication to the International Conference on Software Engineering (ICSE), NIER track. We also studying the problem on the perspective of the definition of techniques for efficiently and non-intrusively collecting user data. Some of these ideas have been illustrated in an ICSE Doctoral Symposium paper.

In addition to monitoring, we have been also active in the definition of techniques to synthesize dynamic information as behavioural models. In the scope of the project, we worked on non-trivial learners for the generation of extended finite state machines and timed automata from execution traces. This work has been published at both the Transactions on Software Engineering (TSE) journal and the International Conference on Software Testing, Verification and Validation (ICST) conference.

Failure detection, testing and repairing
Among various options, we exploited the inferred models as failure detectors, as we already done in the past in the scope of various collaborations, including other EU projects. This activity produced a publication at ISOLA.

We have also studied the novel concept of field testing. To this end, we first investigated the characteristics of field faults producing a study that has been submitted for publication. Some of the ideas about field testing are described in a doctoral symposium paper published at the International Conference on Software Engineering (ICSE). We are now working on the technology and the approaches to perform field testing.

Although the repairing part is planned for the final part of the project, we anticipated some activities studying how lea

Progress beyond the state of the art and expected potential impact (including the socio-economic impact and the wider societal implications of the project so far)

We discuss project progresses and the socio-economic impact following the same structure used to illustrate the advances.

Design for self-repairing
While there is an extensive body of knowledge about how to design systems that can tolerate failures, there are little contributions on the design of systems that can repair themselves. Work on the definition of design techniques for the development of systems that can be self-repaired can produce important advances to the field.

In the scope of the project we elaborated the concept of proactive library, which goes exactly in this direction. This research may produce important advances on the way modern software systems are designed, resulting in systems with an advanced level of resilience to failures. Highly resilient self-repairing software systems may have a positively socio-economic impact. In particular, software systems would require less manual maintenance and would be more tolerable to mistakes made by users.

The infrastructure for collecting and exchanging data is an important technical advance. In fact, most of the platforms are not thought to operate in the end-user environment, while this is the first platform designed to operate in this context. An infrastructure with these characteristics can enable a number of important researches that exploit field data and run analyses in the field.

Monitoring and model synthesis
Monitoring and model synthesis are key enablers of techniques working in the field. Field monitoring non-intrusively captures runtime data. While model synthesis efficiently produces behavioural models that describe the (correct and failing) behaviors of the software from the captured data.

Efficiently and non-intrusively collecting data and models from the field can enable a range of approaches based on field data rather than in-house data, giving impulse to an extremely promising research area that is still at its infancy stage. The results obtained in the scope of the project advanced the knowledge of the area by determining the degree of intervention (e.g., overhead) that can be tolerated by the end-users. This is a fundamental information for designing techniques transparently working in the field.

Failure detection, testing and repairing
The project is investigating the nature of the faults that must be revealed and repaired in the field. This may significantly impact future research in software testing and analysis and motivate approaches working in the field. Indeed we identified faults that can be hardly revealed in house, but that can be more easily revealed in the field.
Follow us on: RSS Facebook Twitter YouTube Managed by the EU Publications Office Top