Project

Back to overview

SHADE: a Self HeAling DEsign methodology

English title SHADE: a Self HeAling DEsign methodology
Applicant Pezzè Mauro
Number 138006
Funding scheme Project funding (Div. I-III)
Research institution Istituto del Software (SI) Facoltà di scienze informatiche
Institution of higher education Università della Svizzera italiana - USI
Main discipline Information Technology
Start/End 01.11.2011 - 31.08.2015
Approved amount 207'513.00
Show all

Keywords (4)

Software engineering; Autonomic computing; Self-adaptive; Self-healing

Lay Summary (English)

Lead
Lay summary
The goal of this project is to formulate a method to design and develop self-healing software systems.  We research fundamental design principles to build software systems capable of automatically detecting failures, diagnosing and repairing the corresponding faults, or otherwise sustaining their functionality in the presence of faults.
We propose to develop a general and principled design method by generalizing and harmonizing current self-healing techniques and systems, and we plan to support the use of such specifications to implement concrete self-healing procedures through a runtime infrastructure.
The overarching idea behind this project is that a software system can be self-healing to the extent that it somehow possesses some redundancy that can be exploited at runtime to prevent a failure, or to recover from a failure, or perhaps even to diagnose and fix the
fault that causes the failure.  
We propose to develop an infrastructure capable of implementing recovery procedures, finding and performing alternative actions, and ultimately realizing the self-healing capabilities of a software system.
Direct link to Lay Summary Last update: 21.02.2013

Responsible applicant and co-applicants

Employees

Name Institute

Publications

Publication
Automatic Workarounds: Exploiting the Intrinsic Redundancy of Web Applications
Carzaniga Antonio, Gorla Alessandra, Perino Nicolò, Pezzè Mauro (2015), Automatic Workarounds: Exploiting the Intrinsic Redundancy of Web Applications, in ACM Transactions on Software Engineering and Methodologies, 24(3), 16-16.
Intrinsic Software Redundancy for Self-healing Software Systems and Automated Oracle generation
Carzaniga Antonio, Goffi Alberto, Gorla Alessandra, Mattavelli Andrea, Perino Nicolò, Pezzè Mauro, Tonella Paolo (2015), Intrinsic Software Redundancy for Self-healing Software Systems and Automated Oracle generation, in Software Engineering and Management, GermanyGI, Dresden, Germany.
Introduction to the Special Issue on ISSTA 2013
HArman Mark and Pezzè Mauro (ed.) (2015), Introduction to the Special Issue on ISSTA 2013, AMC, New York.
Measuring Software Redundancy
Carzaniga Antonio, Mattavelli Andrea, Pezzè Mauro (2015), Measuring Software Redundancy, in Proceedings of the 37th International Conference on Software Engineering, IEEE, Piscataway, NJ, USA.
Synthesis of Equivalent Method Calls in Guava
Mattavelli Andrea, Goffi Alberto, Gorla Alessandra (2015), Synthesis of Equivalent Method Calls in Guava, in Proceedings of the 7th Symposium on Search-Based Software Engineering (SSBSE ’15), Springer, Germany.
Cross-checking Oracles from Intrinsic Software Redundancy
Carzaniga Antonio, Goffi Alberto, Gorla Alessandra, Mattavelli Andrea, Pezzè Mauro (2014), Cross-checking Oracles from Intrinsic Software Redundancy, in Proceedings of the 36th International Conference on Software Engineering, ACM, New York, NY, USA.
Introduction to the Special Issue International Conference on Software Engineering
New York NY USA (ed.) (2014), Introduction to the Special Issue International Conference on Software Engineering, ACM, New York.
Search-Based Synthesis of Equivalent Method Sequences
Goffi Alberto, Gorla Alessandra, Mattavelli Andrea, Pezzè Mauro, Tonella Paolo (2014), Search-Based Synthesis of Equivalent Method Sequences, in Proceedings of the 22nd International Symposium on the Foundations of Software Engineering , ACM, New York, NY, USA.
Understanding the Redundancy of Software Systems
Mattavelli Andrea (2014), Understanding the Redundancy of Software Systems, in Proceedings of the 36th International Conference on Software Engineering, ACM, New York, NY, USA.
International Symposium on Software Testing and Analysis, ISSTA 2013, July 15-20, 2013, Lugano, Switzerland
Pezzè Mauro (ed.) (2013), International Symposium on Software Testing and Analysis, ISSTA 2013, July 15-20, 2013, Lugano, Switzerland, ACM, New York.
34th International Conference on Software Engineering, ICSE 2012, June 2-9, 2012, Zurich, Switzerland
Glinz Martin (ed.) (2012), 34th International Conference on Software Engineering, ICSE 2012, June 2-9, 2012, Zurich, Switzerland, IEEE, New York.
A self-healing technique for Java applications
Carzaniga Antonio, Gorla Alessandra, Mattavelli Andrea, Perino Nicolò (2012), A self-healing technique for Java applications, in 34nd ACM/IEEE International Conference on Software Engineering, Zurich, SwitzerlandIEEE Press, Piscataway, NJ, USA.
From off-Line to continuous on-line maintenance
Pezzè Mauro (2012), From off-Line to continuous on-line maintenance, IEEE, New york.
Self-Repairing Programs (Dagstuhl Seminar 11062)
Pezzè Mauro, Rinard Martin C., Weimer Westley, Zeller Andreas (2011), Self-Repairing Programs (Dagstuhl Seminar 11062), Dagstuhl Reports, Dagstuhl.
Automatic Recovery from Runtime Failures
Carzaniga Antonio, Gorla Alessandra, Mattavelli Andrea, Perino Nicolò, Pezzè Mauro, Automatic Recovery from Runtime Failures, in 35th International Conference on Software Engineering, San Francisco, California, USAIEEE Press, Piscataway, NJ, USA.

Collaboration

Group / person Country
Types of collaboration
Università di Milano Bicocca Italy (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Exchange of personnel
Universität des Saarlandes Germany (Europe)
- in-depth/constructive exchanges on approaches, methods or results
- Publication
- Exchange of personnel

Scientific events

Active participation

Title Type of contribution Title of article or contribution Date Place Persons involved
10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering Talk given at a conference Synthesis of Equivalent Method Calls in Guava 01.09.2015 Bergamo, Italy Mattavelli Andrea; Pezzè Mauro; Carzaniga Antonio;
37th International Conference on Software Engineering Talk given at a conference Measuring Software Redundancy 18.05.2015 Firenze, Italy Carzaniga Antonio; Pezzè Mauro; Mattavelli Andrea;
Multiconference on Software Engineering and Software Management Talk given at a conference Intrinsic Software Redundancy for Self-healing Software Systems and Automated Oracle generation 23.03.2015 Dresda, Germany Mattavelli Andrea;
The ISSTA 2015 Program Committee Workshop Talk given at a conference Software redundancy, self healing systems and testing oracles 09.02.2015 Eugene, United States of America Pezzè Mauro;
ACM SIGSOFT Symposium on Foundations of Software Engineering Talk given at a conference Search-Based Synthesis of Equivalent Method Sequences 17.11.2014 Hong Kong, Hongkong Mattavelli Andrea; Carzaniga Antonio; Pezzè Mauro;
6th International Symposium on Search-Based Software Engineering Talk given at a conference Intrinsic Software Redundancy: Applications and Challenges 25.08.2014 Fortaleza, Brazil Pezzè Mauro;
International Symposium on Software Testing and Analysis Talk given at a conference Link: exploiting the web of data to generate test inputs. 21.07.2014 San Josè, United States of America Pezzè Mauro;
36th International Conference on Software Engineering Talk given at a conference Cross-checking Oracles from Intrinsic Software Redundancy 19.05.2014 Hyderabad, India Pezzè Mauro; Mattavelli Andrea; Carzaniga Antonio;
29th CREST open workshop on software redundancy Individual talk Automatically generated oracles 11.11.2013 London, Great Britain and Northern Ireland Mattavelli Andrea;
2013 International Symposium on Software Testing and Analysis Individual talk General chair 22.07.2013 Lugano, Switzerland Mattavelli Andrea; Pezzè Mauro; Carzaniga Antonio;
13th International Conference on Quality Software Talk given at a conference Kenote 15.07.2013 Nanjing, China Pezzè Mauro;
35th International Conference on Software Engineering Talk given at a conference Automatic Recovery from Runtime Failures 20.05.2013 San Francisco, United States of America Carzaniga Antonio; Mattavelli Andrea; Pezzè Mauro;
ICSM'12: International Conference on Software Maintanance Talk given at a conference From off-Line to continuous on-line maintenance 23.09.2012 Riva del Garda, Italy, Italy Pezzè Mauro;
Laser summer school Talk given at a conference Software Testing and Analysis 01.09.2012 Elba, Italy, Italy Pezzè Mauro;
ICSE'12: 34th International Conference on Software Engineering Individual talk Welcome from the chairs 04.06.2012 Zurich, Switzerland, Switzerland Pezzè Mauro;
The 20th CREST Open Workshop: The Oracle Problem for Automated Software Testing Talk given at a conference Automatic generation of efficient oracles 21.05.2012 London, UK, Great Britain and Northern Ireland Pezzè Mauro;
Mysore Park Workshop on The Future of Debugging Talk given at a conference automatic debugging 28.02.2012 Mysore, India, India Pezzè Mauro;


Associated projects

Number Title Start Funding scheme
124918 WASH: WorkArounds for Self-Healing 01.04.2009 Project funding (Div. I-III)
146607 ReSpec: Characterizing and Using the Intrinsic Redundancy of Software 01.05.2013 Project funding (Div. I-III)

Abstract

This project aims to define a new approach to design and develop self-healing enabled software systems. The approach will provide first class design elements to build software systems that can automatically detect failures, and diagnose and repair the corresponding faults or bugs.While the current research on self-healing systems and, more generally, on self-managed and autonomic systems investigate specific self-healing and self-managed mechanisms to address particular classes of faults and problems, this project focuses on the definition of a general set of design principles and methods, and an enabling infrastructure. Current research in self-healing and autonomic systems gives evidence of the possibility of augmenting software systems with self-healing mechanisms, and provides important enabling data for this project. Many advances in software design and verification in the last decades, like for example structured programming in the seventies and object oriented design in the eighties, sprang from embedding best-practice principles, like locality, divide and conquer, encapsulation and information hiding, into design methodologies supported by enabling infrastructures expressed as programming language construct and virtual machine runtime support. Similarly, this project aims to move one step forward towards a general methodology for designing self-healing systems by generalizing current approaches for designing self-healing systems into general principles, embedding the principles into design methodologies, and defining supporting infrastructures.This project focuses on design principles that will be the foundation of future infrastructure and methods. Design principles capture the essence of the design approach and are essential to the new methodology. A full set of well-defined and motivated principles underlying a self-healing design methodology will be the main results of this project that will start the investigation from some initial ideas that include: flexibility in input and rigorous conformance in output, documented input flexibility, management interface testing and probing interface, documented reconfiguration or evading and recovery actions, documented stateful performance and resource-usage model, documented properties of the component itself. The design infrastructure is equivalent to the JVM for Java programs, and provides the runtime required to enact self-healing-enabling mechanisms. A preliminary architecture and prototype of a design infrastructure as well as an initial set of self-healing-enabling mechanisms will be also an important result of this project, and will enable to definition of a full scale design methodology. We will start from a set of ideas that we derived from our investigation of problems and state of art ad-hoc mechanisms and that includes transactional memory to support the restoring of a coherent state after revealing a failure or an aborted attempt to apply a recovery action, runtime and preemptive analysis to collect data about the program execution that can support failure analysis and fault diagnosis either continuously during the program execution or on demand as a response to particular failing or recovery conditions. Like object oriented design principles and runtime mechanisms call for a proper methodology to design well-formed object oriented programs, similarly, design principles and runtime mechanisms for self-healing systems call for a proper methodology to design well-formed self-healing systems.In a nutshell, this project aims to address the following challenges: (1) identify the information and create a suitable exchange format to integrate self-healing techniques that work at different phases of the self-healing cycle, (2) design approaches to identify the techniques that best integrate at different phases to address a system failure while avoiding unexpected interferences among self-healing techniques, (3) improve individual self-healing techniques by providing underlying technologies that broaden the scope of their applicability or that enhance the effectiveness of one or several techniques, (4) define new techniques to address open problems in the self-healing cycle, (5) move techniques and approaches at the infrastructure level to create a general framework for designing self-healing systems and enabling reusability of approaches across application domains.
-