Redundancy is the presence of different elements with the same functionality. In software, redundancy is useful (and used) in many ways, for example for fault tolerance and reliability engineering, and in self-adaptive and self-checking programs. However, despite the many uses, we still do not know how to measure software redundancy to support a proper and effective design. If, for instance, the goal is to improve reliability, one might want to measure the redundancy of a solution to then estimate the reliability gained with that solution. Or one might compare alternative solutions to choose the one that expresses more redundancy and therefore, presumably, more reliability. We first formalize a notion of redundancy whereby two code fragments are considered redundant when they achieve the same functionality with different executions. On the basis of this abstract and general notion, we then develop a concrete method to obtain a meaningful quantitative measure of software redundancy. The results we obtain are very positive: we show, through an extensive experimental analysis, that it is possible to distinguish code that is only minimally different, from truly redundant code, and that it is even possible to distinguish lowlevel code redundancy from high-level algorithmic redundancy. We also show that the measurement is significant and useful for the designer, as it can help predict the effectiveness of techniques that exploit redundancy.

Carzaniga, A., Mattavelli, A., Pezze', M. (2015). Measuring software redundancy. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (pp.156-166). IEEE Computer Society [10.1109/ICSE.2015.37].

Measuring software redundancy

PEZZE', MAURO
2015

Abstract

Redundancy is the presence of different elements with the same functionality. In software, redundancy is useful (and used) in many ways, for example for fault tolerance and reliability engineering, and in self-adaptive and self-checking programs. However, despite the many uses, we still do not know how to measure software redundancy to support a proper and effective design. If, for instance, the goal is to improve reliability, one might want to measure the redundancy of a solution to then estimate the reliability gained with that solution. Or one might compare alternative solutions to choose the one that expresses more redundancy and therefore, presumably, more reliability. We first formalize a notion of redundancy whereby two code fragments are considered redundant when they achieve the same functionality with different executions. On the basis of this abstract and general notion, we then develop a concrete method to obtain a meaningful quantitative measure of software redundancy. The results we obtain are very positive: we show, through an extensive experimental analysis, that it is possible to distinguish code that is only minimally different, from truly redundant code, and that it is even possible to distinguish lowlevel code redundancy from high-level algorithmic redundancy. We also show that the measurement is significant and useful for the designer, as it can help predict the effectiveness of techniques that exploit redundancy.
paper
software engineering, software redundancy, measure
English
IEEE/ACM International Conference on Software Engineering, ICSE 2015 16 - 24 May
2015
2015 IEEE/ACM 37th IEEE International Conference on Software Engineering
9781479919345
2015
1
156
166
7194570
reserved
Carzaniga, A., Mattavelli, A., Pezze', M. (2015). Measuring software redundancy. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (pp.156-166). IEEE Computer Society [10.1109/ICSE.2015.37].
File in questo prodotto:
File Dimensione Formato  
07194570.pdf

Solo gestori archivio

Tipologia di allegato: Publisher’s Version (Version of Record, VoR)
Dimensione 711.38 kB
Formato Adobe PDF
711.38 kB Adobe PDF   Visualizza/Apri   Richiedi una copia

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10281/172078
Citazioni
  • Scopus 22
  • ???jsp.display-item.citation.isi??? 15
Social impact