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. Intervento presentato a: IEEE/ACM International Conference on Software Engineering, ICSE 2015 16 - 24 May, Florence; Italy.
|Citazione:||Carzaniga, A., Mattavelli, A., & Pezze', M. (2015). Measuring software redundancy. Intervento presentato a: IEEE/ACM International Conference on Software Engineering, ICSE 2015 16 - 24 May, Florence; Italy.|
|Carattere della pubblicazione:||Scientifica|
|Presenza di un coautore afferente ad Istituzioni straniere:||Si|
|Titolo:||Measuring software redundancy|
|Autori:||Carzaniga, A; Mattavelli, A; Pezze', M|
|Data di pubblicazione:||2015|
|Nome del convegno:||IEEE/ACM International Conference on Software Engineering, ICSE 2015 16 - 24 May|
|Serie:||PROCEEDINGS - INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING|
|Appare nelle tipologie:||02 - Intervento a convegno|