Towards a New Semantic Metric for Error Detection Based on Program State Redundancy

Towards a New Semantic Metric for Error Detection Based on Program State Redundancy

Dalila Amara Amara, Latifa Ben Arfa Rabai
Copyright: © 2021 |Pages: 23
DOI: 10.4018/IJSSOE.2021070101
OnDemand:
(Individual Articles)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

Fault tolerance techniques are generally based around a common concept that is redundancy whose measurement is required. A suite of four semantic metrics is proposed to assess program redundancy and reflect their ability to tolerate faults. Literature shows that one of these metrics, namely state redundancy, is limited to compute program redundancy only in their initial and final states and ignores their internal states. Consequently, the authors focus in this paper to overcome this shortcoming by proposing a new redundancy-based semantic metric that computes the redundancy of the different program states including internal ones. The empirical study they perform shows that the proposed metric is a measure of program redundancy in one side and is an error detection indicator in another side. Moreover, they demonstrate that it is more accurate than the basic state redundancy metric in detecting masked errors. It is useful for testers to indicate if a tested program is error-free and to pinpoint the presence of masked errors even if the final states are equal to the expected ones.
Article Preview
Top

1. Introduction

The common objective of all organizations using software systems is to improve the quality of these systems. This requires in turn the use of different approaches to improve both the software process and product.

Considering the product perspective, software quality is defined through different attributes which are generally classified into internal attributes related to the program structure i.e complexity, and external attributes related to program functionality like reliability and maintainability (Fenton and Bieman 2014).

The improvement of either internal or external quality attributes requires their measurement which provides quantitative indicators of these attributes (Lyu 1996; Fenton and Bieman 2014). The quantitative measurement of software quality characteristics is necessary required for developers, testers and users to make decisions and comparisons (Xenos 2009).

For several years, great effort has been devoted to the study of software metrics as quantitative software quality indicators. Any software project needs these metrics to measure the degree of quality achieved during its development. They are generally classified into two syntactic and semantic metrics (Etzkorn and Delugash 2000; Saini et al. 2014):

  • Syntactic metrics are those related to the syntax of the program to assess internal quality attributes like complexity and cohesion (Chidamber and Kemerer 1994),

  • Semantic metrics are related to the program functionality and reflect what the program does (Mili et al. 2014).

Based on what was mentioned in the literature, it was shown that software metrics are succeeded in measuring most of internal quality attributes which are required by developers to assess the quality of their programs (Chidamber and Kemerer 1994; Etzkorn and Delugash 2000; Marcus and Poshyvanyk 2008). Concerning the external attributes i.e reliability which reflect the user perspective, little studies are focusing on using software metrics to assess them. These studies essentially measure internal attributes and use them as predictors of external ones.

Among these metrics, Mili et al. (Mili et al. 2014) proposed a suite of semantic metrics whose objective is to reflect the program ability to tolerate faults through error detection, masking and recovery based on the assessment of these programs redundancy. This suite is very important for two basic reasons. First, it reflects the program ability to tolerate faults which is an important factor to achieve reliable systems. Second, this suite helps software testers to indicate if a tested program is error-free and to pinpoint the presence of masked errors even if the final states are equal to the expected ones. So, the use of these metrics will affect their behavior to assess and monitor program errors.

Despite the importance of this suite, it has also their shortcomings. For instance, this suite is only theoretically presented and manually computed. In our previous works, we proposed an automated way to compute the different metrics composing this suite (Amara et al. 2017; Amara et al. 2018). These studies help us to identify the key limitation of one of these metrics that is state redundancy. So, this metric measures the program redundancy only in its initial and final states and do not takes into account the variation of its internal ones. This motivates us to propose a new redundancy semantic metric that measures the average redundancy of all program states including initial, internal and final states.

Consequently, the objectives of this study are as follows:

  • First, we detail the purpose of the state redundancy metric, the way of its computing joined with an illustrative example.

  • We discuss the limitation of this metric; it computes the program redundancy from its initial and final states and neglects the variation of the internal states.

  • On this basis, we propose a new redundancy-based semantic metric to overcome this shortcoming.

  • We consider a set of java programs to validate the proposed metric as measure of the overall program redundancy in one side and as an error detection indicator in the one other one. Additionally, we aim to demonstrate in which cases the proposed metric becomes more accurate for testers in detecting errors than the basic state redundancy metric.

Complete Article List

Search this Journal:
Reset
Volume 13: 1 Issue (2024): Forthcoming, Available for Pre-Order
Volume 12: 2 Issues (2022): 1 Released, 1 Forthcoming
Volume 11: 2 Issues (2021)
Volume 10: 2 Issues (2020)
Volume 9: 2 Issues (2019)
Volume 8: 4 Issues (2018)
Volume 7: 4 Issues (2017)
Volume 6: 4 Issues (2016)
Volume 5: 4 Issues (2015)
Volume 4: 4 Issues (2014)
Volume 3: 4 Issues (2012)
Volume 2: 4 Issues (2011)
Volume 1: 4 Issues (2010)
View Complete Journal Contents Listing